【发布时间】:2019-04-02 15:17:42
【问题描述】:
这是我的场景,我在 gitlab 中有两个分支,“master”和 staging。
我需要整合 jenkinsfile,这样我就可以对 staging 和 master 分支使用相同的文件,但需要为每个分支执行不同的操作集
我想要做的是,如果标签推送被提交到暂存分支 jenkins 将构建 docker 文件,将其上传到 aws ecr 并在 aws ecs 暂存集群中启动一个新的 docker 实例,如果标签推送到 master分支它会将其部署到另一个实时集群中。
我使用“JENKINS PIPELINE”项目并在 jenkinsfile 中编写以下代码,但 env.BRANCH_NAME 始终返回空值。
if (env.BRANCH_NAME == "staging") {
def serviceName = ""
def taskFamily = ""
def clusterName = ""
} else if (env.BRANCH_NAME == "master") {
def serviceName = ""
def taskFamily = ""
def clusterName = ""
}
当使用“JENKINS MULTIBRANCH”管道项目时,它会扫描项目并自动识别所有分支,但似乎每个分支都有自己的 webhook。
我真的对 MULTIBRANCH JENKINS 感到困惑。我们应该在 gitlab 中配置 2 个不同的 webhook 吗?一个用于分期,另一个用于主控?当我们在 gitlab 中将 git tag push 到 staging 分支时,jenkins 会拉取并自动切换到 staging 分支吗?
看起来当我们在 gitlab 中向 staging 分支推送标签时,jenkins 正在从 staging 分支中提取 jenkinsfile,但在 master 分支中处理文件。
我们有什么方法可以使用“JENKINS PIPELINE”项目来代替“MULTI BRANCH”吗?
【问题讨论】:
-
您使用的是
scripted还是declarative类型的管道。如果是declarative,您可以尝试在script块中添加此代码sn-p。 -
@SunilThorat 我猜它是声明性管道,你能不能再粘贴一次代码,因为我看不到它。
标签: jenkins gitlab jenkins-pipeline amazon-ecs