본문 바로가기

젠킨스 (Jenkins)10

1. Jenkins 란? Jenkins 같은 녀석들을 CI/CD 도구라고 부른다.CI/CD 는 뭐야..?? (구축하다보면, 산넘어 산이다.. 이걸 하고 싶은데 이걸 하기 위해서는 또다른 무언가를 알아야 되고, 또다른 무언가를 알기 위해서는 또또다른 무언가를 알아야 되고.. 하…..) CI (Continuous Integration)한글로 “지속적 통합” 이라고 한다. (대부분이 그렇듯이 한글로 바꾸면 없어보인다)위키에 잘 설명되어 있다. (위키백과: 지속적 통합) 한줄 정의 : 모든 개발자가 소스를 받았을때 에러 없는 상태의 소스코드를 관리하는 것 팀원이 많아질수록 코드의 변경량이 많아지고, 누군가가 일일이 감시하지 않는한 문제가 되는 코드가 들어올수밖에 없다.이를 사람이 일일이 모니터링 하는것은 불가능하다.CI는 개발자가 서버.. 2024. 10. 29.
2. Jenkins Install 1. Jenkins download먼저 설치파일을 다운받아야 한다.Jenkins download and deployment설치하려는 서버의 OS 에 맞는 SW를 다운로드한다.Jenkins 홈페이지에 친절하게 install 과정이 설명되어 있다.우리 서버는 Ubuntu 니 Jenkins book 에 Linux  페이지를 참고해서 설치하면 된다.  curl 을 통해 LTS 버전 설치curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \ /usr/share/keyrings/jenkins-keyring.asc > /dev/nullecho deb [signed-by=/usr/share/keyrings/jenkins-keyr.. 2024. 10. 29.
3. Jenkins 에서 Gerrit 프로젝트 빌드하기 Jenkins 에 새로운 프로젝트를 생성하고 빌드하는 방법에 대해 알아보자.gerrit 의 memore_client repository 를 예시로 설명한다.1. http://xxxx.xxx (셋업한 젠킨스서버의 주소)  로그인 → 홈화면에 [+ 새로운 Item] 선택 2. 원하는 이름 넣고 → Freestyle project 선택 → OK이제 프로젝트 설정을 채워야 한다. 3. 소스코드관리 → Git 선택Git repository 설정이 펼쳐진다. 하나씩 보자.3-1) Repository URLGit 저장소의 URL 주소 : memore_client 의 repository 정보를 적는다 (모르겠으면 gerrit 에서 clone 명령어를 보면 된다.)ssh://AriGerrit@review.aribio.n.. 2024. 10. 29.
4. Jenkins 에서 Gerrit Review 특정 브랜치만 빌드 Gerrit 이 인기가 없는건지, Github 에 대한 자료는 많은데 Gerrit 은 의외로 개발자들이 참고할만한 블로그나 설명이 많지는 않다.나같은 삽질 개발자들에게 조금이라도 도움이 됐으면 좋겠다. :) 오늘은 간단하게 팁 하나만 공유하려고 한다. 젠킨스 형님이 일을 너무 잘해서 게릿에 리뷰가 등록되기만 하면 무조건 트리거돼서 빌드를 돌린다.그런데 일을 하다보면 특정 브랜치만 빌드를 돌리게 하고 싶을때가 있다.우리팀 같은 경우는 리뷰를 등록하고 젠킨스 형님이 빌드해서 Build Successful 커멘트를 남기고 Verified +1 점을 주면 자동으로 Slack 에 리뷰 요청글이 등록되게 되어있어서, 테스트 커밋이나 아직 리뷰 요청할 단계 이전의 커밋들도 무조건 리뷰 요청 메시지가 간다.그럼 슬랙 .. 2024. 10. 29.
5. Pipeline 프로젝트 앞에까지 simple project 하나를 만들어서 빌드하는것을 해보았다.하지만 Jenkins 형님의 진정한 매력은 pipeline 에 있다.말은 거창하지만 파이프라인이래야 여러가지 타스크를 직렬/병렬로 수행하는것에 불과하다.따라서 작업이 필요한 경우에 한해서 진행하면 된다. 보통 프로젝트를 빌드하게 되면 아래와 같은 단계들이 생긴다. (내 경우)1. pre build step (빌드 전 단계)2. build step (빌드 단계)3. test (유닛 테스트)4. statci anaysis (정적 분석)5. post build step (빌드 후 단계) 이런 일련의 작업들을 젠킨스 파이프라인을 이용하면 하나의 젠킨스 프로젝트에서 수행 할 수 있다. 1. pipeline 프로젝트 생성역시나 맨먼저 할일은 .. 2024. 10. 29.
6. Pipeline project - pipeline script pipeline 프로젝트 구성 마지막에 pipeline script 를 설정하면 이제 pipeline 문법을 이용해서 pipeline 을 구성할 수 있다.이를 위해서 앞장의 마지막에 pipeline syntax 이전까지 살펴보았다.이제 pipeline syntax 를 누르게 되면 아래와 같은 페이지를 만나게 된다. 여기서 뭘 어떻게 해야되지? 라는 막막한 생각이 들수 있는데, 당황하지 말고 영어를 찬찬히 읽으면 된다.Snippet Generator 라는 부분으로 원하는 액션에 대해서 Pipelien syntax (정확히는 Groovy 문법) 를 자동으로 만들어주는 역할을 한다.예를들어, 빌드 후에 마지막으로 산출물을 저장하는 액션을 하고 싶다고 가정하자.이는 물론 파이프라인이 아니어도 할 수 있다. 기억.. 2024. 10. 29.
7. Pipeline project - pipeline script from SCM (1/2) 이 방법은 젠킨스 프로젝트에 pipeline 명령어를 설정하는게 아니고 소스 코드 프로젝트에 pipeline 명령어를 셋업하는 방식이다.즉 젠킨스가 빌드할 소스 코드의 Jenkinsfile 이라는 파일을 하나 만들어서 거기에 필요한 명령어들을 셋업하면 된다. 이 옵션을 선택하면 아래와 같은 화면이 나오고, SCM 부분에서 Git 을 선택해주자. 선택하고 나면 Freestyle 때 접했던 익숙한 셋팅 화면을 만나게 된다.감이 오죠?이전 옵션(Pipeline script)는 웹상에서 명령어를 구성하는 반면이 옵션은 소스코드 상에서 명령어를 구성하는 것이기에 파이프라인으로 빌드할 타겟 소스와 Jenkinsfile 을 셋업해주면 된다. 젠킨스는 파이프라인 프로젝트에서 기본적으로 소스 코드의 root path 밑.. 2024. 10. 29.
7. Pipeline project - pipeline script from SCM (2/2) 이제 다 왔다.맨 처음에 파이프라인 빌드 단계를 언급한게 기억이 나는가?이제 이걸 진행해 보자. 앞장에서 Jenkinsfile 스크립트를 설정한 위치에 파일을 하나 만들고 Jenkinsfile 이라고 이름짓자.Jenkinsfile 의 구성은 쉽다.pipeline { agent any stages { stage('1st step') { steps { // 원하는 액션들 } } stage('2nd step') { steps { // 원하는 액션들 } } ... } post { success { // 빌드 성공시 액션 } failure { // 빌드 실패.. 2024. 10. 29.
8. Jenkins Credential Jenkins 는 다른 툴(Github, Gerrit, AWS, ...) 과 연동해서 작업을 한다.따라서 다른 툴에 접근하기 위한 key (id, password, ...) 가 필요하다.이걸 Credential 이라고 부른다. 여기서는 간단하게 Gerrit 에 접근하기 위한 Credential 을 만드는 과정을 살펴보자. 1. Dashboard -> Jenkins 관리 -> Credential 로 이동 2. System 으로 이동여기서 약간 불친절한 Jenkins UI 를 만나게 된다.명확하게 시스템이라는 항목이 보이질 않는다. (1) 번 방법 :      아마도 처음 시도한다면 아래 그림에서 윗영역은 없을것이고 Stored scoped to Jenkins 라는 항목만 보일것이다.     디폴트로 가지고.. 2024. 10. 29.
9. Jenkins AWS Credential 앞에서는 일반적인 Credential 에 대해 알아보았다. ([젠킨스 (Jenkins)] - Jenkins Credential)대단한건 아니지만 AWS 를 Jenkins 형님이 접근하려면 AWS 전용 credential 이 필요하다.그것에 대해 알아보자. 1. 플러그인 설치젠킨스가 AWS 에 접근하기 위해서는 별도의 플러그인이 필요하다.자세한 설명은 아래에서 확인하면 된다.https://plugins.jenkins.io/aws-credentials/ AWS CredentialsAllows storing Amazon IAM credentials within the Jenkins Credentials API. Store Amazon IAM access keys (AWSAccessKeyId and AWSSec.. 2024. 10. 29.