Gitlab CI 中的 CI/CD 作业如何在自定义 docker 容器中拥有项目文件夹以及如何在 GitHub Actions 中复制它?

问题描述 投票:0回答:1

我正在学习 testdriven.io 的“AWS 和 Docker 上的可扩展 FastAPI 应用程序”课程,但使用 GitHub Actions 而不是 Gitlab CI 会遇到一些挑战。

在第 1 部分 -> 测试和代码质量部分,有一些我不明白的地方。

更准确地说,在“代码质量检查”部分。

以下是

service-talk-booking-code-quality
工作内容:

service-talk-booking-code-quality:
  stage: test
  image: registry.gitlab.com/<your-gitlab-username>/talk-booking:cicd-python3.11-slim
  before_script:
    - cd services/talk_booking/
    - poetry install
  script:
    - poetry run flake8 .
    - poetry run black . --check
    - poetry run isort . --check-only --profile black
    - poetry run bandit .
    - poetry run safety check

以及运行此作业的 docker 容器的 Dockerfile :

FROM python:3.11-slim
RUN mkdir -p /home/gitlab && addgroup gitlab && useradd -d /home/gitlab -g gitlab gitlab && chown gitlab:gitlab /home/gitlab
RUN apt-get update && apt-get install -y curl
USER gitlab
WORKDIR /home/gitlab
RUN curl -sSL https://install.python-poetry.org | python3 -
ENV PATH=/home/gitlab/.local/bin:$PATH
RUN poetry config virtualenvs.in-project true

通过 GitHub 使用容器时在容器中运行

cd / && ls -Rla
时,我看到的是:

2024-01-26T21:08:23.7347494Z ./__w/talk-booking:
2024-01-26T21:08:23.7347603Z total 12
2024-01-26T21:08:23.7347847Z drwxr-xr-x 3 1001  127 4096 Jan 26 21:08 .
2024-01-26T21:08:23.7348076Z drwxr-xr-x 6 1001 root 4096 Jan 26 21:08 ..
2024-01-26T21:08:23.7348380Z drwxr-xr-x 2 1001  127 4096 Jan 26 21:08 talk-booking
2024-01-26T21:08:23.7348387Z 
2024-01-26T21:08:23.7348582Z ./__w/talk-booking/talk-booking:
2024-01-26T21:08:23.7348704Z total 8
2024-01-26T21:08:23.7348920Z drwxr-xr-x 2 1001 127 4096 Jan 26 21:08 .
2024-01-26T21:08:23.7349137Z drwxr-xr-x 3 1001 127 4096 Jan 26 21:08 ..

有一个

talk-booking
目录,但它是空的,导致
poetry
在我的 GitHub 操作中不起作用。

课程中,容器里怎么会有

services/talk_booking/
文件夹,因为它没有复制到Dockerfile中?

我的第一个猜测是简单地在 Dockerfile 中添加一个

COPY
步骤,但我认为提供的文件中没有这个步骤是有原因的。

docker dockerfile github-actions gitlab-ci
1个回答
0
投票

好的,我明白了。

事实证明我需要:

  • 查看存储库
- name: Checkout Repository
  uses: actions/checkout@main
  • 以 root 身份运行容器
container:
  image: kernju/my-image
  options: --user root
© www.soinside.com 2019 - 2024. All rights reserved.