세미나

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

(source: https://edwardthienhoang.wordpress.com/2019/04/11/cicd-continuous-delivery-pipeline-with-docker-compose-and-jenkins/)

Pipeline as Code 배경

  • CI/CD가 복잡해짐
  • as Code 대세
    • Pipeline as code
    • Infrastructure as code
    • Monitoring as code
  • as Code 장점
    • 형상 관리
    • 모듈화, 재사용 => 유지보수 용이
  • 비슷한 형태의 많은 Job을 손쉽게 관리할 수 있음

Sample: Jenkins JUnit 플러그인

buildPlugin()

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 ...

참고 자료

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)

CloudBees Jenkins Distribution

Jenkins World

728x90