如何在非默认路径检出代码后使用本地GitHub Actions
检出到非默认路径后使用GitHub Actions本地Action的解决方案
当你将代码检出到指定路径后,直接用相对路径引用本地Action会失败——原因是uses字段的路径基于工作流默认工作目录(github.workspace),且uses不支持读取env变量拼接路径。以下是两种可行方案:
方案一:用github.workspace拼接绝对路径
利用github上下文变量(uses支持该上下文)拼接出本地Action的绝对路径,示例配置如下:
jobs: my_first_job: env: WORK_DIR: some-custom-dir steps: - name: 检出代码到指定路径 uses: actions/checkout@v3 path: ${{ env.WORK_DIR }}/local_checkout - name: 使用本地Action uses: ${{ github.workspace }}/${{ env.WORK_DIR }}/local_checkout/.github/actions/my-action
github.workspace指向工作流的根目录,通过它拼接的路径能准确定位到检出目录下的本地Action文件。
方案二:复制本地Action到默认工作目录
把检出路径下的本地Action复制到默认工作目录的对应位置,就能沿用原本的相对路径引用方式:
jobs: my_first_job: env: WORK_DIR: some-custom-dir steps: - name: 检出代码到指定路径 uses: actions/checkout@v3 path: ${{ env.WORK_DIR }}/local_checkout - name: 复制本地Action到默认路径 run: | mkdir -p ./.github/actions cp -r ${{ env.WORK_DIR }}/local_checkout/.github/actions/my-action ./.github/actions/ - name: 使用本地Action uses: ./.github/actions/my-action
通过run命令创建目录并复制Action文件后,默认工作目录下已存在该Action的完整结构,uses即可正常识别。
内容的提问来源于stack exchange,提问作者Robin
相关产品推荐
相关产品推荐

