- 오픈 소스인 자동화 서버이다.
- 다양한 플러그인을 제공한다.
- Pipeline
- Authentication/Authorization
- Git
- Docker
- 다양하게 확장이 가능하다.
docker-compose up -d
docker exec <CONTAINER_NAME> cat /var/jenkins_home/secrets/initialAdminPassword
- 젠킨스 플러그인들의 묶음
- 소스 코드를 체크아웃, 빌드, 테스트, 스테이지 배포, 프로덕션에 배포 같이 일련의 묶음을 나타낸다.
- Pipeline 플러그인을 설치해야 사용 가능하다.
- CD를 서포트하기 위해 생겼다.
- Jenkinsfile의 작업 명세서를 따른다.
- Groovy 스크립트를 작성할 수 있다.
- Java API Referencing을 한다거나 JDK의 function을 호출한다거나 프로그래밍을 할 수 있다.
- 작업의 명세가 복잡하다.
- Jenkins DSL을 따른다.
- 복잡한 로직들이 Jenkins 플러그인으로 빠졌다.
- 때문에 간단 명료하게 작성할 수 있다.
- agent
- stages
- steps
- post
- parameters
- environments
- when
- ...
위치에 따른 역할이 다르다.
pipeline 블록 바로 아래있는 글로벌 agent 설정 같은 경우에는 전체 일련의 잡들이 어떤 노드에서 실행될지를 지정하는 Section
각 stage 안에 지정되어 있는 agent 설정 같은 경우에는 스테이지만 특정 agent 노드에 실행되라는 뜻이다.
- none
- any : 어떤 노드들에서 실행되라
- label : 특정 라벨이 달려있는 노드들에 작업이 실행되라
- node
- docker
- dockerfile
- kubernates
agent { label 'service || batch' } : service 또는 batch라는 라벨이 달려있는 노드를 실행해라.
agent { label 'service && batch' } : service 와 batch라는 라벨이 달려있는 노드에서만 실행해라.
agent { label 'service' } : service 라벨이 달려있는 노드에서만 실행해라.
agent { label 'batch' } : batch 라벨이 달려있는 노드에서만 실행해라.
Sections
- Stages : 순차적인 작업의 명세인 stage들의 묶음
- Steps : stage안에서의 실행되는 단계
Directives
- Stage :
- agent 설정 (optional)
- step들의 묶음
- 위치에 따라 stages들의 작업이 끝난 후 추가적인 steps 혹은 stage에 steps들의 작업이 끝난 후 추가적인 step
- Condition
- always : 항상 실행
- changed
- fixed
- regression
- aborted
- failure : 실패했을 때 실행
- success : 성공했을 때 실행
- unstable
- unsuccessful
- cleanup
- key = value
- pipeline 내부에서 사용할 환경변수
- credentials()를 통해 Jenkins credential에 접근 가능하다.
- pipeline을 trigger할 때 입력 받아야할 변수를 정의한다.
- Type
- string
- text
- booleanParam
- choice
- password
- stage를 실행 할 조건을 설정한다.
개발자가 깃허브에 푸쉬를 하면 젠킨스에서 트리거를 받아서 여러가지 잡들을 실행한다.(도커 이미지를 빌드하고 도커 레지스트리에 푸쉬하고 서버에 배포, 슬랙에 알람 등등)