如何从 Jenkins Pipeline 调用 GitHub Actions 工作流程?

问题描述 投票:0回答:1

是否有任何方法或解决方案可以从 Jenkins 声明性管道调用 GitHub Actions 工作流程?

Jenkinsfile 应包含什么内容来调用所述操作?

jenkins jenkins-pipeline github-actions jenkins-groovy
1个回答
5
投票

您应该能够调用 API 来创建工作流调度事件
请参阅 Riku Rouvila 的“如何使用 HTTP 请求触发 GitHub 操作

先决条件

  1. 生成 GitHub 令牌:创建启用必要范围的 GitHub 令牌。从您的 GitHub 帐户在

    Settings
    >
    Developer settings
    >
    Personal access tokens
    >
    Generate new token
    下创建此令牌。

  2. 设置您的 GitHub 存储库:您的 GitHub 存储库必须在

    .yml
    目录中包含 GitHub Actions 工作流程文件(
    .yaml
    .github/workflows
    )。

  3. Jenkins 设置:必须安装 Jenkins 并配置必要的插件,例如“Pipeline”以支持声明式管道。

Jenkinsfile 脚本

我将使用try-catch块添加错误处理机制并捕获API请求期间可能发生的HTTP错误。

pipeline {
    agent any 

    stages {
        stage('Invoke GitHub Actions Workflow') {
            steps {
                script {
                    try {
                        def url = "https://api.github.com/repos/YOUR_GITHUB_USERNAME/YOUR_REPOSITORY_NAME/actions/workflows/YOUR_WORKFLOW_FILE_NAME.yml/dispatches"
                        def response = sh(script: 'curl -X POST -H "Accept: application/vnd.github.v3+json" -H "authorization: Bearer YOUR_GITHUB_TOKEN" -d \'{"ref":"YOUR_BRANCH_NAME"}\' "${url}"', returnStdout: true).trim()
                        echo "Response: ${response}"
                    } catch (Exception e) {
                        echo "Failed to invoke GitHub Actions Workflow: ${e.getMessage()}"
                        currentBuild.result = 'FAILURE'
                    }
                }
            }
        }
    }
}

在脚本中:

  • YOUR_GITHUB_USERNAME
    YOUR_REPOSITORY_NAME
    YOUR_WORKFLOW_FILE_NAME.yml
    YOUR_GITHUB_TOKEN
    YOUR_BRANCH_NAME
    替换为适当的值。
  • YOUR_GITHUB_TOKEN
    最好存储为 Jenkins 机密以确保安全。

在作业执行后验证 Jenkins 控制台中的输出,以确认 GitHub Actions 工作流程的成功调用。并使用 Jenkins 凭证管理来安全地处理您的秘密。

© www.soinside.com 2019 - 2024. All rights reserved.