GitHub Actions:跨库调用可重用工作流时同仓复合动作路径问题
解决GitHub Actions可重用工作流调用同仓库复合动作的路径问题
当跨仓库调用可重用工作流时,原仓库内的相对路径(比如.github/actions/build)会失效——因为此时工作目录默认是调用方仓库(app_repo)的代码,找不到被调用仓库(action_repo)里的复合动作。以下是两种可行的解决方法:
方法1:使用完整仓库路径引用复合动作
在action_repo的可重用工作流文件中,调用同仓库的复合动作时,不要用相对路径,而是采用{仓库所有者}/{仓库名}/.github/actions/{动作名}@{版本/分支/提交哈希}的完整格式。
示例(action_repo/.github/workflows/build_and_deploy.yml):
name: Build and Deploy (Reusable) on: workflow_call: jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout app code uses: actions/checkout@v4 # 用完整路径引用本仓库的build动作 - name: Run build action uses: your-username/action_repo/.github/actions/build@main # 用完整路径引用本仓库的deploy动作 - name: Run deploy action uses: your-username/action_repo/.github/actions/deploy@main
这种方式直接指定动作的仓库来源,不管从哪个仓库调用这个可重用工作流,都能正确拉取到action_repo里的复合动作。
方法2:在可重用工作流中拉取action_repo代码
如果不想用完整路径,也可以在可重用工作流的步骤里先把action_repo的代码拉取到工作目录,再用相对路径调用动作。
示例:
name: Build and Deploy (Reusable) on: workflow_call: jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout app repo code uses: actions/checkout@v4 - name: Checkout action_repo code uses: actions/checkout@v4 with: repository: your-username/action_repo path: action_repo # 指定拉取到action_repo目录下 ref: main # 指定分支、tag或提交哈希 # 用相对路径调用拉取后的动作 - name: Run build action uses: ./action_repo/.github/actions/build - name: Run deploy action uses: ./action_repo/.github/actions/deploy
注意:这种方法需要确保拉取的action_repo路径正确,且避免和app_repo的文件结构冲突。
内容的提问来源于stack exchange,提问作者Dmitrij Kultasev
相关产品推荐
相关产品推荐

