GVKun编程网logo

Jenkins管道确定分支是否针对Bitbucket拉取请求(jenkins管道构建)

17

本文将带您了解关于Jenkins管道确定分支是否针对Bitbucket拉取请求的新内容,同时我们还将为您解释jenkins管道构建的相关知识,另外,我们还将为您提供关于BitBucketJenkins

本文将带您了解关于Jenkins管道确定分支是否针对Bitbucket拉取请求的新内容,同时我们还将为您解释jenkins管道构建的相关知识,另外,我们还将为您提供关于BitBucket Jenkins不会自动生成、Bitbucket Server Webhook到Jenkins:错误:Jenkins响应:没有使用存储库的git作业、BitBucket Webhook在发布给Jenkins时给出了Crumb问题、Bitbucket 触发内网 Jenkins Build的实用信息。

本文目录一览:

Jenkins管道确定分支是否针对Bitbucket拉取请求(jenkins管道构建)

Jenkins管道确定分支是否针对Bitbucket拉取请求(jenkins管道构建)

我将Jenkins和Bitbucket分支源插件一起使用。

一切都很好,但是我希望能够根据分支是否与拉取请求相关联来在管道中运行/排除某些阶段,例如:

pipeline {  stages {    stage(''build'') {      //compile    }        stage(''package'') {      when {        environment name: ''IS_PULL_REQUEST'', value: ''true''      }            //create deployable package    }  }}

Jenkins知道分支何时用于PR,因为它会将源与目标合并,并在多分支管道页面的pull request文件夹中显示分支。

我可以在管道中使用环境变量来排除/包含阶段吗?

答案1

小编典典

您可以使用BRANCH_NAMECHANGE_ID环境变量来检测请求请求。从分支运行多分支管道构建时(在创建拉取请求之前),将设置以下环境变量:

  • env.BRANCH_NAME设置为存储库分支名称(例如develop),
  • env.CHANGE_BRANCHnull
  • env.CHANGE_IDnull

但是一旦创建拉取请求,则:

  • env.BRANCH_NAME设置为PR- \ d +名称(例如PR-11),
  • env.CHANGE_BRANCH设置为真实的分支名称(例如develop),
  • env.CHANGE_ID设置为拉取请求ID(例如11)。

when在管道中使用以下条件来检测请求请求:

when {    expression {        // True for pull requests, false otherwise.        env.CHANGE_ID && env.BRANCH_NAME.startsWith("PR-")    }}

BitBucket Jenkins不会自动生成

BitBucket Jenkins不会自动生成

在我的詹金斯上,我配置了:

源代码管理

Git存储库:https :
//bitbucket.org/username/project.git

凭据:用户名/密码

建造者触发器

将更改推送到BitBucket时生成

在我的BitBucket Webhooks上:

http://Jenkins.URL:8080 / bitbucket-hook

我尝试将小的更改推送到.txt文件,但是Jenken不会自动生成。如果我手动单击“立即构建”,则显示成功。

可能是什么问题呢?

在bitbucket存储库中,该项目很简单。我只有一个文本文件要测试。我认为只要对文本文件进行任何更改,它都应该触发Jenkins构建。

编辑:

在Jenkins的系统日志中,它显示“轮询尚未运行”。但是在Bitbucket Webhook请求日志中,我可以看到所有请求。

Bitbucket Server Webhook到Jenkins:错误:Jenkins响应:没有使用存储库的git作业

Bitbucket Server Webhook到Jenkins:错误:Jenkins响应:没有使用存储库的git作业

我已经在Bitbucket服务器中将Webhook安装到Jenkins for
Bitbucket插件。主要目标是在提交后将触发詹金斯构建。

安装后,我启用了插件:jenkins-url:https:// url / jenkins ssh:ssh @
git ..(在SCM插件jenkins作业中使用了相同的命令)。

詹金斯工作正常(git clone等正常工作),但插件不工作。当我在jenkins webhook插件上单击测试时,它显示了我:

Error: Jenkins response: No git jobs using repository: ssh://git@xx.git t and branches: master

网址正确。因此,它用于我的詹金斯工作(和分支主管)。我什至在jenkins作业中从错误中复制了URL作为URL,它仍然能够克隆存储库。我会忘记什么?

编辑:

我发现一些信息,您应该在工作中启用SCM轮询(即使每年进行一次轮询)。仅此插件有效吗?这是正常行为吗?(这似乎解决了我的问题)

答案1

小编典典

是的,您必须在Jenkins Job配置的Build Triggers部分中检查Poll_SCM-
我可以确认这一点。我正在做与您相同的事情,这就是我如何使其起作用的方法-您可以在Atlassian网站上找到此类确认

BitBucket Webhook在发布给Jenkins时给出了Crumb问题

BitBucket Webhook在发布给Jenkins时给出了Crumb问题

假设您以预推送脚本的形式触发作业,如果它抛出了面包屑错误,则需要在Jenkins中创建个性化的API令牌,并且需要将其嵌入到从Bitbucket到Jenkins的API调用中。

请参考本文以生成令牌-https://support.cloudbees.com/hc/en-us/articles/115003090592-How-to-re-generate-my-Jenkins-user-token

Bitbucket 触发内网 Jenkins Build

Bitbucket 触发内网 Jenkins Build

在 Jenkins 上添加一个用来自动构建的用户: autobuilder 如果需要,你可以调整 autobuilder 的用户权限 系统管理 -》Configure Global Security -》 授权策略 -》项目矩阵授权策略

在项目中我们需要开启 "触发远程构建", 并输入一个 "身份验证令牌",该值你可以从 https://randomkeygen.com/ 轻松的生成一个合格的身份验证令牌。 我们可以在红色方框处获得触发远程构建的 URL, 替换 TOKEN_NAME 的值为: http://192.168.0.218:8888/job/test-bitbucket/build?token=8PwPjSxOd1huEQZYpDr0qQJrCndcfxgu

我们还需要为这个 URL 添加认证信息,使用 autobuilder 用户登录 jenkins 服务器中,点击右上角 "autobuilder" -》"设置" -》“Show API Token” 获得该用户的认证信息。 获得上面的信息后后就可以拼出完整的 URL : http://autobuilder:f245bb703a1b39594d1f4f48784ddd27@192.168.0.218:8888/job/test-bitbucket/build?token=8PwPjSxOd1huEQZYpDr0qQJrCndcfxgu

可以通过使用 curl 命令来测试

curl http://autobuilder:f245bb703a1b39594d1f4f48784ddd27@192.168.0.218:8888/job/test-bitbucket/build?token=8PwPjSxOd1huEQZYpDr0qQJrCndcfxgu

公司使用的 bitbucket 是在外网上的,内部的 Jenkins 无法被 bitbucket 访问,公司内部的公网 IP,我们把公司的 IP 的 8888 端口通过路由器进行 NAT 映射到 192.168.0.218 的 8888 端口上 然后在外网的机器上使用 curl 来进行测试

curl http://autobuilder:f245bb703a1b39594d1f4f48784ddd27@替换你的公网IP:8888/job/test-bitbucket/build?token=8PwPjSxOd1huEQZYpDr0qQJrCndcfxgu

测试成功后,开始对 bitbucket 进行配置,首先添加插件,点击 "管理" -》"寻找新插件",搜索 "hook" , 安装 "HTTP-Request Hook for Bitbucket Server"

进入项目中,点击 "Settings" -》“Hooks” -》启用 "HTTP Request Post-Receive Hook", 填入信息 #### 注意:Username 填入 autobuilder,Password 填入 用户的认证信息

当你向该 Bitbucket 项目的代码库中提交代码,Bitbucket 在收到代码推送后会使用我们在 Hooks 中设置的 URL 发送 http 请求,内网中的 Jenkins 服务器收到请求后触发一个新的 Build。

今天关于Jenkins管道确定分支是否针对Bitbucket拉取请求jenkins管道构建的分享就到这里,希望大家有所收获,若想了解更多关于BitBucket Jenkins不会自动生成、Bitbucket Server Webhook到Jenkins:错误:Jenkins响应:没有使用存储库的git作业、BitBucket Webhook在发布给Jenkins时给出了Crumb问题、Bitbucket 触发内网 Jenkins Build等相关知识,可以在本站进行查询。

本文标签: