CI/CD 란?
- CI(Continuous Integration, 지속적인 통합): 지속적인 빌드와 테스트 자동화를 의미합니다.
- CD(Continuous Delivery, 지속적인 서비스 제공 또는 지속적인 배포) : 배포 자동화를 의미합니다.
Jenkins 란?
자바 기반 웹 애플리케이션으로 CI/CD을 위한 도구입니다. 즉 빌드, 테스트, 배포를 자동화해 줍니다.
https://docs.docker.com/get-docker/
docker run -d -u root -p 9090:8080 --name=jenkins -v c:/Users/[userName]/dist:/var/jenkins_home/dist jenkins/jenkins
에러 발생
docker jenkins 설치 오류
error during connect : In the default daemon configuration on Windows, the docker client must be run elevated to connect...
=> wsl2 설치하니까 해결되었다.
일반 cmd 환경에서는 안 됨
Gitlab -> Access Token 발급받고 기억할 수 있는 장소에 기록 해 놓는다.
DashBoard > Manager Jenkins > Plugin Manager
NodeJS, Blue Ocean, Gitlab에 관련된 것들은 다 설치를 해준다
DashBoard > Manager Jenkins > configure System
Connection name, URL 적절히 작성
Credentials은 GitLab API token -> Add 버튼 클릭
Jenkins 선택
위와 같이 발급받은 Token을 넣어준다
Add 클릭
Test Connection 클릭 후 Success 뜨면 성공
맨 하단의 Apply후 저장 클릭하면 Gitlab 연결 완료
배포될 폴더 dist 생성
mkdir dist
Nginx 설치
docker run --name nginx -d -p 80:80 -v c:/Users/[userName]/dist:/usr/share/nginx/html nginx
이름 적당히 넣고, Pipeline 선택 후 OK 클릭
Gitlab에서 Jenkins에 트리거를 전송하기 위해서는 Secret Token이 필요하다
Build Trigger -> Build when a change is pushed to GitLab.
고급 버튼 클릭
Generate 클릭하면 Secret Token 생성
Settings > Webhooks
url에 jenkins 작업 item URL 입력
발급받은 Secret Token도 입력
오류 발생
Url is blocked: Requests to localhost are not allowed
발생
localhost라서 보안상 거부
ngrok 를 다운받은후
https://ngrok.com/download
ngrok http 9090 실행
포워딩 주소로 웹혹 걸기
구성 -> Pipeline
Definition -> Pipeline script from SCM
Script Path : Jenkinsfile 설정 후
Jenkinsfile 만들어 Gitlab에 푸시
Jenkinsfile은 다음과 같이 일단 기본형태로 구성
pipeline {
agent any
stages {
stage('Hello') {
steps {
echo 'Hello World'
}
}
}
}
빌드 성공
JenkinsFile
pipeline {
agent any
tools {
nodejs "node"
}
stages {
stage('run') {
steps {
sh "npm install"
sh "npm install -g @vue/cli"
sh "npm build"
}
post{
success{
sh "mv /var/jenkins_home/workspace/pipeline_test/dist /var/jenkins_home/dist"
}
}
}
}
이 때 NodeJS 등록해주어야함
Dashboard > Jenkins 관리 > Global Tool Configuration
빌드 성공 확인
pipeline_test의 빌드 완료된 dist 파일을 /var/jenkins_home/dist
로 이동시켜주면 자동배포가 완료된다.
(이를 pipeline script - success{} 안에 넣어주어도 된다)
Open in Browser
어머 너무 유용하네용