GitLab CI容器项目目录自动挂载原理及GitHub Actions适配方法
GitLab CI 自动访问项目代码的原理及 GitHub Actions 复现方案
GitLab CI 实现原理
GitLab CI 运行 Job 时,会默认将当前仓库的完整代码目录自动挂载到自定义镜像容器的默认工作目录(通常是/builds/<项目命名空间>/<项目名>)。这个挂载操作会覆盖容器内对应路径的原有内容,所以哪怕你的自定义镜像里没有提前用COPY指令打包项目代码,容器依然能直接访问到仓库里的services/talk_booking目录,顺利执行 poetry 相关命令。
GitHub Actions 复现方案
GitHub Actions 不会自动把代码挂载到自定义镜像容器中,需要手动配置代码拉取和目录挂载,具体步骤如下:
- 拉取项目代码:先用
actions/checkout把仓库代码拉取到 GitHub Runner 的工作目录(默认是${{ github.workspace }}) - 挂载代码到容器:在使用自定义镜像的 Job 中,通过
container.volumes配置,将 Runner 的工作目录挂载到容器内的指定路径 - 指定工作目录执行命令:在执行 poetry 命令时,切换到容器内挂载的项目子目录
示例配置:
jobs: code-quality-check: runs-on: ubuntu-latest container: image: your-custom-docker-image:tag volumes: - ${{ github.workspace }}:/project steps: - name: Checkout repository code uses: actions/checkout@v4 - name: Execute poetry commands working-directory: /project/services/talk_booking run: | poetry install --no-root poetry run flake8 .
注意:如果你的自定义镜像有默认工作目录,可以把挂载路径改成镜像的默认工作目录,这样working-directory可以省略,直接在默认路径执行命令。
内容的提问来源于stack exchange,提问作者kernju
相关产品推荐
相关产品推荐

