Kubernetes(IKS)에서 Jira 활용한 CI/CD 파이프라인 구축하기(4/4)
Kubernetes(IKS)에서 Jira 활용한 CI/CD 파이프라인 구축하기(4/4) Part 4. Jira에서 Gitlab, Jenkins CI/CD 운영하기 Jira Issue에 소스 커밋, 빌드 정보를 업데이트 하고, 워크플로우에서 Jenkins 자동빌드를 실..
metleeha.tistory.com
전체 CI 구조는 다음과 같습니다.
GITLAB-JENKINS
여기에
1) GITLAB의 Commit을 모니터링 하기 위해 Jira가 추가됩니다.
2) 빌드에 대한 승인 체계를 더하기위해 Jira가 추가됩니다.
그래서
GITLAB(with Jira)-JENKINS(with Jira)
1. Jira와 Gitlab 연동하기
Gitlab Project에서 Settings → Integration 에서 Jira를 선택합니다.
Jira의 URL정보와 Jira에서 Gitlab정보를 업데이트 할때 사용할 사용자의 Username과 Password를 입력합니다.
연동을 확인하기 위해서 Gitlab에서 Readme파일을 수정하고, Commit 메세지에 JIRA ISSUE번호를 입력합니다.(필수)
작성한 커밋 메세지를 Push하면 Jira Issue에서 Gitlab변동사항을 다음과 같이 업데이트 받을 수 있습니다.
2. Jira에서 Jenkins 빌드 확인하기
Jenkins에서 Jira Pipeline Steps 플러그인을 설치합니다.
Jeknins관리 → 시스템설정 → Jira Steps에서 Jira Site정보를 입력합니다.
Jenkins 파이프라인 설정란에서 Pipeline script from SCM을 선택하고 Git 정보를 입력합니다.
Jenkins에 Gitlab ID/PW Credential을 등록해주고, 선택합니다. 디폴트로 프로젝트의 가장 상위 폴더 아래 JenkinsFile에 서 스크립트 파일을 읽어옵니다.
Gitlab 프로젝트에서 Jenkinsfile을 생성하고 Jira Issue에 빌드 결과를 업데이트 하기 위한 스크립트를 작성합니다. 참고로 Jenkins Jira Pipeline Steps 문서에 스크립트 작성 사례 및 방법이 상세히 나와있습니다.
3. Jira Workflow에서 Jenkins 자동빌드 실행하기
Jira에서 Jenkins에 자동빌드를 실행하기 위해서는 Jira Trigger 플러그인을 사용하면 간단하게 설정할 수 있습니다. (사용방법은 네이버 블로그를 참고하세요.)
다만 Jira Trigger 플러그인의 경우 Jenkins가 사용할 수 있는 포트 번호가 고정되어 있을 뿐만아니라 SSH인증 등 여러가지 상황에 따라 사용할 수 없는 경우가 많습니다.
따라서 Jenkins에 직접 Build trigger를 할 수 있는 URL을 생성하고, Shell 커맨드로 Curl을 사용해 Jenkins 빌드를 실행시키는 방법을 소개하려 합니다.
Jenkins의 Pipeline → Settings → Build Trigger 에서 Trigger Build Remotely를 선택합니다.
임의로 사용할 Token을 입력하는데, 평범한 PW를 사용하기 보다는 RandomeKeygen사이트 등을 이용하여 보안이 강화된 Token을 사용하는 것을 권장합니다.
Jenkins에서 User를 새로 생성하고, 해당 유저의 API Token을 생성합니다. Jenkins Manage → Configure Global Security → API Token에서 Generate a legacy API Token for each newly created user를 체크합니다. 이제 사용자 설정 탭에 들어가면 api token을 생성할 수 있습니다.
앞서 직접 만든 CUSTOM_TOKEN과 Jenkins에서 User 로그인을 위해 만든 API TOKEN을 조합해서 다음과 같은 url을 만들어볼 수 있습니다.
http://{USER_ID}:{API_TOKEN}@{JENKINS_URL}/job/jira-cicd-demo/build?token={CUSTOM_TOKEN}
그런 다음 커맨드 창에서 POST요청을 보내 빌드가 실행되는지 확인해봅니다.
#curl -X POST http://{USER_ID}:{API_TOKEN}@{JENKINS_URL}/job/jira-cicd-demo/build?token={CUSTOM_TOKEN}
커맨드 창에서는 실행이 되지만 jira에서 웹훅 등록은 반드시 보안이 강화된 HTTPS 요청만 가능하기 때문에 바로 등록해서 사용하기 어렵습니다.
따라서 직접 curl 요청을 보내는 방식으로 연동해보겠습니다.
Jira용 Atlassian 마켓플레이스에서는 다양한 앱을 제공하고 있고, 그중에서 script를 직접 작성해서 workflow postfunction에 활용할 수 있는 ScriptRunner for Jira를 다운받아 사용했습니다.
플러그인 설치 후에는 반드시 재색인을 수행해주어야 Jira에서 추가된 기능을 사용할 수 있습니다.
이제 script 작성을 workflow에 적용하기 위해 먼저 빌드 트리거용 status를 하나 만들어 보겠습니다.
이런 식으로 원하는 status를 만들고 해당 status로 전환하면서 post function을 발생시키는데, 이때 script가 실행되도록 action을 설정할 수 있습니다.
후속 조치(post function)를 클릭하고 들어가 후속 조치를 추가합니다.
script로 post function을 추가할 수 있는 탭이 새로 생긴것을 확인할 수 있습니다.
클릭해서 들어가고, Custom script post-function을 사용해 스크립트를 작성합니다.
def proc='curl -v -k -X POST http://{USER_ID}:{API_TOKEN}@{JENKINS_URL}/job/jira-cicd-demo/build?token={CUSTOM_TOKEN}'.execute()
thred.start { System.err << proc.err }
proc.waitFor()
JIRA 이슈에서 Build Trigger 전환 버튼을 누르고, Jenkins 자동빌드 되는 것을 확인합니다.
'PaaS > CI CD' 카테고리의 다른 글
CI/CD 배포 전략 설계시 고려사항 (0) | 2022.01.17 |
---|---|
CI와 CD는 무엇일까? (0) | 2021.12.21 |
(Git) Master가 아닌 다른 Branch로 Pull, Push (0) | 2021.10.08 |
(Harbor) Harbor 재기동 그리고 config 수정 (0) | 2021.10.08 |
(Jenkins, Dockerhub, Github, Kubernetes) Github에서 소스를 가져와 Kubernetes에 Jenkins 통해서 배포하기 (0) | 2021.07.22 |