如何通过API/Actions插件从Jenkins Pipeline触发GitHub Actions并传递构建参数
操作流程
1. GitHub侧前置配置
- 首先生成有权限触发工作流的Personal Access Token(PAT):进入GitHub账号设置-开发者设置,生成新PAT,勾选
repo和workflow权限,保存生成的token值,后续Jenkins配置会用到。 - 配置目标GitHub Actions workflow文件:在需要触发的仓库的
.github/workflows/目录下修改对应yml文件,开启手动触发入口并定义接收参数,示例配置如下:
name: 被Jenkins触发的工作流 on: workflow_dispatch: # 必须开启该触发方式,才能通过API外部调用 inputs: env: # 示例参数1:部署环境,对应Jenkins侧下拉选项 description: '部署环境' required: true version: # 示例参数2:构建版本号 description: '构建版本' required: true jobs: build: runs-on: ubuntu-latest steps: - name: 打印接收的参数 run: | echo "部署环境为: ${{ github.event.inputs.env }}" echo "构建版本为: ${{ github.event.inputs.version }}"
注意:如果你的工作流需要指定分支触发,后续调用接口时要传入对应分支名。
2. Jenkins侧基础配置
先将之前生成的GitHub PAT存入Jenkins凭证库,类型选择Secret text,自定义凭证ID(比如github_workflow_trigger_pat),后续配置直接引用即可。
2.1 普通Jenkins Job配置方案
- 第一步:给Job添加构建参数,需要下拉选项就选择Choice Parameter类型,比如添加名称为
ENV的下拉参数,选项填写dev、test、prod;再按需求添加其他参数比如字符串类型的BUILD_VERSION。 - 第二步:添加构建步骤,选择Execute shell,填入触发GitHub Actions的curl命令:
curl -L \ -X POST \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer ${GITHUB_PAT}" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/repos/<你的GitHub用户名>/<目标仓库名>/actions/workflows/<目标workflow的文件名.yml>/dispatches \ -d '{"ref":"<触发的分支名,比如main>","inputs":{"env":"'"${ENV}"'","version":"'"${BUILD_VERSION}"'"}}'
替换命令中的占位符为实际值,
GITHUB_PAT变量可以在Job的构建环境设置中绑定之前存储的凭证。
2.2 Jenkins Pipeline配置方案
直接编写Pipeline脚本即可,示例如下:
pipeline { agent any parameters { // 定义下拉选项参数,对应传给GitHub Action的env参数 choice(name: 'ENV', choices: ['dev', 'test', 'prod'], description: '选择部署环境') string(name: 'BUILD_VERSION', defaultValue: '', description: '填写构建版本号') } environment { // 引用之前存储的GitHub PAT凭证 GITHUB_PAT = credentials('github_workflow_trigger_pat') } stages { stage('触发GitHub Actions') { steps { sh ''' curl -L \ -X POST \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer ${GITHUB_PAT}" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/repos/<你的GitHub用户名>/<目标仓库名>/actions/workflows/<目标workflow的文件名.yml>/dispatches \ -d '{"ref":"main","inputs":{"env":"'"${ENV}"'","version":"'"${BUILD_VERSION}"'"}}' ''' } } } }
替换脚本中的占位符为实际信息即可。
3. 效果验证
配置完成后在Jenkins启动构建,选择下拉参数值提交后,进入对应GitHub仓库的Actions页面,即可看到对应工作流被触发,且参数已正常传入。
内容的提问来源于stack exchange,提问作者vik_nag
相关产品推荐
相关产品推荐

