Documents

pipeline, job dsl

Multibranch Pipeline을 사용한 이유   예전에는 master/develop 브랜치는 webhook을 사용하고, PR 분석은 [GitHub Pull Request Builder](https://plugins.jenkins.io/ghprb/) 플러그인을 사용했었습니다. 하지만 GitHub Pull Request Builder 플러그인은 앞으로 [GitHub Branch Source Plugin](https://plugins.jenkins.io/github-branch-source/)로 마이그레이션 될 것이라 가이드하고 있었고, CI/CD를 운영하면서 두 개를 관리해야하는 불편함도 있었습니다. [Multibranch Pipeline](https://plugins.jenkins.io/workflow-multibranch/)를 사용하면 하나의 저장소(repository)에 대해서 하나의 jenkins item으로 관리할 수 있었고, Jenkins에서 직접 폴더를 통해 PR을 구분하지 않아도 되며, 블루 오션 UI를 통해서도 명확하게 관리할 수 있었습니다. - GitHub 조직을 전체로 관리하려면 "GitHub Organization" 아이템으로 생성할 수 있습니다. - Multibranch Pipeline에서 자동으로 추가되는 commit status를 없애기 위한 플러그인: [Disable GitHub Multibranch Status](https://plugins.jenkins.io/disable-github-multibranch-status/)

  여기서 말한 Pipeline은 Jenkins의 Pipeline을 의미합니다. Declarative and Scripted Pipeline은 software delivery pipeline의 일부를 작성한 DSL입니다. Scripted Pipeline은 일부 제한된 형태의 Groovy 문법으로 작성합니다. Declarative Pipeline은 Jenkins Pipelie에 최근에 추가된 것으로 기존에 제공하던 Scriped Pipeline 보다 비교적 단순하고 Jenkins와 관련된 기능을 제공하는 파이프라인입니다.

— Pipeline

Scripted pipeline

Scripted Pipeline으로 작성하면 log 가져올 때 권한 이슈가 있습니다. 빌드 로그 확인이 필요하다면 Declarative Pipeline를 사용하시기 바랍니다.

def logContent1 = Jenkins.getInstance()
    .getItemByFullName(env.JOB_NAME)
    .getBuildByNumber(
        Integer.parseInt(env.BUILD_NUMBER))
    .logFile.text
def logContent2 = currentBuild.rawBuild.getLog(100)

References

Declarative pipeline