젠킨스의 대표적인 Plugins
-
Credentials Plugin
- Jenkins는 단지 서버이기 때문에 각종 리소스에 접근하기 위해서는 여러가지의 중요한 정보(key)들이 필요하다.
ex. 리소스로는 클라우드 리소스등에 대한 ssh접근을 의미한다. - AWS token, Git access Token, secret key, ssh등이 정보에 포함된다
- 이러한 중요한 정보들을 저장해주는 플러그인이다.
- Jenkins는 단지 서버이기 때문에 각종 리소스에 접근하기 위해서는 여러가지의 중요한 정보(key)들이 필요하다.
-
Git Plugin
- jenkins에서 git에 대한 소스코드를 가져와서 빌드할수 있게 도와주는 플러그인
-
Pipeline
- 연속적인 작업들을 젠킨스에서 하나의 파이프라인(작업)으로 묶어서 관리할수 있게 만드는 플러그인이다.
-
Docker plugin ans Docker Pipeline
-
Docker agent를 사용하고 jenkins에서 도커를 사용하기 위한 플러그인
지금은 Docker를 사용하지 않아 해당 플러그인을 사용하지 않았는데 추후 Docker를 적용할때 사용해봐야겠다.🤣
-
젠킨스의 파이프라인
젠킨스 파이프라인이란?
CI/CD 파이프라인을 젠킨스에 구현하기 위한 일련의 플러그인의 집합이자 구성
젠킨스의 Pipeline을 작성하는데 Declarative, Scripted 방식이 있다. 이 두가지는 문법적인 차이점이 있다. Declarative방식이 Scripted방식보다 더 풍부한 구문 기능을 제공하며 간편하게 작성할수 있다.
Jenkins Pipeline의 주요항목
-
Pipeline
- 빌드, 테스트, 배포 단계를 포함하는 전체 빌드 프로세스를 정의한다.
- 선언형 파이프라인(Declarative Pipeline) 구문의 핵심 부분
Jenkinsfile
의 시작 지점에 선언
-
Node
- 스크립트형 파이프라인 구문의 핵심 부분
Jenkinsfile
의 시작 지점에 선언
-
Stage
- 전체 파이프라인 단계를 통해 수행되는 작업의 하위 집합을 의미한다.
ex. jenkins 파이프라인을 빌드→테스트→배포라 한다면 빌드,테스트,배포가 각 Stage를 의미한다.
- 전체 파이프라인 단계를 통해 수행되는 작업의 하위 집합을 의미한다.
-
Step
- 하나의
stage
안에 작업을 정의하는 부분
- 하나의
선언형 파이프라인(Declarative Pipeline) 문법
Jenkinsfile
을 작성하는 문법이다. Groovy
문법과 비슷하지만 약간의 차이점이 있다.
선언형 파이프라인 문법
은 인터넷에 검색해보면 잘 나오기 때문에 큰틀의 개념을 정리할 것이다.
//Jenkinsfile
pipeline {
agent any //Agent Sections
stages { //Stages Sections
stage('Prepare') { //Steps
agent any
steps {
...
}
post { //Post Section
failure{
error "Fail Cloned Repository"
}
}
}
stage('Build') {
agent any
steps{
...
}
post{
failure{
error 'Fail Build'
}
}
}
}
}
-
Pipeline의 Sections의 구성 - Sections에 아래의 항목들이 포함된다.
-
Agent Section: 여러 slave를 두고 작업을 할때 어떤 젠킨스가 일을 할지 정의
-
Post Section: 각 스테이지가 끝난후 후속 조치기능을 정의 (ex.Success, Failure, always, cleanup)
-
Stages Section: 어떤 일을 처리할것인가에 대한 Stage 정의(ex. git clone, build, test, devlop)
-
Steps: 스테이지안에서 실행할 작업을 정의
-
Declaratives
: Environ ment (파이프라인 및 stage scope의 환경변수 설정)
: Parameter (파이프라인 실행시에 받을 파라미터)
: Triggers (어떤 형태로 트리거 되는지 정의)
: When (언제 실행되는지 정의)
각 항목에 세부적인 문법, 옵션도 다양하게 존재하지만 이 부분은 필요에 따라 찾아보면 될거 같다.
-
Jenkins Freestyle Project vs Pipeline Project
젠킨스에서 Pipeline은 한곳에서 작업을 시작해서 일렬로 혹은 **여러갈래(병렬처리)**로 뻗어나갔다가 다시 한곳으로 모이면서 마무리되는 작업의 흐름입니다.
Freestyle project 방식은 앞서 말했던 정의한 파이프라인이 일렬로만 처리되는 Pipeline 그렇기 때문에 파이프라인의 구조를 마음대로 바꿀수 없고 커스텀마이징 또한 할수 없다.
예를 들어 한프로젝트에서 2곳의 git repository에 접근하여야 되는 상황에서 Freestyle project은 접근 방법을 지원하지 않고 한곳에서만 인증을 받아 clone을 할수 있습니다.
그치만 진입장벽 측면, 참고할자료가 많은 측면에서는 Freestyle project가 좋다고 합니다.