[11월 3주차] 젠킨스 설치와 jenkinsfile 생성.

carlkim·2023년 10월 19일
0

• 젠킨스 설치
• 웹훅 설정
• 젠킨스 설정
• 젠킨스 파일
젠킨스 설치
환경 : Window 10 home 내부 wsl에 설치된 ubuntu 20.04
Jenkins 설치.
웹훅 설정
Webhook Relay를 사용하여 설정하였습니다.
Jenkins Github Webhook & tagging
젠킨스 설정
브랜치 별 빌드는
본디 Git Parameter를 플러그인을 사용하여
드랍박스형태로 선택하는 형태를 취해야하지만
본 프로젝트에서는 main 브랜치만 활용하기 때문에
String parameter를 사용하였다.

태그 버전을 수동 빌드할 수 있게 파라메터를 넘기는 설정을 해놓았다.

젠킨스 파일
파이프라인 과정
1. 깃허브에서 소스 코드를 가져온다.
2. 가져온 소스코드를 그레이들로 빌드한다.
3. 빌드된 그레이들 이미지를 도커 이미지로 만든다.
4. docker.io에 이미지를 푸시한다
5. (아르고CD가 바라보고있는 레파지토리 소스를 가져온다)
6. osc-board-api.yaml 내부 태그값을 CURRENTTAG 변수로 지정
7. CURRENTTAG 변수를 REPLACETAG로 sed 명령어로 변경
8. 변경된 osc-board-api.yaml을 다시 푸시해준다.
-pipeline {
agent any

environment {
    // Mtag = "{jtag}"
    gitTags = "sh(returnStdout: true, script: 'gitt describe --tags --abbrev=0').trim()"
    // latestHash = "sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()"
    // latestTagHash = "sh(returnStdout: true, script: 'git rev-list 0n 1 ${gitTags}').trim()"
}

stages {
    stage ('Github clone') {
        steps {
            git branch: '${BRANCH}',
            credentialsId: 'hwan-git-credential',
            url: 'https://github.com/eternityhwan/osc-board-api.git'
            sh 'cat Dockerfile'
            sh 'ls'
            sh 'pwd'
        }
    }

    stage ('Gradle build jar file') {
        steps {
            sh 'chmod +x gradlew'
            sh './gradlew --version'
            sh 'echo "start gradle build"'
            sh 'echo "{$Cashe}"'

        script {
            if ( params.Cashe == true ) {
        sh './gradlew clean build --debug --exclude-task test'
 }  else {
        sh './gradlew clean build --debug --exclude-task test'
        }
    }
        sh 'pwd'
        // sh 'ls -al ./target'
    }
}

    stage ('Docker build & PUSH Phase') {
        // when { environment name: 'Mtag', value: "${jtag}" }
        steps {
            // sh 'sudo systemctl status docker.service'
            sh 'sudo chmod 666 /var/run/docker.sock'
            sh 'docker build -t mirrorkyh/osc-board-api:${Mtag} .'
            sh 'echo "docker.io login & image push"'
        script {
            withCredentials([usernamePassword(
            credentialsId: 'dockerIOhwan',
            passwordVariable: 'hwanPass',
            usernameVariable: 'hwanId')]) {
            sh 'docker login -u ${hwanId} -p ${hwanPass}'
            }
    }
    sh 'echo "docker.io pushing work"'
    sh 'sudo docker push mirrorkyh/osc-board-api:${Mtag}'
    }
}

 // cd 단계

         stage ('CD Stage clone api-app') {
                steps {
                    git branch: '${BRANCH}',
                    credentialsId: 'hwan-git-credential',
                    url: 'https://github.com/eternityhwan/osc-board-api.git'
                }
           }

         stage ('CD Stage change tag') {
                 steps {
                        sh 'git checkout ${BRANCH}'
                        dir('k8s') {
                         sh 'pwd'
                         sh '''
                          echo "sed command"
                          chmod 777 osc-board-api.yaml
                          CURRENTTAG=$(grep 'image:' osc-board-api.yaml | awk -F":" '{print $3}')
                          REPLACETAG="$Mtag"
                          sed -i "s|$CURRENTTAG|$REPLACETAG|g" osc-board-api.yaml
                          '''
                           sh 'cat osc-board-api.yaml'

                        }
                        sh 'pwd'
                 }
         }

        stage ('CD Stage git push') {
              steps {
                  script {
             withCredentials([usernamePassword(
                credentialsId: 'hwan-github-token',
                passwordVariable: 'hwanGitPass',
                usernameVariable: 'hwanGitId')]) {
                    // sh 'git config --global --unset http.proxy'
                    // sh 'git config --global --unset https.proxy'
                    sh 'git config --global user.name "mirrorkyh"'
                    sh 'git config --global user.email "mirrorkyh@gmail.com"'
                    sh 'ls -al'
                    sh 'git add .'
                    sh 'git commit -m "change deployment tag"'
                    // sh 'git remote rm origin'
                    // sh 'git remote add origin https://github.com/eternityhwan/osc-board-api.git'
                    // sh 'git push https://${hwanGitId}:${hwanGitPass}@github.com/eternityhwan/osc-board-api.git'
                    sh 'git push https://${hwanGitId}:${hwanGitPass}@github.com/eternityhwan/osc-board-api.git'
                    }
                }
            }
        }
    }
}

파이프라인 결과

profile
기본부터 가면 됩니다.

0개의 댓글