티스토리 뷰

Jenkinsfile이 없는 그래픽 CI/CD 파이프라인

편집하다

지난 튜토리얼에서 Spring Boot Project를 위한 Jenkinsfile 기반 파이프라인을 생성하는 방법을 시연했습니다. 사용자가 Jenkinsfile에 익숙해야 합니다. 그러나 Jenkinsfile은 배우기 쉬운 것이 아니며 일부 사람들은 그것에 대해 알지도 못합니다. 따라서 지난 튜토리얼과 달리 KubeSphere 콘솔을 통해 워크플로우를 시각적으로 편집하여 Jenkinsfile 없이 CI/CD 파이프라인을 생성하는 방법을 보여드리겠습니다.

목적

KubeSphere 콘솔의 그래픽 편집 패널을 사용하여 프로세스를 자동화하고 샘플 프로젝트를 Kubernetes 개발 환경에 릴리스하는 파이프라인을 생성합니다. Jenkinsfile 기반 파이프라인을 시도했다면 이 자습서의 빌드 단계를 쉽게 이해할 수 있습니다. 이 튜토리얼의 샘플 프로젝트는 지난 튜토리얼 에서 사용한 것과 동일합니다 .

전제 조건

파이프라인 개요

샘플 파이프라인에는 다음 6단계가 포함됩니다.

모든 단계를 자세히 설명하려면:


1단계. SCM 체크아웃:GitHub 리포지토리 코드를 가져옵니다.

2단계. 단위 테스트 : 파이프라인은 단위 테스트를 통과한 경우에만 다음 단계를 계속 실행합니다.

3단계. 코드 분석 : 정적 코드 품질 검사 및 분석을 위해 SonarQube 구성;

4단계. 빌드 및 푸시 : 이미지를 빌드 하고 파이프라인 활성 목록의 일련 번호가 있는 태그 snapshot-$BUILD_NUMBER
 사용하여 DockerHub에 푸시합니다 .$BUILD_NUMBER

5단계. 아티팩트 : 아티팩트(jar 패키지)를 생성하고 저장합니다.

6단계. DEV에 배포: 프로젝트를 개발 환경에 배포합니다. 이 단계에서 승인이 필요합니다. 배포가 성공하면 이메일이
전송됩니다.

실습 랩

1단계: 자격 증명 생성

DockerHub, Kubernetes 및 SonarQube에 대해 각각 3개의 자격 증명 을 생성해야 합니다 . Spring Boot 프로젝트를 위한 Jenkinsfile 기반 파이프라인 만들기 마지막 실습을 완료 했다면 이미 자격 증명이 생성된 것입니다. 그렇지 않으면 자격 증명 생성을 참조   하여 파이프라인에서 사용되는 자격 증명 을 생성하십시오.

2단계: 프로젝트 생성

샘플 파이프라인은 샘플 을 Kubernetes 네임스페이스에 배포하므로 KubeSphere에서 프로젝트를 생성해야 합니다. 마지막 실습을 완료하지 않은 경우 를 사용하여 이름이 지정된 프로젝트를 생성하는 단계 를 참조한 다음 이 프로젝트에 계정을 초대하고 이 계정 에 의 역할을 할당하십시오 .kubesphere-sample-devproject-adminproject-regularoperator

3단계: 파이프라인 생성

아래 단계에 따라 그래픽 편집 패널을 사용하여 파이프라인을 생성하십시오.

기본 정보 입력

3.1. DevOps 프로젝트에서 왼쪽 의 파이프라인 을 선택하고 만들기 를 클릭 합니다.

3.2. 팝업 창에서 이름을 지정하고 다음graphical-pipeline을 클릭 합니다.

고급 설정

3.3. 매개변수 추가를 계속 클릭하여 다음과 같이 세 개의 문자열 매개 변수 를 추가 하십시오. 이러한 매개변수는 파이프라인의 Docker 명령에 사용됩니다. 완료되면 만들기 를 클릭 합니다.

매개변수 유형이름기본값설명
기재 샘플 저장소 주소는 docker.io입니다. 이미지 레지스트리
DOCKERHUB_NAMESPACE 계정 아래의 조직 이름일 수도 있는 DockerHub 계정을 입력합니다. DockerHub 네임스페이스
APP_NAME 응용 프로그램 이름을 로 채우십시오 devops-sample. 애플리케이션 이름

4단계: 파이프라인 편집

이 파이프라인은 6단계로 구성됩니다. 우리는 각 단계의 단계와 작업을 보여줍니다.

1단계: 소스 코드 가져오기(Checkout SCM)

그래픽 편집 패널은 두 영역, 즉 왼쪽의 캔버스 와 오른쪽의 콘텐츠 를 포함합니다. 패널에서 파이프라인을 생성한 후 Jenkinsfile을 생성하므로 개발자에게 훨씬 더 사용자 친화적입니다.

참고: 파이프라인에는 scripted pipeline및 declarative pipeline가 포함되며 패널은 를 지원합니다 declarative pipeline. 파이프라인 구문은 Jenkins 설명서 를 참조하십시오 .

4.1.1. 다음과 같이 콘텐츠 영역  의 에이전트 유형  드롭다운 목록에서 노드 를 선택  하고 레이블에 입력합니다.maven

참고: 에이전트는 실행 환경을 정의하는 데 사용됩니다. 에이전트 지시문은 Jenkins에게 파이프라인 또는 특정 단계를 실행하는 위치와 방법을 알려줍니다. 자세한 내용은 Jenkins 에이전트 를 참조하십시오.

4.1.2. 캔버스 영역에서 + 버튼을 클릭하여 스테이지를 추가합니다. Add StepNo Name상자를 둘러싸고 있는 제목이 있는 상자를 클릭 하고 패널 오른쪽의 콘텐츠 영역에서 이름을 지정합니다 .Checkout SCM

4.1.3. 단계 추가 를 클릭 합니다.  콘텐츠 영역에서 git 을 선택  합니다. 지금은 다음과 같이 팝업 창을 채우십시오.

  • Url: GitHub 저장소 URL을 입력합니다 https://github.com/kubesphere/devops-java-sample.git. URL을 자신의 저장소로 바꾸십시오.
  • 자격 증명 ID: 개인 저장소를 사용하기 위해 그대로 비워 둡니다.
  • 분기: 공백으로 둡니다. 공백은 마스터가 기본값임을 의미합니다.

완료되면 확인 을 클릭하여 저장하면 첫 번째 단계가 생성된 것을 볼 수 있습니다.

2단계: 단위 테스트

4.2.1. Checkout SCM 단계 오른쪽에서 + 를 클릭  하여 컨테이너에서 단위 테스트를 수행하기 위한 다른 단계를 추가하고 이름을  .Unit Test

4.2.2. 단계 추가 를 클릭  하고 컨테이너  를 선택  하고 이름을  maven지정한 다음 확인을 클릭  합니다 .

4.2.3. 콘텐츠 영역에서  위에서 생성한 컨테이너 에  중첩 단계 추가 를 클릭하여 중첩 단계를 추가합니다. maven그런 다음   을 선택  하고 팝업 창에 다음 명령을 입력합니다.

mvn clean -o -gs `pwd`/configuration/settings.xml test

확인 을 클릭 하여 저장합니다.

3단계: 코드 분석

4.3.1. 위와 같이 Unit Test 스테이지 오른쪽의 + 를 클릭 하여 컨테이너에서 정적 코드 품질 분석을 수행하는 SonarQube 구성을 위한 스테이지를 계속 추가하고 이름을  .Code Analysis

4.3.2. 코드 분석 에서 단계 추가 를 클릭 하고 컨테이너 를 선택  하고 이름을  지정한 다음 확인을 클릭  합니다 .maven

4.3.3. 위에서 생성한 컨테이너   에서  중첩 단계 추가를 클릭  하여 중첩 단계를 추가하고 withCredentials 를 선택하고 이전에 생성된 자격 증명 ID 를 선택  하고 텍스트 변수에  입력  한 다음 확인 을 클릭 합니다.mavensonar-tokenSONAR_TOKEN

4.3.4. 오른쪽의 자격 증명 이 있는 작업 에서 중첩 단계 추가 (첫 번째 단계)를 클릭한 다음 withSonarQubeEnv를 선택  하고 기본 이름을 그대로 두고 확인 을 클릭 하여 저장합니다.sonar

4.3.5. withSonarQubeEnv 에서 중첩 단계 추가 (첫 번째 단계)를  클릭  합니다 . 그런 다음  오른쪽의   을 선택하고 SonarQube 분기 및 인증을 위한 팝업 창에서 다음 명령을 입력하고 확인 을 클릭 하여 정보를 저장합니다.

mvn sonar:sonar -o -gs `pwd`/configuration/settings.xml -Dsonar.branch=$BRANCH_NAME -Dsonar.login=$SONAR_TOKEN

4.3.6. 오른쪽에 있는 중첩 단계 추가 (세 번째 단계)를  클릭하고 timeout 을 선택 합니다. 1시간을 입력 하고 Hours단위로 선택합니다.

확인 을 클릭 하여 저장합니다.

4.3.7. 에서 중첩 단계 추가 (첫 번째 단계 timeout)를 클릭  합니다. 그런 다음  waitforSonarQubeGate 를 선택  하고 팝업 창에서  기본값을 유지합니다  .Start the follow-up task after inspection

확인 을 클릭 하여 저장합니다.

IV단계: 이미지 빌드 및 푸시

4.4.1. 마찬가지로 코드 분석 단계 오른쪽에서  + 를 클릭  하여 빌드하고 DockerHub에 이미지를 푸시하는 다른 단계를 추가하고 이름을 .Build and Push

4.4.2. 단계 추가 를 클릭  하고 컨테이너  를 선택  하고 이름을 maven지정한 다음 확인을 클릭  합니다 .

4.16.  포함에서 중첩 단계 추가를 클릭  하고 오른쪽에서 maven을 선택   하고 팝업 창에 다음 명령을 입력합니다.

mvn -o -Dmaven.test.skip=true -gs `pwd`/configuration/settings.xml clean package

4.4.3.  그런 다음 오른쪽에서  중첩 단계 추가 를 계속 클릭  하고 팝업 창에서 셸 을 선택하고 다음 명령을 입력하여 Dockerfile 기반으로 Docker 이미지를 빌드합니다 .

.명령 끝에 있는 점을 놓치지 마십시오 .

docker build -f Dockerfile-online -t $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BUILD_NUMBER .

확인 을 클릭 하여 저장합니다.

4.4.4. 마찬가지로  중첩 단계 추가를 다시  클릭  하고 오른쪽 에서 withCredentials 를 선택합니다. 다음과 같이 팝업 창을 채우십시오.

참고: 보안을 위해 계정 정보는 스크립트에서 일반 텍스트로 노출될 수 없습니다.

  • 자격 증명 ID: 생성한 DockerHub 자격 증명을 선택합니다(예: dockerhub-id
  • 비밀번호 변수:EnterDOCKER_PASSWORD
  • 사용자 이름 변수: EnterDOCKER_USERNAME

확인 을 클릭 하여 저장합니다.

4.4.5.  위에서 생성한  withCredentials 단계에서 중첩 단계 추가 (첫 번째 단계)를  클릭  하고  을 선택 하고 Docker Hub에 로그인하는 데 사용되는 팝업 창에 다음 명령을 입력합니다.

echo "$DOCKER_PASSWORD" | docker login $REGISTRY -u "$DOCKER_USERNAME" --password-stdin

확인 을 클릭 하여 저장합니다.

4.4.6. 위와 같이  withCredentials 단계 에서  중첩 단계 추가 를 다시 클릭하고  을 선택 하고 다음 명령을 입력하여 SNAPSHOT 이미지를 DockerHub에 푸시합니다.

docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BUILD_NUMBER

5단계: 유물 생성

4.5.1. Build and Push 단계 의 오른쪽에 있는  + 를 클릭 합니다  . 여기에 아티팩트를 저장하기 위한 다른 단계가 추가됩니다. 이 예에서는 jar 패키지를 사용하고 이름을  .Artifacts

4.5.2. Artifacts 단계 에서 Add Step 을 클릭  하고 archiveArtifacts 를 선택  합니다 .  Jenkins에서 아티팩트의 아카이브 경로를 설정하는 데 사용되는 팝업 창에 입력 합니다.target/*.jar

확인 을 클릭 하여 저장합니다.

6단계: 개발자에게 배포

4.6.1. 마지막 단계를 추가하려면 단계 Artifacts 의 오른쪽에 있는  + 를 클릭 하고 이름을 . 이 단계는 개발 환경, 즉 의 프로젝트에 리소스를 배포하는 데 사용됩니다  .Deploy to Devkubesphere-sample-dev

4.6.2. Deploy to Dev  에서 Add Step 을 클릭  하고 입력  선택   하고 팝업 창에 입력하여 이 파이프라인을 검토할 계정을 할당합니다.@project-adminproject-admin

확인 을 클릭 하여 저장합니다.

4.6.3. 오른쪽에서  단계 추가 를 클릭  하고 kubernetesDeploy 를 선택합니다 . 아래와 같이 팝업창을 채우고 확인 을 눌러 정보를 저장합니다.

  • Kubeconfig: 선택 demo-kubeconfig
  • 구성 파일 경로: Kubernetes yamldeploy/no-branch-dev/** 의 관련 경로를  입력합니다 .

확인 을 클릭 하여 저장합니다.

4.6.4. 마찬가지로,  파이프라인이 성공적으로 실행된 후 사용자에게 이메일 알림을 보내려면  단계 추가 를 클릭하고 메일 을 선택하고 정보를 입력합니다.

참고: 에서 이메일 서버 를 구성 했는지 확인하십시오 ks-jenkins. Jenkins 이메일 구성을 참조하십시오. 아직 없다면 이 단계를 건너뛰고 이 파이프라인을 계속 실행할 수 있습니다.

이 시점에서 파이프라인의 총 6단계가 완전히 편집되었으므로 확인 → 저장 을 클릭하면 Jenkinsfile도 생성됩니다.

5단계: 파이프라인 실행

5.1. 그래픽 편집 패널에서 생성된 파이프라인은 수동으로 실행해야 합니다. 실행 을 클릭 하면 세 번째 단계에서 정의된 세 개의 문자열 매개변수를 볼 수 있습니다. 확인 을 클릭 하여 이 파이프라인을 시작합니다.

5.2. 활동  목록 에서 파이프라인의 상태를 볼 수 있습니다  .  자세한 실행 상태를 보려면 활동 을 클릭하십시오  .

5.3. 세부 페이지를 보려면 첫 번째 활동을 입력하세요.

참고: 이전 단계가 올바르게 실행되고 있다면 몇 분 안에 파이프라인이 마지막 단계까지 성공적으로 실행되었음을 확인할 수 있습니다. 검토 단계를 설정하고 계정 project-admin을 검토자로 지정했기 때문입니다. 따라서 project-admin수동으로 검토하고 승인하려면 사용으로 전환해야 합니다.

5.4. 로그아웃하고 계정으로 로그인합니다 project-admin. graphical-pipeline위에서 사용한 DevOps 프로젝트 의 파이프라인  으로 들어갑니다.  실행 상태를 보려면 활동 으로 드릴  하십시오. 파이프라인이 DEV에 배포 단계로 실행된 것을 볼 수 있습니다   . 진행 을 클릭  하여 승인합니다.

6단계: 파이프라인 보기

6.1. 계정을 다시 로그인합니다 project-regular. 몇 분 후 파이프라인이 성공적으로 실행됩니다.  현재 실행 중인 파이프라인 일련 번호를 보려면 파이프라인에서 활동 목록을 클릭  합니다. 이 페이지는 파이프라인의 각 단계의 실행 상태를 보여줍니다.

6.2.  현재 페이지의 오른쪽 상단에 있는 로그 표시 를 클릭  하여 로그를 검사합니다. 팝업 창은 각 단계의 특정 로그, 실행 상태 및 시간을 보여줍니다. 특정 단계를 클릭하고 오른쪽에 있는 특정 로그를 확장합니다. 추가 분석을 위해 로컬 파일에 다운로드할 수도 있는 로그를 기반으로 모든 문제를 디버깅할 수 있습니다.

7단계: 코드 품질 확인

활동 페이지 로 돌아가서 코드 품질 을 클릭  하여 SonarQube에서 제공하는 데모 프로젝트의 코드 품질 분석을 확인하십시오. 샘플 코드는 단순하며 버그나 취약점을 보여주지 않습니다. SonarQube에 액세스하려면 오른쪽에 있는 SonarQube 아이콘을 클릭하십시오. 로그인하려면 Access SonarQube 를 참조하세요 .

SonarQube에서 품질 보고서 보기

8단계: 아티팩트 다운로드

첫 번째 활동을 입력하고  Artifacts 를 선택 합니다. 파이프라인에서 생성된 jar 패키지의 아티팩트를 찾을 수 있으며 아이콘을 클릭하여 다운로드할 수 있습니다.

9단계: Kubernetes 리소스 확인

파이프라인의 모든 단계가 성공적으로 실행되면 Docker 이미지가 자동으로 빌드되어 DockerHub 계정에 푸시됩니다. 마지막으로 프로젝트는 배포 및 서비스와 함께 Kubernetes에 자동으로 배포됩니다.

9.1. 프로젝트를 입력하고  애플리케이션 워크로드 → 워크로드  kubesphere-sample-dev클릭 하여 성공적으로 생성되었는지 확인합니다.ks-sample-dev

환경주소네임스페이스전개서비스
개발자 http://{$Virtual IP}:{$8080}또는 http://{$Intranet/Public IP}:{$30861} kubesphere-sample-dev ks-sample-dev ks-sample-dev

배포 보기

9.2. 서비스 목록으로 이동 하면 해당 서비스가 생성되었음을 확인할 수 있습니다. 서비스에 의해 노출된 NodePort는 30861이 예에 있습니다.

서비스 보기

9.3. 이제 DockerHub에 푸시된 이미지를 확인합니다. 이것은  APP_NAMEdevops-sample의 값이고  태그는 의 값  이고  는 파이프라인 내 활동의 일련 번호입니다. 이 태그는 배포에도 사용되었습니다 .SNAPSHOT-$BUILD_NUMBER$BUILD_NUMBERks-sample-dev

9.4. 파이프라인에서 이메일 알림을 설정했으므로 메일함에서 이메일을 확인할 수 있습니다.

10단계: 샘플 서비스에 액세스

명령을 사용하거나 브라우저에서 액세스하여 샘플 서비스에 액세스할 수 있습니다. admin예를 들어 다음과 같이 계정을 사용하여 웹 kubectl을 사용할 수 있습니다 .

# curl {$Virtual IP}:{$Port} or curl {$Node IP}:{$NodePort}
curl 10.233.4.154:8080
Really appreciate your star, that's the power of our life.

축하합니다! 그래픽 편집 패널을 사용하여 CI/CD 워크플로를 시각화하는 데 익숙했습니다.

댓글