Stay Hungry,Stay Foolish!

continuous deployment with Jenkins

Deploying from a Git Tag -- buildingTag

https://notesfromthelifeboat.com/post/deploying-from-a-git-tag/

If you want to evaluate your changes in the staging environment automatically via a smoketest script, and push to production on a successful test, you don’t need a parameter at all; you can set the ENVIRONMENT for each stage in the pipeline:

pipeline {
    agent { label 'myLabel' }
    environment {
        GIT_TAG = sh(returnStdout: true, script: 'git describe --always').trim()
    }
    stages {
        stage("Checkout") {
            steps {
                checkout scm
            }
        }
        stage("Test") {
            steps {
                sh('make test')
        }
        }
    stage("Deploy to Staging") {
        when {
        buildingTag()
        }
        environment {
        ENVIRONMENT = 'staging'
        }
        steps {
        sh('make deploy')
        }
    }
    stage("Smoketest") {
        steps {
                sh('make smoketest')
        }
        }
    stage("Deploy to Production") {
        when {
            buildingTag()
            }
            environment {
            ENVIRONMENT = 'production'
            }
            steps {
            sh('make deploy')
            }
        }
    }
}

 

When using tags -- tag

https://www.jenkins.io/blog/2018/05/16/pipelines-with-git-tags/

One common pattern for automated releases I have seen and used relies on Git tags as the catalyst for a release process. The immutable nature of releases and the immutable nature of tags can definitely go hand in hand, but up until few months ago Jenkins Pipeline was not able to trigger effectively off of Git tags.

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh 'make package'
            }
        }
        stage('Test') {
            steps {
                sh 'make check'
            }
        }
        stage('Deploy') {
            when { tag "release-*" }
            steps {
                echo 'Deploying only because this commit is tagged...'
                sh 'make deploy'
            }
        }
    }
}

 

when

https://www.cnblogs.com/rxysg/p/15682060.html

buildingTag :如果pipeline所执行的代码被打了tag,则执行

when {
    buildingTag()
}

tag:如果pipeline所执行的代码被打了tag,且tag名称符合规则,则执行。如果tag的参数为空,即tag ( ),则表示不论tag名称是什么都执行,与buildingTag的效果相同。

when {
    tag "release-*"
}

tag条件支持comparator参数,支持的值如下。
EQUALS:简单的文本比较

when {
    tag pattern "release-3.1", comparator: "EQUALS"
}

GLOB(默认值) :Ant风格路径表达式。由于是默认值,所以使用时一般省略。

when {
    tag pattern "release-*", comparator: "GLOB"
}

REGEXP∶正则表达式

when {
    tag pattern "release-\\d+", comparator: "REGEXP"
}

 

 

Configure the Jenkins project

https://comquent.de/de/de-triggering-jenkins-when-new-tags-are-created/

There are two changes that need to be applied in the Jenkins server. We should enable the Poll SCM build trigger in our pipeline job setting and enter a Schedule. This way, Jenkins will be able to check our project in Bitbucket for any changes. Then in the SCM section on the pipeline job configuration panel, we can enter the following settings:

  • Refspec: +refs/tags/*:refs/remotes/origin/tags/*
  • Branch: specifier **/tags/**

That’s all, the configuration is done and now it is time to check if this is working.

 

posted @ 2023-01-24 23:11  lightsong  阅读(12)  评论(0编辑  收藏  举报
Life Is Short, We Need Ship To Travel