从另一个分支上的另一个仓库构建 Jenkins 管道(作业)

时间:2021-03-24 15:55:17

标签: jenkins groovy jenkins-pipeline

我想要做的事情看起来并不复杂但也不那么容易,但我现在读到的内容似乎让我看起来像是在发射火箭。

基本上假设我有

@bot.command()
async def members(ctx):
    embedVar = discord.Embed(title=f'There Are {ctx.guild.member_count} Members In This Server', color=0xFF0000)
    await ctx.send(embed=embedVar)
my-deploys-repo with branches: master, develop
my-tools-repo with whatever branches

如何从 my-deploys-repo 的开发分支 FROM Jenkinsfile-push-events on my-tools-repo 触发 Jenkinsfile-deploy 作业?

我知道通常我会做一些类似的事情(在 Jenkinsfile-push-events 中)

Inside my-tools-repo I have: Jenkinsfile-push-events ( jenkins pipeline )
Inside my-deploys-repo I have ON DEVELOP BRANCH: Jenkinsfile-deploy (which also gets some params, if it matters )

但它放在另一个树枝上似乎是个问题。

1 个答案:

答案 0 :(得分:1)

Jenkins 中的作业在其属性中有其定义,并且已经包含 Jenkinsfile,因此您无法在不首先定义使用该 Jenkinsfile 的作业的情况下触发“Jenkinsfile”。

如果您有两个分支,则需要一个 Multibranch Pipeline 作业。

假设您创建了一个新的 Multibranch Pipeline 作业——比如说 MyJob 是它的名字——它被配置为使用你的存储库 (my-deploys-repo.git) 和你的 Jenkinsfile 路径 (Jenkinsfile-deploy.groovy)。然后您可以通过以下方式触发该作业:

build job: "MyJob/develop", wait: false, propagate: false,
    parameters: [
         string(name: 'PARAM_1', value: "1"),
         string(name: 'PARAM_2', value: "maybe"), //etc.
   ]