[Jenkins] Pipeline 구성 (1) configure & Jenkinsfile
파이썬 웹 애플리케이션을 코드 정적 분석 -> Docker image Build -> ECR Push -> Deploy 하는 과정을
Jenkins로 Build 하는 Pipeline을 구성해보고자 한다.
[준비 사항]
- Git repository (Private Repository라면 Token 발급 필요)
- Jenkins
- Private ECR
- AWS Access Key
1. Plug-in 설치
플러그인 설치는 Jenkins 관리 -> Plugins -> Available plugins 에서 설치를 진행한다
- CloudBees AWS Credentials
- Docker Pipeline
- Amazon ECR
- AWS Global Configuration
- Pyenv Pipeline
2. Webhook 설정
본인의 Git repository에서 Setting -> Webhooks으로 들어간 후 ADD Webhook을 클릭
젠킨스 URL 뒤에 /github-webhook/ 을 붙여준다.
http://jenkinsURL:8080/github-webhook
3. 권한 정보 Jenkins에 저장
Git Repository에 대한 권한과 Docker Build를 위해 EC2 권한과 ECR 권한을 받아야한다.
Build를 위한 Maven과 Docker 또한 설치해준다.
Git
Jenkins 관리 -> Credentials -> System -> Global credentials -> Add Credentials
*ssh를 이용해서 등록해도 됨
Maven
Jenkins 관리 -> Tools -> Maven installations
AWS
Jenkins 관리 -> AWS
(AWS 메뉴가 없는 경우) Jenkins 관리 -> Credentials -> System -> Global credentials -> Add Credentials
리전 설정 후 Add 를 눌러준다.
Docker
Jenkins 관리 -> Tools -> docker installations
4. 파이프라인
젠킨스 파이프라인의 생성은 3가지 방법으로 가능하다.
1. WEB UI를 통해 Job 구성에서 직접 작성
2. SCM을 이용하여 Jenkinsfile에 스크립트 코드 작성 (Github에서 pull)
3. Blueocean 플러그인으로 UI를 통해 스크립트 코드 작성 (Github에서 관리)
내가 사용 할 방식은 2번 방식이다. 젠킨스 파일 스크립트를 작성해야 하는데,
젠킨스파일의 구성은 다음과 같다.
pipeline {
agent any
stages() {
stage('') {
steps() {
}
}
Pipeline
파이프라인을 정의하기 위해서 반드시 포함해야한다.
최상위 레벨이 되어야하며, { }로 정의한다.
Section
- agent
파이프라인을 실행하는 젠킨스 에이전트를 말한다.
any, none, label, node, docker, dockerfile, kubernetes를 파라미터로 포함한다.
agent는 파이프라인 최상위에 포함되며, none으로 작성되었을 경우 stage에 포함되어야한다.
- stages
하나 이상의 stage에 대한 모음을 정의한다.
pipeline 블록 안에서 한번만 실행될 수 있으며 stages 내부에는 여러 stage를 포함할 수 있다.
- stage
파이프라인의 각 단계를 얘기하며, 어떤 작업을 할 지 선언한다.
Jenkinsfile은 다음 포스팅에서
직접 생성해보며 다뤄보자
참조
https://waspro.tistory.com/554
https://velog.io/@revelation/Jenkins-pipeline-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0
'💽 CICD > Jenkins' 카테고리의 다른 글
[Jenkins] Execute Shell 사용하기 (0) | 2023.10.26 |
---|---|
[Jenkins] Pipeline 구성 (3) Docker Image ECR에 Push (0) | 2023.08.08 |
[Jenkins] Pipeline 구성 (2) Pipeline & lint (0) | 2023.08.03 |
[Jenkins] 관리자(admin) 암호 재설정 (0) | 2023.08.01 |
[Jenkins] 우분투(Ubuntu) 22.04에 젠킨스 설치 (0) | 2023.07.26 |