zoukankan      html  css  js  c++  java
  • jenkins2 pipeline实例

    比较完整的实例,使用了maven打包,git tag,发通知邮件,等待用户deploy,deploy到nexus。

    文章来自:http://www.ciandcd.com
    文中的代码来自可以从github下载: https://github.com/ciandcd

    源代码和文章来自: https://grensesnittet.computas.com/pipeline-as-code-continuous-delivery-with-jenkins-2-0/

    代码如下:

    // 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://git@gitrepo.computas.com/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 bob@computas.com"
        // 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: 'bob@computas.com',
            mimeType: 'text/plain',
            to: 'fs-tester@computas.com'
     
        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}"
        }
    }
    

     

  • 相关阅读:
    给一个二维数组随机赋值
    sql server use WAITFOR DELAY to wait some milliseconds
    sql server print time with milliseconds
    UE4 LeapMotion 获取手掌朝向
    Unity打包Android出现Failed to find Build Tools revision
    UE4中Yaw,Roll,Pitch分别对应什么轴?
    Unity 遍历场景所有物体(包括隐藏及被禁用的物体)
    C#-Linq扩展方法DistinctBy
    Unity编辑器扩展--Scene Manager
    Unity查找功能编辑器扩展Searcher
  • 原文地址:https://www.cnblogs.com/itech/p/5663676.html
Copyright © 2011-2022 走看看