使用输入列出所有标签(Jenkinsfile)

问题描述 投票:0回答:2

我正在尝试列出输入选项中的所有标签(GitLab),但我不知道该怎么做。

我想要做的是能够选择标签并基于该标签执行部署到不同的环境。

谢谢你。

jenkins jenkins-pipeline
2个回答
2
投票

我提出了这样一个在 dsl 声明式管道中工作的解决方案:

  1. 带有下载仓库的阶段
  2. 基于repo解析标签
  3. 具有选择参数的阶段

代码:

pipeline {
    agent  any
    stages {

        stage('PollSCM') {
            steps {
                checkout([$class: 'GitSCM', branches: [[name: 'master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'xxx', url: 'repo']]])
                script {
                    tags = sh(script: "git tag --sort=v:refname | tail -5 ", returnStdout: true).trim()
                }
            }
        }

        stage('CHOICE TAG') {
            steps {
                script {
                    def tag_response = input message: 'blah blah tags',
                            parameters: [choice(choices: "${tags}",  description: 'blah', name: '')]
                    env.tag_response = tag_response
                }

            }
        }

        stage ('echo choose') {
            steps {
                echo "I choose: '${tag_response}'"
            }
        }

    }
}

0
投票

实际上还有另一种语法可以使用

git-parameter
插件(已由 Git 插件和 Git 客户端插件提供)获取参数内的分支/标签列表,版本 0.9.4 或更高版本:

    pipeline {

        agent any

        parameters{

            gitParameter name: 'TAG_OR_BRANCH',
                         type: 'PT_BRANCH_TAG',
                         defaultValue: 'master'
        }

        stages {
            stage('Checkout') {
                steps {
                    checkout([$class: 'GitSCM', branches: [[name: "${params.TAG_OR_BRANCH}"]], doGenerateSubmoduleConfigurations: false, extensions: [], gitTool: 'Default', submoduleCfg: [], userRemoteConfigs: [[url: 'https://github.com/jenkinsci/git-parameter-plugin.git']] ])
                }
            }
            stage('Test') {
                steps {
                    script {
                            // Here you can also use a regex to match a pattern, 1.x.x-ALPHA, BETA etc.
                            if (("${params.TAG_OR_BRANCH}" == "master")){
                                echo "Do something from master branch"
                            }
                    }
                }
            }
        }
    }

上面的示例将列出分支和标签,所选选项将保存在变量

${params.TAG_OR_BRANCH}
中,但您也可以通过使用
type:

的相应选项仅列出分支、仅标签等。
  • PT_TAG
  • PT_BRANCH
  • PT_BRANCH_TAG
  • PT_修订版
  • PT_PULL_REQUEST

这也适用于 GUI 结帐 SCM,即您可以删除上面示例中的结帐阶段,并在 jenkins GUI 上询问分支名称时使用

${params.TAG_OR_BRANCH}

请参阅 git-parameter doc 了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.