如何跨不同组织调用Reusable Workflow并适配其动态更新
跨组织调用GitHub可复用工作流(支持自动更新)
场景
sample_one组织拥有仓库one_repo,其中包含可复用工作流文件sample_two组织拥有仓库two_repo,需要调用one_repo里的可复用工作流,且该工作流会不定期更新
实现方法
1. 准备可复用工作流
确保 one_repo 中的可复用工作流满足以下要求:
- 工作流文件放在
.github/workflows/目录下 - 必须声明
workflow_call触发事件,按需定义输入参数 - 仓库权限配置:公开仓库无需额外设置;私有仓库需给
sample_two组织或调用用户分配读取权限
以下是 one_repo 中可复用工作流的示例(my_template.yml):
name: Reusable Workflow on: workflow_call: inputs: config-path: required: true type: string push: branches: - main jobs: my-job: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Install Py uses: actions/setup-python@v4 with: python-version: 3.8 - name: Install Req run: | pip install -r requirements.txt - name: Run Pytest run: | echo "Input Value: ${{ inputs.config-path }}" pytest
2. 在 two_repo 中编写调用工作流
在 two_repo 的 .github/workflows/ 下创建调用文件(比如 test.yml),通过 uses 字段指定跨组织的工作流路径,使用分支名(如 main)即可自动获取该分支的最新更新:
name: Reuse Workflow in current on: push: branches: - main jobs: trigger-the_one-workflow: uses: sample_one/one_repo/.github/workflows/my_template.yml@main with: config-path: "qa"
关键说明
- 自动更新:使用分支名(如
@main)时,每次触发工作流都会拉取该分支下的最新可复用工作流版本,适配不定期更新的需求 - 稳定版本:如果需要固定使用某个版本,可将分支名替换为标签(如
@v1.0.0)或具体提交哈希值(如@a1b2c3d4ef),避免自动更新带来的兼容性问题 - 私有仓库授权:若
one_repo是私有仓库,需在仓库设置中给sample_two组织添加读取权限,或使用带有仓库读取权限的PAT令牌进行授权
内容的提问来源于stack exchange,提问作者Rezzerk
相关产品推荐
相关产品推荐

