Provisioning, Jenkins/Dev

Jeonghak Choยท2025๋…„ 5์›” 18์ผ

Provisioning

๋ชฉ๋ก ๋ณด๊ธฐ
25/44

๐Ÿ“— Provisioning - Jenkins

๐Ÿณ๏ธโ€๐ŸŒˆ [๊ถ๊ธˆํ•œ์ ]

  • Jenkins ์„ค์น˜ ๋ฐฉ๋ฒ•

๋ชฉ์ฐจ

์  ํ‚จ์Šค ์„ค์น˜

mkdir jenkins_home
chmod 777 jenkins_home
docker run -d \
  --name jenkins \
  -p 8089:8080 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v ~/jenkins_home:/var/jenkins_home \
  jenkins/jenkins:lts
  • ~/jenkins_home์— Jenkins ์„ค์ •๊ณผ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•ด๋„ ๋ฐ์ดํ„ฐ๋Š” ์œ ์ง€๋œ๋‹ค.
  • ๋ณด์•ˆ์ƒ ์ฃผ์˜: ์ด ๊ตฌ์„ฑ์€ Jenkins ์ปจํ…Œ์ด๋„ˆ๊ฐ€ Docker ํ˜ธ์ŠคํŠธ๋ฅผ ์ง์ ‘ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
ํฌํŠธ์„ค๋ช…
8080Jenkins ์›น UI (8089๋กœ ํฌ์›Œ๋”ฉ)
50000์—์ด์ „ํŠธ์™€์˜ ํ†ต์‹  ํฌํŠธ (JNLP)

์ดˆ๊ธฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ

docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

์ด ๊ฐ’์„ Jenkins ์›น UI(http://localhost:8080)์— ์ž…๋ ฅํ•˜์—ฌ ์ดˆ๊ธฐ ์„ค์ •์„ ์ง„ํ–‰

ํŒจ์Šค์›Œ๋“œ ์ดˆ๊ธฐํ™”

docker exec -it jenkins bash
vi /var/jenkins_home/config.xml

<useSecurity>true</useSecurity> โ†’ false ๋กœ ์ˆ˜์ • ํ›„ ์ €์žฅ

exit

docker start jenkins

ํŒŒ์ดํ”„๋ผ์ธ ์ƒ์„ฑ

pipeline {
 agent any

    tools {
        //jdk "Amazon Corretto 11"
        //gradle "Gradle 8.5"
    }

    environment {
        //JAVA_HOME = "tool Amazon Corretto 11"

        project="myproject"
        //TARGET_SERVER_IP=""
        //TARGET_SERVER_PASS=""

        //project="${JOB_NAME}"
        
        TAG="latest"

        git_url="http:///root/${project}.git"

        //CREDS_ACC = credentials('acc') 
        //CREDS_SEC = credentials('sec') 
    }

    stages {
        stage('์ค€๋น„') {
            steps {
                sh '''
                   #java -version
                   #gradle --version
                   #kubectl version
                   #docker pull gcr.io/kaniko-project/executor:latest
                '''
            }
        }

        stage('์ฝ”๋“œ ๊ฐ€์ ธ์˜ค๊ธฐ') {
            steps {
                echo '์ฝ”๋“œ ๊ฐ€์ ธ์˜ค๊ธฐ ์ง„ํ–‰'
                //checkout([$class: 'GitSCM', branches: [[name: 'origin/main']], extensions: [[$class: 'CloneOption', timeout: 120]], userRemoteConfigs: [[credentialsId: "myid", url: "${git_url}"]]])
            }
        }

        stage('์ฝ”๋“œ ๋นŒ๋“œ') {
            steps {
              echo '์ฝ”๋“œ ๋นŒ๋“œ ์ง„ํ–‰'
              //sh 'gradle clean build -x test -b build.gradle'

            }
        }

        stage('๋ฐฐํฌ') {
            steps {
              echo '์ด๋ฏธ์ง€ ๋นŒ๋“œ & ์ €์žฅ์†Œ ํ‘ธ์‹œ'
              
             sh 'pwd'

              sh '''
                # docker run --rm \
                # -v .:/workspace \
                # -w /workspace \
                # gcr.io/kaniko-project/executor:debug \
                # --dockerfile Dockerfile \
                # --context=git://id:pass@domain/9988/mygit.git \
                # --destination=mydomain/myimage:1
              '''
            }
        }
    }
}

0๊ฐœ์˜ ๋Œ“๊ธ€