使用Tag引用GitHub可复用工作流时提示找不到本地工作流
问题描述
我在学习使用GitHub可复用工作流,编写了用于执行单元测试的ctest.yml工作流,该工作流通过相对路径引用本地的x86_64-linux-gnu-gcc.yml工作流完成构建。使用master分支引用该工作流时运行正常,但切换到标签v0.0.1引用时,Runner报错找不到依赖的本地工作流,错误信息如下:
error parsing called workflow ".github/workflows/tests.yml" -> "ZIMO-Elektronik/.github-workflows/.github/workflows/ctest.yml@v0.0.1" (source tag with sha:c23f5c8f48bf22556705346de61cbca499db5839) -> "./.github/workflows/x86_64-linux-gnu-gcc.yml" : workflow was not found. See https://docs.github.com/actions/learn-github-actions/reusing-workflows#access-to-reusable-workflows for more information.
相关代码
ctest.yml 工作流代码
name: ctest on: workflow_call: inputs: target: description: 'CMake test target' default: ${{ github.event.repository.name }}Tests required: false type: string jobs: x86_64-linux-gnu-gcc: uses: ./.github/workflows/x86_64-linux-gnu-gcc.yml with: target: ${{ inputs.target }} upload-artifact: true ctest: needs: x86_64-linux-gnu-gcc runs-on: ubuntu-latest steps: - uses: actions/download-artifact@v3.0.2 with: name: build.tar path: . - run: tar -xvf build.tar - run: ctest --test-dir build --schedule-random
分支引用代码
jobs: tests: uses: ZIMO-Elektronik/.github-workflows/.github/workflows/ctest.yml@master
标签引用代码
jobs: tests: uses: ZIMO-Elektronik/.github-workflows/.github/workflows/ctest.yml@v0.0.1
问题原因及解决方法
原因
标签v0.0.1绑定的特定提交中,不存在x86_64-linux-gnu-gcc.yml文件,或者文件路径与ctest.yml中引用的路径不匹配。分支引用会拉取对应分支的最新代码,而标签是固定指向某一历史提交的,若该提交缺少依赖的工作流文件,就会触发找不到文件的错误。
解决方法
- 检查标签
v0.0.1对应的提交记录,确认.github/workflows/x86_64-linux-gnu-gcc.yml是否存在。 - 如果该文件是在标签创建后才添加到仓库的,重新创建标签并绑定到包含该文件的最新提交。
- 核对标签版本中
ctest.yml引用本地工作流的路径,确保路径没有变更。
内容的提问来源于stack exchange,提问作者Vinci
相关产品推荐
相关产品推荐

