DevOps - Jenkins(2) CI PipeLine 생성
젠킨스의 설치 방법은 아래에서 확인할 수 있다.
https://pleasestudy-alswldi.tistory.com/242
DevOps - Jenkins(1) 설치
🐹젠킨스란? Jenkins는 오픈 소스 기반의 지속적 통합(CI) 및 지속적 배포(CD) 도구CI는 코드를 커밋 & 빌드 했을때 정상적으로 동작하는지 반복적으로 검증해 애플리케이션의 신뢰성을 높이는 작
pleasestudy-alswldi.tistory.com
Jenkins에서 Pipeline Job을 생성하고 빌드하기
1. create a job -> pipeline 선택
2. 젠킨스 configure 변경
3. github의 jenkinsfile 변경
Jenkinsfile은 Jenkins Pipeline을 정의하는 텍스트 파일이다.
pipeline : 반드시 맨 위에 있어야 한다 .일종의 작업명세서이다.
CI/CD flow 를 젠킨스에 구현하기 위한 일련의 플러그인의 집합이자 구성이며 젠킨스의 핵심 플러그인 . 젠킨스는 여러 플러그인들을 pipeline 에서 용도에 맞게 사용하고 정의함으로써 CI/CD 를 할 수 있게 해주는 도구.
agent : 어디에서 실행할 것인지 정의한다. 여러 slave node 를 두고 일을 시킬 수 있는데 어떤 젠킨스가 일을 하게 할 것 인지를 지정한다 . 젠킨스 노드 관리에서 새로 노드를 띄우거나 혹은 docker 이미지 등을 통해서 처리할 수 있다.
any, none, label, node, docker, dockerfile, kubernetes agent 가 none 인 경우 stage 에 포함시켜야 한다.
stages : 어떤 일들을 처리할 건지 일련의 stage 를 정의 ( 카테고리 ) pipeline 블록 안에서 한 번만 실행 가능하다.
로컬에서 실행
state별로 실행
build -> test -> deploy echo로 찍기만 함
4. 젠킨스 build 시키기
5. flask 내용 변경후 add, commit, push
변경된 코드로 빌드!
빌드된 Docker image 를 Docker Hub 로 올리기
- 젠킨스에서 Credentials 생성
- Kind : Username with password
- Username : docker hub 아이디
- password : docker hub access key
- ID : docker-hub / Description : docker-hub=
script.groovy
def buildApp() {
echo 'building the applications...'
}
def testApp() {
echo 'testing the applications...'
echo 'Replay'
}
def deployApp() {
echo 'deploying the applicaiton...'
echo "deploying version ${params.VERSION}"
}
return this
jenkinFile
pipeline {
agent any
parameters {
choice(name: 'VERSION', choices: ['1.1.0','1.2.0','1.3.0'], description: '')
booleanParam(name: 'executeTests', defaultValue: true, description: '')
}
stages {
stage("init") {
steps {
script {
gv = load "script.groovy"
}
}
}
stage("Checkout") {
steps {
checkout scm
}
}
stage("Build") {
steps {
sh 'docker build -t flaskapp:v1.0.0 .'
}
}
stage("test") {
when {
expression {
params.executeTests
}
}
steps {
script {
gv.testApp()
}
}
}
stage("Tag and Push") {
steps {
withCredentials([[$class: 'UsernamePasswordMultiBinding',
credentialsId: 'docker-hub',
usernameVariable: 'DOCKER_USER_ID',
passwordVariable: 'DOCKER_USER_PASSWORD'
]]) {
sh "docker tag flaskapp:v1.0.0 ${DOCKER_USER_ID}/flaskapp:${BUILD_NUMBER}"
sh "docker login -u ${DOCKER_USER_ID} -p ${DOCKER_USER_PASSWORD}"
sh "docker push ${DOCKER_USER_ID}/flaskapp:${BUILD_NUMBER}"
}
}
}
stage("deploy") {
steps {
echo 'deploying the applicaiton...'
}
}
}
}
빌드하면 도커에 올라가는걸 알 수 있다!
로컬에 도커 이미지있는걸 확인할 수 있다.
깃허브변경사항 발생시 자동으로 빌드되게 하기
참고
https://www.numpyninja.com/post/build-trigger-using-poll-scm-in-jenkins
Build Trigger using Poll SCM in Jenkins
Welcome to my blog!!If you are here reading this blog it means you already have setup Jenkins, if not please go through detail blog for Jenkins setup : https://www.numpyninja.com/post/step-by-step-implementation-cucumber-bdd-framework-using-java-selenium-j
www.numpyninja.com
PollSCM 설정을 통해 지속적으로 빌드 해보기
인프런 Dowon Lee님의 Jenkins를 이용한 CI/CD Pipeline 구축 강의를 수강하며 작성한 내용입니다.이번에는 젠킨스에서 사용자가 수동으로 버튼을 눌러서 빌드하는게 아닌 자동으로 빌드를 진행하는 방
velog.io