Created
January 24, 2019 18:05
-
-
Save albertorm95/525b0f9bf631eb68b3b4a4e0895f7e00 to your computer and use it in GitHub Desktop.
This is an example of a pipeline that clone app repository create its Docker Image and then it clones a repository where all Stacks files are save and it updates an specific Stackfile then commits it and push it to master.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pipeline { | |
agent any | |
options { | |
skipDefaultCheckout(true) | |
} | |
stages { | |
stage("Clone Repository") { | |
steps { | |
slackSend channel: '#<Channel>', color: 'good', message: "$JOB_NAME - $BUILD_DISPLAY_NAME Started, (<$BUILD_URL|Open>)", tokenCredentialId: 'Slack-Token' | |
sshagent(['jenkins-github-ssh-key']) { | |
sh 'git clone --single-branch -b ${BRANCH_NAME} git@github.com:<GitHub Repository>' | |
} | |
} | |
} | |
stage("Build") { | |
steps { | |
dir('<Repositoy Name>') { | |
script { | |
sh "docker build -t <Private Registry>/<NameSpace>/<Repository>:$BUILD_NUMBER" | |
sh "docker push <Private Registry>/<NameSpace>/<Repository>:$BUILD_NUMBER" | |
} | |
} | |
} | |
} | |
stage("Update Stackfile") { | |
steps { | |
sshagent(['jenkins-github-ssh-key']) { | |
sh 'git clone --single-branch -b master git@github.com:<GitHub Path>/stackfiles.git' | |
dir('stackfiles/devCluster/app') { | |
sh 'git config user.name <GitHub User Name>' | |
sh 'git config user.email <GitHub User Email>' | |
script { | |
sh 'sudo -E perl -i -pe \'s/\\/app\\:\\d(.*)/\\/app:$ENV{"BUILD_NUMBER"}/g\' dev-stack.yml' | |
} | |
sh "git add ." | |
sh 'git commit -m "Jenkins - ${JOB_NAME} v${BUILD_NUMBER}" -m "${BUILD_URL}"' | |
sh 'git push origin master' | |
} | |
} | |
} | |
} | |
stage("Development Deploy") { | |
steps { | |
dir('stackfiles/devCluster/app') { | |
script { | |
sshPublisher(publishers: [sshPublisherDesc(configName: '<Server>', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'cd devCluster/app/ && sudo -E docker stack deploy -c dev-stack.yml dev', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: 'devCluster/app', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'dev-stack.yml')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)]) | |
} | |
} | |
} | |
} | |
} | |
post { | |
success { | |
slackSend channel: '#<Channel>', color: 'good', message: "$JOB_NAME - $BUILD_DISPLAY_NAME Succeed, (<$BUILD_URL|Open>)", tokenCredentialId: 'Slack-Token' | |
} | |
failure { | |
slackSend channel: '#<Channel>', color: 'danger', message: "$JOB_NAME - $BUILD_DISPLAY_NAME Failed, (<$BUILD_URL|Open>)", tokenCredentialId: 'Slack-Token' | |
} | |
unstable { | |
slackSend channel: '#<Channel>', color: 'warning', message: "$JOB_NAME - $BUILD_DISPLAY_NAME Unstabled, (<$BUILD_URL|Open>)", tokenCredentialId: 'Slack-Token' | |
} | |
cleanup { | |
deleteDir() | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment