세미나
Jenkins Pipeline - Intro
nineDeveloper
2019. 10. 22. 21:17
728x90
Who am I
- TOAT 클라우드 서비스 Quality Assurance
- 테스트 자동화, Continuous Integration 지원
교육 목표
- Jenkins UI를 벗어나 Pipeline as code를 시작하는 방법 습득
- Jenkins Pipeline 기본 문법 배우기
- UI로 구성한 (간단한) Job을 Pipeline으로 변경할 수 있다.
교육 내용
- Jenkins Pipeline 소개
- Jenkins Pipeline 기본 문법
- 빌드 실패 관리
- Jenkinsfile
- Reusable Pipeline Libraries
- parallel
- Replay, Script Approval, @NonCPS
- GitHub 연동
Pipeline
- 일련의 동작들을 자동화
- 여러가지 도구 활용
CI/CD Pipeline
CI/CD Pipeline with Jenkins
Pipeline as Code 배경
- CI/CD가 복잡해짐
- as Code 대세
- Pipeline as code
- Infrastructure as code
- Monitoring as code
- as Code 장점
- 형상 관리
- 모듈화, 재사용 => 유지보수 용이
- 비슷한 형태의 많은 Job을 손쉽게 관리할 수 있음
Sample: Jenkins JUnit 플러그인
buildPlugin()
- buildPlugin() 코드 (라이브러리)
https://github.com/jenkins-infra/pipeline-library/blob/master/vars/buildPlugin.groovy
def call(Map params = [:]) {
// Faster build and reduces IO needs
properties([ durabilityHint('PERFORMANCE_OPTIMIZED'), buildDiscarder(logRotator(numToKeepStr: '5')), ])
def repo = params.containsKey('repo') ? params.repo : null
def failFast = params.containsKey('failFast') ? params.failFast : true
def timeoutValue = params.containsKey('t ...
참고 자료
- https://jenkins.io/doc/book/pipeline/#overview
- Pipeline Steps
- https://github.com/jenkinsci/pipeline-examples
- https://www.guru99.com/jenkins-pipeline-tutorial.html
Jenkins Pipeline
History
- Jenkins 1.0
- 플러그인으로 제공 (Workflow 플러그인 -> Pipeline 플러그인)
- Pipeline 플러그인
- 2014/11/25, 1.0 출시
- Jenkins 2.0
- 2016/04/20 출시
- Big Changes
- Pipeline이 기본 기능으로 제공됨
Scripted
- a general purpose DSL
- groovy script
오늘 교육은 Scripted 방식을 설명합니다.
Declarative
- well-defined structure
- less coding
- easier transition from Freestyle to pipeline-as-code
- tighter and clearer syntax checking
CI Tools
- Circle CI, Travis CI, Jenkins
https://hackernoon.com/continuous-integration-circleci-vs-travis-ci-vs-jenkins-41a1c2bd95f5
CircleCI
- 빌드 설정
# [git_repository]/.circleci/config.yml
version: 2
jobs:
build:
docker:
- image: debian:stretch
steps:
- checkout
- run:
name: Greeting
command: echo Hello, world.
- run:
name: Print the Current Time
command: date
- 빌드 결과 (Circle CI console)
- 기본으로 변경이 있으면 자동 빌드됨
- github commit 정보에 빌드 결과가 추가됨
Jenkins...
Jenkins Configuration as Code (jcasc)
- https://jenkins.io/projects/jcasc/
- Jenkins 설정을 코드로 관리
- 현재 발전 중인 기능
CloudBees Jenkins Distribution
- https://www.cloudbees.com/products/cloudbees-jenkins-distribution
- CloudBees에서 제공하는 Jenkins 바이너리
- 오픈 소스 버전과 기능의 차이는 없다.
- Jenkins 업그레이드, 플러그인 관리 편의성을 제공한다.
Jenkins World
728x90