1.フォルダの作成
makejob\jobdsl\folder
folder.groovy
def folderPath = "${FOLDER_PATH}"
folder(folderPath) {
// displayName('Project A')
description("Folder for " + "${FOLDER_PATH}")
}
2.job登録
jobdsl\pipelineJob
pipeline_01_hello_world.groovy
//参考
//https://jenkinsci.github.io/job-dsl-plugin/#path/pipelineJob
//参考
//https://jenkinsci.github.io/job-dsl-plugin/#path/pipelineJob
def folderPath = "${FOLDER_PATH}"
def jobName = "${FOLDER_PATH}" + "/" + "01_hello_world"
// checkout a project into the workspace directory
pipelineJob(jobName) {
// Sets a description for the item.
description("ビルド")
// keepDependencies(false)
logRotator {
numToKeep(5)
artifactNumToKeep(5)
}
triggers {
// Polls source control for changes at regular intervals.
scm('H/5 * * * 0')
// Starts a build on completion of an upstream job, i.e. adds the "Build after other projects are built" trigger.
upstream('makejob', 'SUCCESS')
}
// Adds a workflow definition.
definition {
// Loads a pipeline script from SCM.
cpsScm {
scm {
// Adds a Subversion SCM source.
svn{
// At least one location must be specified.
location('http://192.168.40.206:18080/svn/jenkins/trunk/terasoluna-tourreservation-5.7.0.RELEASE') {
// Sets credentials for authentication with the remote server.
credentials('49d7bee5-1182-4c96-932a-c5a01e109c2b')
// If set, disables externals definition processing.
ignoreExternals(true)
}
}
}
scriptPath('Jenkinsfile')
}
}
}
//queue(jobName)
3.ジョブ登録とフォルダ作成
makejob\pipeline
pipeline_00_seed_pipeline.groovy
pipeline {
agent any
stages {
stage('create decrative-pipeline jobs') {
environment {
FOLDER_PATH = "test-pipeline"
}
steps {
jobDsl(
targets: [
'jobdsl/folder/folder.groovy',
'jobdsl/pipelineJob/pipeline_01_hello_world.groovy'
'jobdsl/pipelineJob/pipeline_24_download_beautiful_landscape_video.groovy',
// 'jobdsl/pipelineJob/pipeline_25_upload_artifact_to_dropbox.groovy',
].join('\n'),
additionalParameters: [
FOLDER_PATH: "${FOLDER_PATH}"
// ,
// GIT_HUB_OWNER_AND_PROJECT: "sakamaki-y123/jenkins-continuous-delivery",
// GIT_HUB_PROTOCOL:"https",
// GIT_HUB_BRANCH: "*/master"
]
)
}
}
}
}
4.buildジョブ
Jenkinsfile
pipeline {
agent any
stages {
stage('build') {
agent {
docker {
label 'master'
image 'maven:3.8.3-amazoncorretto-8'
// マウント
// args '-v /root/Docker/Jenkins/mavenCache:/var/maven'
// cpu制限 30%
// args '-v /root/Docker/Jenkins/mavenCache:/root/.m2:z -u root --cpus 0.3'
// マウント + 実行cpu指定
args '-v /root/Docker/Jenkins/mavenCache:/root/.m2:z -u root --cpuset-cpus 1'
// 既存のワークスペースを使い続ける
reuseNode true
}
}
steps {
// Run Maven on a Unix agent.
// DB初期化
//sh "mvn -f terasoluna-tourreservation-initdb/pom.xml sql:execute"
// 一部だけ削除
// sh "rm -rf /root/.m2/repository/org/terasoluna"
// build war作成
sh "mvn clean package -DskipTests=true"
}
post {
success {
archiveArtifacts 'terasoluna-tourreservation-web/target/*.war'
}
}
}
stage('docker build') {
steps {
sh "ls -la ./terasoluna-tourreservation-web/target"
// sh 'docker build -t test-tomcatinterasoluna:0.1 .'
}
}
stage('triggerChildJob') {
steps {
// build job: "test-pipeline/01_hello_world", wait: true
// 他のジョブを非同期(wait: false)で実行
build job: "test-pipeline/01_hello_world", wait: false
}
}
}
}