2021-3-6 젠킨스(1) 설치

젠킨스

Credentials

  • 젠킨스는 secret text, username, pw, secret file, ssh username with private key, certificate, docker host cetificate 등을 저장할 수 있다.

파이프라인

  • 젠킨스 파이프라인을 사용하기 위해서는 레포지토리에 Jenkinsfile을 작성해야한다. 이를 Pipeline-as-code라고 부른다.
  • Jenkinsfile의 장점
    • Jenkinsfile를 작성하고 커밋하면 모든 브랜치의 PR에 대해 자동으로 빌드 프로세스가 생성된다.
  • Jenkinsfile는 선언적타입과 스크립트타입 2가지 종류로 작성될 수 있다. => 선언적타입이 젠킨스 파이프라인의 최근 특징에 가깝다.
  • 파이프라인은 자동화된 툴을 많이 지원한다.

컨셉

  • pipeline : 파이프라인에서 전체 빌드 과정을 정의한다.
  • node : 젠킨스 환경의 일부이고, 파이프라인을 실행할 수 있다.
  • stage : stage블록은 전체 파이프라인을 통해 실행되는 부분 task, Build 스테이지, Test스테이지, Deploy 스테이지 등으로 구별할 수 있다.
  • step : 단일 테스크, 젠킨스가 특정 시점에 뭘 하는지 가리킨다.

Jenkinsfile (Declarative Pipeline)

Jenkinsfile (Declarative Pipeline)
pipeline {
    agent any
    options {
        skipStagesAfterUnstable()
    }
    stages {
        stage('Build') {
            steps {
                sh 'make'
            }
        }
        stage('Test'){
            steps {
                sh 'make check'
                junit 'reports/**/*.xml'
            }
        }
        stage('Deploy') {
            steps {
                sh 'make publish'
            }
        }
    }
}
  • 파이프라인은 Blue Ocean, UI, SCM에서 생성될 수 있다.

  • my_jenkins_url/pipeline-syntax를 통해 built-in 문서를 검색할 수 있다.

  • global variable ref : 플러그인에서 동적으로 전역변수를 생성할 수 있다. 하지만 전역변수는 document에 포함된 변수만 파이프라인이나 플러그인을 통해 생성가능.

    • env.PATH
      env.BUILD_ID
      
      ${jenkin_url}/pipeline-syntax/global#env에서 관리
      
    • params : params.MY_PARAM_NAME을 통해 관리

설치

$brew install jenkins-lts # 젠킨스 설치
$vi /usr/local/Cellar/jenkins-lts/2.263.1/homebrew.mxcl.jenkins-lts.plist # 내부 포트를 8080 => 9090으로변경
$brew services start jenkins-lts

젠킨스설치1

  • port를 9090으로 설정하고 localhost:9090으로 접속하면 로그인을 하라고한다.
$cat cd /Users/사용자이름/.jenkins/secrets/initialAdminPassword
  • 초기화 패스워드를 복사하여 입력하자
  • 로그인후 Install suggested plugins를 선택

젠킨스설치2

  • Install suggested plugins를 선택하면 위와같이 플러그인들이 설치된다.

젠킨스설치3

  • 플러그인이 설치가 완료되면, 위와 같이 계정생성을 합니다.

젠킨스설치4

  • 세팅이 완료되고 localhost:9090으로 접속하면 위와 같이 초기화면이 구성된것을 확인할 수 있습니다.

느낀점

  • Travis, CircleCI의 경우 이미 다 구축이 되어있는걸 사용하기 때문에 Jenkins 초기설정은 익숙하지 않았다. 많은 대기업에서 젠킨스를 이용하여 빌드 시스템을 구축하고 있는데, 젠킨스를 꾸준히 학습해서 자동배포+도커 등 다양한 파이프라인을 구축해봐야겠다.
Written on March 6, 2021