是否有任何方法或解决方案可以从 Jenkins 声明性管道调用 GitHub Actions 工作流程?
Jenkinsfile 应包含什么内容来调用所述操作?
您应该能够调用 API 来创建工作流调度事件。
请参阅 Riku Rouvila 的“如何使用 HTTP 请求触发 GitHub 操作
生成 GitHub 令牌:创建启用必要范围的 GitHub 令牌。从您的 GitHub 帐户在
Settings
> Developer settings
> Personal access tokens
> Generate new token
下创建此令牌。
设置您的 GitHub 存储库:您的 GitHub 存储库必须在
.yml
目录中包含 GitHub Actions 工作流程文件(.yaml
或 .github/workflows
)。
Jenkins 设置:必须安装 Jenkins 并配置必要的插件,例如“Pipeline”以支持声明式管道。
我将使用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 凭证管理来安全地处理您的秘密。