Jenkins 설치 및 환경구성


  1. JDK 설치

  2. Gradle 설치

  3. 사용자 추가 및 권한 설정

    • 사용자 추가
    • # useradd jenkins -m -d /home/jenkins
      # passwd jenkins
      
    • sudoer 등록
    • # usermod -aG sudo jenkins
      
    • gradle profile 추가
    • $ su - jenkins
      $ vi ./.profile
      ## gradle
      PATH="/opt/gradle/gradle-4.0.2/bin:$PATH"
      $ source ./.profile
      
  4. Jenkins 설치(jenkins로 로그인 후 진행)

    • 레파지토리 키 등록
    • $ wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
      
    • sources.list 에 데비안 패키지 레파지토리 추가
    • $ echo deb http://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list
      
    • apt-get 업데이트
    • $ sudo apt-get update
      
    • Jenkins 와 dependencies 설치
    • $ sudo apt-get install jenkins
      
  5. Jenkins 시작

    • 포트변경

    • $ sudo vi /etc/default/jenkins
      // port 부분을 변경.
      HTTP_PORT=8080 -> HTTP_PORT=7000
      
    • systemctl을 사용하여 Jenkins 시작

    • $ sudo systemctl start jenkins
      
    • status 확인

    • $ sudo systemctl status jenkins
       jenkins.service - LSB: Start Jenkins at boot time
         Loaded: loaded (/etc/init.d/jenkins; bad; vendor preset: enabled)
         Active: active (exited) since Fri 2017-07-07 09:47:29 KST; 2min 1s ago
           Docs: man:systemd-sysv-generator(8)
      
  6. 방화벽 오픈

    • 방화벽 정책 수정 - 9000포트 추가

    • $ sudo vi /etc/iptables/rules.v4
      
    • rules.v4에 아래 내용 추가 후 저장/닫기

    • -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 9000 -j ACCEPT
      
    • 방화벽 재시작

    • $ sudo netfilter-persistent reload
      
    • 정책확인

    • $ sudo iptables -L
      
  7. Jenkins 기본 설정

    • Jenkins 접속

    • http://ip_address_or_domain_name:8080
      
    • 관리자 비번 입력 후 Unlock Jenkins

    • $ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
      

    • "Install suggested plusins" 선택

    • 관리자 계정 생성 - 정보 입력 후 "Save and Finish"

    • "Start using Jenkins"


Jenkins - Gitlab 연동

  1. GitLab 설정

    • 사용자 계정과 access token 생성
  2. Jenkins 설정

    • Global Tool Configuration 설정

    • 플러그인 설치

    • GitLab 접근을 위한 credential 생성 Jenkins CI 가 build status를 GitLab API로 보내기 위한 설정 GibLab에서 생성한 사용자 access token을 등록

    • GitLab connection 설정

  3. Jenkins Build Job 생성 GitLab의 mgerge request 를 처리할 job 생성

    • 폴더 생성

    • 폴더 하위에 pipeline job 생성

    • build triggers 섹션

    • "Build when a change is pushed to GitLab CI.." 체크
    • "Advenced.." 에 key generate..
    • 위 URL과 generated 된 Secret token으로 GitLab에서 Jenkins Webhook 생성해야함

    • Pipeline 섹션

    • Definition 에 "Pipeline script fro SCM" 선택
    • SCM에 git 선택
    • Repository URL에 git project 주소 입력

      Credential 에 GitLab에 API Token 생성 하여 입력 해야 되는데 add 가 안되는 현상이 있음. 임시로 credential을 gitlab user/password form으로 생성하여 임시조치

    • Branch에 master -> 이후 Release로 변경예정
    • Script Path: Jenkinsfile -> 소스에 Jenkinsfile 을 생성해여 소스레벨에서 배포스크립트를 관리하는 방식으로 진행

      #!/usr/bin/env groovy
      
      node {
         stage('checkout') {
             checkout scm
         }
      
         gitlabCommitStatus('build') {
             stage('check java') {
                 sh "java -version"
             }
      
             stage('clean') {
                 sh "chmod +x gradlew"
                 sh "./gradlew clean --no-daemon"
             }
      
             stage('npm install') {
                 sh "./gradlew npmInstall -PnodeInstall --no-daemon"
             }
      
             stage('backend tests') {
                 try {
                 //    sh "./gradlew test -PnodeInstall --no-daemon"
                 } catch(err) {
                     throw err
                 } finally {
                 //    junit '**/build/**/TEST-*.xml'
                 }
             }
      
             stage('frontend tests') {
                 try {
                 //    sh "./gradlew npm_test -PnodeInstall --no-daemon"
                 } catch(err) {
                     throw err
                 } finally {
                 //    junit '**/build/test-results/karma/TESTS-*.xml'
                 }
             }
      
             stage('packaging') {
             //    sh "./gradlew bootRepackage -x test -Pprod -PnodeInstall --no-daemon"
                 sh "./gradlew bootRepackage -Pdev -PnodeInstall --no-daemon"
                 archiveArtifacts artifacts: '**/build/libs/*.war', fingerprint: true
             }
         }
      }
      
  4. GibLab Webhook 생성 및 테스트

    • GitLab Project > Setting > Integration
    • Pipeline Job 생성 단계의 URL과 generated Secret token 복사/붙여넣기
    • 트리거에 Merge Request events 체크 (Merge Request시에만 Jenkins build)
  5. 연동테스트

    • Release용 브랜치 생성

    • Master 브랜치에 변경배용 push 후 master -> release Merge Request 생성

    • Jenkins에서 Pipeline Job 수행 되는지 확인

results matching ""

    No results matching ""