Thoughtworks公司pipe_script脚本 env.SCM_URL = "[email protected]:root/HNA-Brightness.gi
.
Thoughtworks公司pipe_script脚本
.env.SCM_URL = "[email protected]:root/HNA-Brightness.git"env.SCM_CREDENTIALS = "080207fb-ee29-47be-b228-66cbd8fd801a"env.BUILD_IMAGE_CORE = "brightness/core"env.BUILD_IMAGE_FRONT = "brightness/front"env.BUILD_VERSION = nullenv.REPO_CREDENTIALS = "registry-login"env.REPO_SNAPSHOT = "http://xa-brightness-1.chinacloudapp.cn:5002"node { stage 'CHECKOUT' git url: "${env.SCM_URL}", credentialsId: "${env.SCM_CREDENTIALS}" env.BUILD_VERSION = version() stage 'BUILD WAR' docker.image('baselibrary/gradle:jdk8').inside('-v /root/.gradle:/root/.gradle -v /usr/sbin/vault:/usr/sbin/vault -v /etc/hosts:/etc/hosts') { sh 'cd brightness-core&&gradle war -Penv=dev' } stage 'COMPASS' docker.image('baselibrary/nodejs:5').inside('-v /root/.npmrc:/root/.npmrc -v /etc/hosts:/etc/hosts') { sh 'npm install&&npm run build' } stage 'PACKAGE' sh ''' cp config/coreDockerfile Dockerfile ''' def dockerImageCore = docker.build("${env.BUILD_IMAGE_CORE}:${env.BUILD_NUMBER}") sh ''' cp config/frontendDockerfile Dockerfile ''' def dockerImageFRONT = docker.build("${env.BUILD_IMAGE_FRONT}:${env.BUILD_NUMBER}") stage 'PUBLISH' docker.withRegistry("${env.REPO_SNAPSHOT}", "${env.REPO_CREDENTIALS}") { dockerImageCore.push("${env.BUILD_NUMBER}") } docker.withRegistry("${env.REPO_SNAPSHOT}", "${env.REPO_CREDENTIALS}") { dockerImageFRONT.push("${env.BUILD_NUMBER}") } stage 'DEPLOY' env.RANCHER_STACK = "brightness-DEV" sh "sed -i 's#%BUILD_IMAGE_CORE%#${env.BUILD_IMAGE_CORE}:${env.BUILD_NUMBER}#g' config/docker-compose.yml" sh "sed -i 's#%BUILD_IMAGE_FRONT%#${env.BUILD_IMAGE_FRONT}:${env.BUILD_NUMBER}#g' config/docker-compose.yml" sh ''' cd config&&rancher-compose -p $RANCHER_STACK up -d -c --upgrade''' stage 'ARCHIVE' archive 'brightness-data-service/build/libs/brightness-data-service-*.jar' archive 'brightness-core/build/libs/brightness-core-*.war' archive 'dist/*'}/*node{ stage 'CHECKOUT TEST ' git url: "${env.SCM_URL_TEST}", credentialsId: "${env.SCM_CREDENTIALS}" stage "Functional Test" docker.image('baselibrary/ruby:2.5').inside('-e DOMIAN=dev -v /etc/hosts:/etc/hosts') { sh 'cucumber features --tags=@e2e DOMAIN=dev' }}*/ def version() { def matcher = readFile('brightness-core/build.gradle') =~ 'version = /'(.*)/'' matcher ? matcher[0][1] : null}
.
pipeline官方提供的脚本
.// Run this on the master node:node { // The JDK is configured as a tool with the name 'jdk-8u77' in the Jenkins 'Global Tool Configuration' env.JAVA_HOME="${tool 'jdk-8u77'}" env.PATH="${env.JAVA_HOME}/bin:${env.PATH}" // Maven is configured as a tool with the name 'M3' in the Jenkins 'Global Tool Configuration'. def mvnHome = tool 'M3' stage 'Checkout' // Configure the credential in Jenkins, and use the credential's ID in the following step: git url: 'ssh://[email protected]/fs/fs-knowledge-editor.git', credentialsId: '8dbfb6d2-2549-4c6e-9a6e-994ae8797efc' stage 'Build and tag' // Define the version of this build. // BASE_VERSION is defined as a build parameter in the UI definition of the job. // Note how Groovy code is used to format the number of the current build. def version = "${BASE_VERSION}-J2TEST-" + currentBuild.number.toString().padLeft(4,'0') // Execute the maven command as a shell command step. On Windows, a 'bat'-step would be used instead. sh "${mvnHome}/bin/mvn clean verify -f KnowledgeEditor/pom.xml -Dfs.version=${version}" // Archive the zip file for access in through the Jenkins UI, or for other uses. archive 'KnowledgeEditor/com.computas.fs.ke.products/target/products/*.zip' // Each build is tagged with an annotated tag. // There is no pipeline plugin for this (the Git Publisher plugin is not compatible), // so everything has to be implemented using shell commands. // First, we have to configure git with the mandatory user information: sh "git config user.name /"Jenkins Pipeline/"" sh "git config user.email [email protected]" // Next, tag this commit. def msg = "/"Automatically created tag ${version}/"" sh "git tag -a -m ${msg} ${version}" // Finally, push to the repo. // For this to work, the ssh keys must be available in Jenkins' ~/.ssh folder sh "git push origin ${version}" // Send a mail to the person responsible for manual testing and release. mail subject: 'A new version of KEIII is available for testing.', body: 'A new version of KEIII is available for testing and approval of release.', charset: 'utf-8', from: '[email protected]', mimeType: 'text/plain', to: '[email protected]' stage 'Release' // User input showing up in the Jenkins UI. // If the timeout is reached, an exception is thrown and the build aborted. timeout(time: 120, unit: 'SECONDS') { input message: 'Do you want to release this version, ' + version + ', of KEIII?', ok: 'Release' } // A catch block could deal with the exception. // In order to release to Nexus, deploy and access information needs to be made available in // a maven settings file. This configuration is copied into the file defined as // mavenSettingsFile from the corresponding managed file in Jenkins... def mavenSettingsFile = "${pwd()}/.m2/settings.xml" // ... using the configuration file build wrapper: wrap([$class: 'ConfigFileBuildWrapper', managedFiles: [ [fileId: '85adba0c-908b-4dbf-b3aa-65fe823e8984', targetLocation: "${mavenSettingsFile}"]]]) { // deploy to Nexus sh "${mvnHome}/bin/mvn deploy -s ${mavenSettingsFile} -f KnowledgeEditor/pom-deploy.xml -Dfs.version=${version}" }}