gpt4 book ai didi

Jenkinsfile 和分支的不同策略

转载 作者:行者123 更新时间:2023-12-03 08:41:01 29 4
gpt4 key购买 nike

我正在尝试将 Jenkins 文件用于我们在 Jenkins 中的所有构建,但我遇到了以下问题。
我们基本上有 3 种构建:

  • pull-request 构建 - 代码审查后将合并到 master,如果构建有效
  • 手动拉取请求构建 - 与上述相同的构建,但可以由用户手动触发(例如,如果我们有一些不稳定的测试)
  • 初始持续交付管道 - 这将构建代码、部署到存储库、从目标服务器上的存储库安装工件并在那里启动应用程序

  • 我应该如何将上述所有构建包含到单个 Jenkinsfile 中。
    现在我唯一的想法是制作一个巨人,如果它会检查它是哪个分支并执行步骤。

    所以我有两个问题:

    1. 在 Jenkinsfile 中这样做是否合适?
  • 如何在多分支作业类型中获取当前正在执行的分支的名称?

  • 作为引用,这是我目前的 Jenkinsfile :

    def servers = ['server1', 'server2']

    def version = "1.0.0-${env.BUILD_ID}"

    stage 'Build, UT, IT'
    node {
    checkout scm
    env.PATH = "${tool 'Maven'}/bin:${env.PATH}"
    withEnv(["PATH+MAVEN=${tool 'Maven'}/bin"]) {
    sh "mvn -e org.codehaus.mojo:versions-maven-plugin:2.1:set -DnewVersion=$version -DgenerateBackupPoms=false"
    sh 'mvn -e clean deploy'
    sh 'mvn -e scm:tag'
    }
    }


    def nodes = [:]
    for (int i = 0; i < servers.size(); i++) {
    def server = servers.get(i)
    nodes["$server"] = {
    stage "Deploy to INT ($server)"
    node {
    sshagent(['SOME-ID']) {
    sh """
    ssh ${server}.example.com <<END
    hostname
    /apps/stop.sh
    yum -y update-to my-app.noarch
    /apps/start.sh
    END""".stripIndent()
    }
    }
    }
    }

    parallel nodes

    编辑:删除了基于意见的问题

    最佳答案

    如果要根据分支跳过多个阶段,可以为多个阶段添加 If 语句,如下所示:

    if(env.BRANCH_NAME == 'master'){
    stage("Upload"){
    // Artifact repository upload steps here
    }
    stage("Deploy"){
    // Deploy steps here
    }
    }

    或者,您可以将其添加到单个阶段,如下所示:
    stage("Deploy"){
    if(env.BRANCH_NAME == 'master'){
    // Deploy steps here
    }
    }

    关于Jenkinsfile 和分支的不同策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36727721/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com