개인 태그

젠킨스 필름을 쓸 때 많은 것을 떠올리기 위한 개인 노트다.
손바닥
docker run -p 8080:8080 -v /Users/yy_yank/jenkins:/var/jenkins_home jenkins
염가 좌석
무대를 지목하고 싶어요.
stage("모든 관문 이름")

stage('prepare'){
    // prepare...
}

stage('test'){
    // test...
}

stage('build'){
    // build...
}


마스터/슬레이브 장치 지정하기
node(주 또는 종명)
stage('windowsでなにかする') {
    node('windows') {
        // do something
    }
}
노드 이름의 매개 변수를 생략하면 마치 주인이 된 것 같다.
stage('masterでなにかする') {
    node{
        // ここはマスター
    }
}
파일의 존재 확인
파일 경로
if(fileExists("./${target}")) {
  echo "file exists ${target}"
}
서류를 만들고 싶어요.
파일 경로
stage('write') {
    node{
        writeFile file:"./hogehoge.txt", text:"hogehoge~",  encoding:"UTF-8"
    }
}
노드 안에서 하지 않으면 어디에 써야 할지 모르겠다는 느낌을 준다.
Started by user yy_yank
[Pipeline] stage
[Pipeline] { (write)
[Pipeline] writeFile
Required context class hudson.FilePath is missing
Perhaps you forgot to surround the code with a step that provides this, such as: node
[Pipeline] }
[Pipeline] // stage
[Pipeline] End of Pipeline
org.jenkinsci.plugins.workflow.steps.MissingContextVariableException: Required context class hudson.FilePath is missing
디렉토리 삭제
dir(카탈로그 이름)에 카탈로그를 지정하고 deleteDir()를 사용합니다.
dir('target') {
    deleteDir()
}
퀘스트를 생성하고 싶은artifacts
archiveArtifacts
참조:
// This shows a simple example of how to archive the build output artifacts.
node {
    stage "Create build output"

    // Make the output directory.
    sh "mkdir -p output"

    // Write an useful file, which is needed to be archived.
    writeFile file: "output/usefulfile.txt", text: "This file is useful, need to archive it."

    // Write an useless file, which is not needed to be archived.
    writeFile file: "output/uselessfile.md", text: "This file is useless, no need to archive it."

    stage "Archive build output"

    // Archive the build output artifacts.
    archiveArtifacts artifacts: 'output/*.txt', excludes: 'output/*.md'
}
작업 실패
오류 메시지
stage('test') {
    node {
        if(fileExists("./あやしいファイル.txt")) {
            error "このファイルはダメ!"
        }
    }
}
입력 대기 상태로 들어가려면
input
stage('write') {
    node{
        writeFile file:"./hogehoge.txt", text:"hogehoge~",  encoding:"UTF-8"
    }
}

stage('failure') {

    node {
        input "心の準備はOK?"
        if(fileExists ("./hogehoge.txt")) {
            error "このファイルはダメ!"
        }
    }
}
Pipeline Examples
echo
echo 직접 사용 가능
stage ('echo') {
    echo "\( 'ω')/ウオオオオオアアアーーーッ!"
}
조개를 운행하고 싶다
sh "명령"
sh 'cat nyaan.txt'
Jenkins에 등록된 인증 정보를 사용하고자 합니다.
withCredentials 사용
withCredentials(
           [[$class: 'UsernamePasswordMultiBinding', 
             credentialsId: 'test',
             usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]
) {
        sh 'echo uname=$USERNAME pwd=$PASSWORD'
}
환경 변수를 빠르게 사용하려면
withEnv 사용
참조:
withEnv(['MYTOOL_HOME=/usr/local/mytool']) {
    sh '$MYTOOL_HOME/bin/start'
}
Parallel을 실행하고 싶어요.
parallel
:
stage('Test') {
    parallel linux: {
        node('linux') {
            checkout scm
            try {
                unstash 'app'
                sh 'make check'
            }
            finally {
                junit '**/target/*.xml'
            }
        }
    },
    windows: {
        node('windows') {
            /* .. snip .. */
        }
    }
}
나는 잠시 일을 멈추고 싶다
sleep 사용
stage ('ムスカ') {
    echo "3分間待ってやる"
    sleep 180
}
몇 번 불안정한 처리를 시키고 싶어요.
retry 사용
retry(10) {
    // some block
}
특정한 상태를 기다리다
waitUntil을 사용합니다.
화면이 나올 때까지.
waitUntil {
    try {
        sh 'wget -q http://localhost:8080 -O /dev/null'
        return true
    } catch (exception) {
        return false
    }
}
시간 초과 설정
timeout 사용
timeout(120){
    waitUntil {
        try {
            sh 'wget -q http://localhost:8080 -O /dev/null'
            return true
        } catch (exception) {
            return false
        }
    }
}
메일 보내려고요.
메일 사용
mail bcc: '[email protected]', body: 'this is mail body', cc: '[email protected]', from: '', replyTo: '', subject: 'this is mail subject', to: '[email protected]'
plugen 사용하고 싶어요.
나침반이면 사용할 수 있어요.
참조:
Pipeline Examples
  • git
  • git([
        credentialsId: 'gitの認証情報でjenkinsに登録してるid',
        url          : 'http://hogehoge.git',
        branch       : 'master'
    ])
    
    여러 가지 생각이 안 날 때.
    http:/{호스트 이름]/job/{작업 이름]/pipeline-syntax/
    GUI에서 스크립트 생성 선택 가능
    참조 링크
    Usinga Jenkins file에서 참조
    Plugin Compatibility with Pipeline
    https://jenkins.io/doc/book/pipeline/syntax/
    https://jenkins.io/doc/pipeline/examples/
    https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/
    http://qiita.com/comefigo/items/fc7aad310235caf89fcd

    좋은 웹페이지 즐겨찾기