我希望我的工作流程使用本地操作。 通常情况下,人们会这样做:
jobs:
my_first_job:
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Use local my-action
uses: ./.github/actions/my-action
但是,我想在不同的路径中签出我的存储库:
- name: Check out repository
uses: actions/checkout@v3
path: ${{ env.WORK_DIR }}/local_checkout
这会导致以下错误:
Can't find 'action.yml', 'action.yaml' or 'Dockerfile' under '<mypath>/.github/actions/my-action'. Did you forget to run actions/checkout before running your local action?
我应该注意,
my-action
尚未在发行版或主分支中,仅在我正在测试管道的当前分支中。
不幸的是,像 uses: ./${{ env.WORK_DIR }}/local_checkout/.github/actions/my-action
这样的东西不起作用,因为 env
在 uses
的上下文中不可用。
所以我的问题是:如果我在与默认路径不同的路径中签出存储库,如何使用本地操作?
jobs:
my_first_job:
steps:
- name: Check out repository
uses: actions/checkout@v3
path: ${{ env.WORK_DIR }}/local_checkout
- name: Use local my-action
uses: ./${{ env.WORK_DIR }}/local_checkout/.github/actions/my-action
您需要在“结帐”后添加额外的步骤,将
.github
文件夹复制到正确的位置:
- name: Copy files
working-directory: ${{ env.WORK_DIR }}/local_checkout
run: cp -r .github "$GITHUB_WORKSPACE/"
(如果您有自托管的运行器,不清理其工作区,您可能需要将其
cp
更改为删除模式下的 rsync 以确保没有剩余)