reactjs - 具有多阶段 dockerfile 的多个 gitlab-ci 阶段

标签 reactjs docker testing 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)都需要在“yarn 构建”被执行之前运行,并且构建被复制到第二个 docker 阶段。

一个解决方案可能是在 yarn build 运行之前执行 yarn test。但我真的很想有一个单独的测试 gitlab-ci 阶段。

这可能吗?或者我是否需要将我的 Dockerfile 阶段拆分为多个 Dockerfile?

最佳答案

您可能希望在 gitlab 中使用多个阶段的原因是快速失败。 但是使用多阶段 docker 或 gitlab 阶段构建可以给你相同的结果,如果测试失败,你将无法取得进一步的进展并将获得堆栈跟踪。一方面,docker multi-stage 可能会更加方便,因为您始终可以调用之前的容器并重现/测试/修复错误。 但总的来说,在 CI 中使用 docker-builder 模式只是不必要的复杂化,最好分离 docker 镜像并在 gitlab 阶段使用它们。

关于reactjs - 具有多阶段 dockerfile 的多个 gitlab-ci 阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52401428/

相关文章:

r - 如何使用 R/exams 包生成包含随机生成的单选答案的考试?

javascript - webpack 开发服务器仅重新加载一次

javascript - 将过滤后的值传递给 react render()

reactjs - 在 ('here is a link' 上出现错误 Invalid src prop `next/image` ) ,主机名 "localhost"未在您的 `next.config.js` 中的图像下配置

linux - Docker macvlan 中绑定(bind)地址

docker - docker ps -a不显示我的容器

selenium - 我想将给定的 Xpath 转换为 CSS

javascript - React Router V4 正在更新 URL,但不刷新页面

docker - 如何在 docker debian :jessie 上安装 oracle-java8-installer

angularjs - Protractor :是否可以测试我的应用程序中没有 404?