GitHub Actions/checkout清空Runner文件系统 求助双仓库共存方案
解决GitHub Actions中多仓库检出共存的问题
问题根源是actions/checkout@v3的默认行为:每次执行checkout都会将仓库内容检出到当前工作目录($GITHUB_WORKSPACE),第二次checkout会直接覆盖该目录下的所有现有文件,导致之前检出的modules目录被清空。
修改后的工作流配置
给第一个checkout步骤添加path参数,指定模块仓库的检出目录,避免和后续客户端仓库的检出路径冲突:
jobs: terraform: name: 'Terraform' runs-on: ubuntu-latest steps: # 将模块仓库检出到指定的modules目录 - name: Checkout Modules uses: actions/checkout@v3 with: repository: myaccount/myrepo path: modules # 指定检出目录为modules - name: Show Filesystem1 run: ls -l -R # 客户端仓库检出到默认工作目录(不会覆盖modules) - name: Checkout Client uses: actions/checkout@v3 - name: Show Filesystem2 run: ls -l -R
修改后的文件结构说明
执行完两个checkout步骤后,Runner上的文件结构会保留两个仓库的内容:
.: total 28 drwxr-xr-x 6 runner docker 4096 Apr 7 12:55 modules -rw-r--r-- 1 runner docker 1291 Apr 7 12:52 keyvault.tf -rw-r--r-- 1 runner docker 3538 Apr 7 12:52 main-1.tf -rw-r--r-- 1 runner docker 638 Apr 7 12:52 outputs.tf -rw-r--r-- 1 runner docker 387 Apr 7 12:52 provider.tf -rw-r--r-- 1 runner docker 56 Apr 7 12:52 terraform.tfvars -rw-r--r-- 1 runner docker 2020 Apr 7 12:52 variables.tf ./modules: total 16 drwxr-xr-x 3 runner docker 4096 Apr 7 12:55 client_network drwxr-xr-x 2 runner docker 4096 Apr 7 12:55 databases drwxr-xr-x 2 runner docker 4096 Apr 7 12:55 storage drwxr-xr-x 2 runner docker 4096 Apr 7 12:55 virtualmachines
额外注意事项
- 模块路径引用:确保
main-1.tf中模块的引用路径正确,比如改为./modules/client_network这类包含指定目录的路径。 - 权限调整:如果Terraform执行时遇到模块目录权限问题,可添加步骤修正权限:
- name: Fix Module Permissions run: chmod -R 755 modules - 私有仓库访问:若模块仓库是私有仓库,需在
Checkout Modules步骤中添加token参数,使用具备仓库访问权限的GitHub Token:with: repository: myaccount/myrepo path: modules token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
内容的提问来源于stack exchange,提问作者Wolfgang
相关产品推荐
相关产品推荐

