reactjs - 具有多阶段 dockerfile 的多个 gitlab-ci 阶段
问题描述
我有一个包含两个阶段的 Dockerfile;第一阶段从源代码构建一个 React 应用程序,第二阶段复制构建并添加 NGINX 服务器:
FROM kkarczmarczyk/node-yarn as builder
COPY . /workspace
RUN set -ex \
yarn global add create-react-app \
&& yarn install \
&& GENERATE_SOURCEMAP=false yarn build
FROM nginx:mainline-alpine
COPY ./nginx-default.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /workspace/build /var/www/html/
我也在使用 gitlab-ci,我希望有多个阶段:构建、测试和部署。但我不知道如何拆分构建和测试阶段,因为我使用的是多阶段 Dockerfile。问题是所有 JS 测试(针对 React)都需要在“纱线构建”执行之前运行,并且构建被复制到秒 docker 阶段。
一个解决方案可能是在运行yarn test
之前yarn build
执行。但我真的很想有一个单独的测试 gitlab-ci 阶段。
这可能吗?还是我需要将 Dockerfile 阶段拆分为多个 Dockerfile?
解决方案
您是否考虑过使用 gitlab 工件传递必要的文件?如果您在一个阶段通过
artifacts:
paths:
- some_path_or_file
然后 gitlab 在以下阶段提供这些。另请参阅https://docs.gitlab.com/ee/user/project/pipelines/job_artifacts.html和https://forum.gitlab.com/t/access-artifact-in-next-task-to-deploy/ 9295/2。
推荐阅读
- list - Swagger @ApiParam - 如何使用@ApiParam 指定列表的默认值?
- c# - Selenium 无法获取 Cookie
- python - 使用 scrapy 重定向 strava.com 中的授权问题。日志说 strava 将我从 /login 重定向到 /dashboard 到 /login
- javascript - 使用 JS 在模态中选择 html 类以在上传表单中显示文件名(在 Laravel 中)
- windows - 如何使用 bat 将卸载的文件复制回同一位置
- azure - Azure 资源提供程序卡在注册中
- azure - 如何允许客户端租户在我的多租户 Azure AD 应用程序中添加自定义角色
- c++ - 括号检查器 C++ 程序
- python - 在 Pandas DataFrame 中设置多条件列时出错
- ruby-on-rails - Change the log location (i.e., `LogDevice`) in a Ruby on Rails (version 6) application