【问题标题】:Jenkins build from tag using Bitbucket Branch Source pluginJenkins 使用 Bitbucket Branch Source 插件从标签构建
【发布时间】:2019-04-15 15:44:53
【问题描述】:

当我在 bitbucket 的 master 分支中创建标签时,我想构建我的 jenkins 管道。我在提交 master 分支时构建了 jenkins,但我似乎无法构建它以创建标签。

这是我目前所拥有的:

stage('Update DEV ECS') {
  when { branch 'dev' }
  steps {
    script{
      withAWS(region:'us-east-1') {
        def outputs = cfnUpdate(stack: 'DEV-TARGETDB-SERVICE',
          params:["ImageUrl=${env.FULL_ECR_URL}"],
          keepParams:[
            'EnvVarName1',
            'EnvVarValue1',
            'EnvVarName2',
            'EnvVarValue2',
            'EnvVarName3',
            'EnvVarValue3',
            'ContainerCpu',
            'ContainerMemory',
            'ContainerPort',
            'DatabaseHost',
            'DatabaseName',
            'DatabasePassword',
            'DatabaseUser',
            'DesiredCount',
            'HttpCode',
            'HTTPSListener',
            'Path',
            'Priority',
            'Role',
            'TaskRole',
            'ServiceName',
            'StackName',
            'DataDogAPIKey',
            'TaskCpu',
            'TaskMemory'
          ],
          timeoutInMinutes:15,
          pollInterval:1000)
      }
    }
  }
}

stage('Update TEST ECS') {
  when { branch 'master' }
  steps {
    script{
      withAWS(region:'us-east-1') {
        def outputs = cfnUpdate(stack: 'TEST-TARGETDB-SERVICE',
          params:["ImageUrl=${env.FULL_ECR_URL}"],
          keepParams:[
            'EnvVarName1',
            'EnvVarValue1',
            'EnvVarName2',
            'EnvVarValue2',
            'EnvVarName3',
            'EnvVarValue3',
            'ContainerCpu',
            'ContainerMemory',
            'ContainerPort',
            'DatabaseHost',
            'DatabaseName',
            'DatabasePassword',
            'DatabaseUser',
            'DesiredCount',
            'HttpCode',
            'HTTPSListener',
            'Path',
            'Priority',
            'Role',
            'TaskRole',
            'ServiceName',
            'StackName',
            'DataDogAPIKey',
            'TaskCpu',
            'TaskMemory'
          ],
          timeoutInMinutes:15,
          pollInterval:1000)
      }
    }
  }
}

stage('Update PROD ECS') {
  when {
    branch 'master'
    tag 'v*'
  }
  steps {
    script{
      withAWS(region:'us-east-1') {
        def outputs = cfnUpdate(stack: 'PROD-TARGETDB-SERVICE',
          params:["ImageUrl=${env.FULL_ECR_URL}"],
          keepParams:[
            'EnvVarName1',
            'EnvVarValue1',
            'EnvVarName2',
            'EnvVarValue2',
            'EnvVarName3',
            'EnvVarValue3',
            'ContainerCpu',
            'ContainerMemory',
            'ContainerPort',
            'DatabaseHost',
            'DatabaseName',
            'DatabasePassword',
            'DatabaseUser',
            'DesiredCount',
            'HttpCode',
            'HTTPSListener',
            'Path',
            'Priority',
            'Role',
            'TaskRole',
            'ServiceName',
            'StackName',
            'DataDogAPIKey',
            'TaskCpu',
            'TaskMemory'
          ],
          timeoutInMinutes:15,
          pollInterval:1000)
      }
    }
  }
}

dev 和 prod 阶段有效,但 prod 阶段不起作用。我什至没有在 jenkins 中看到 prod 阶段的工作(我为 dev 和 master 做)。 jenkins的项目下有一个“tags”部分,但是是空的。

【问题讨论】:

  • 如果您使用多分支管道,您是否在分支源配置的行为部分添加了“发现标签”?

标签: jenkins jenkins-pipeline bitbucket jenkins-plugins


【解决方案1】:

当您签出 Git 存储库时,您可以按分支或标签签出,但不能同时按两者。当 Jenkins 签出一个分支时,它会将 BRANCH_NAME 变量设置为签出分支的名称;当它签出一个标签时,它sets TAG_NAME BRANCH_NAME 到标签的名称。

documentation 说:

如果 when 指令包含多个条件,则所有子条件都必须返回 true 才能执行阶段。

tag 条件匹配 TAG_NAME,而 branch 条件匹配 BRANCH_NAME,因此它们都需要在阶段执行的命令。由于在标签签出的情况下它们恰好相同,因此此条件设置始终为 false。

解决方案取决于您想要实现的目标。如果您希望在其中任何一个为真时执行该阶段,则条件应为:

when {
    anyOf {
        branch 'master'
        tag 'v*'
    }
}

如果你只想在 v* 标签上运行,我会完全放弃 branch 条件。

【讨论】:

    猜你喜欢
    • 2018-01-23
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多