我正在学习 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
步骤,但我认为提供的文件中没有这个步骤是有原因的。
好的,我明白了。
事实证明我需要:
- name: Checkout Repository
uses: actions/checkout@main
container:
image: kernju/my-image
options: --user root