当前位置: 首页 > 知识库问答 >
问题:

具有多级dockerfile的多个gitlab-ci级

简学文
2023-03-14

我有一个有两个阶段的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 build”执行之前运行,并且build被复制到seconds docker阶段。

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

这可能吗?还是需要将我的Dockerfile阶段拆分为多个DockerFiles?

共有1个答案

赵夕
2023-03-14

您可能需要gitlab中的多个阶段的原因是fail-fast。但是使用多级docker或gitlab阶段进行构建可以得到相同的结果,如果测试失败,您将无法进一步获得StackTrace。一方面,docker multi-stage可能更加方便,因为您总是可以调用前一个容器并复制/测试/修复错误。但总体而言,在CI中使用docker-builder模式只是不必要的复杂,最好将docker映像分离出来并在gitlab阶段使用。

 类似资料:
  • 我在gitlab上有两个项目:前端(角)和模块后端(Spring)。所以我想在后端测试和构建后使用管道在前端运行测试。例如,我想运行测试并构建后端模块,当它成功时,我想运行前端测试,在我部署它之前调用api: 前端管道。gitlab ci。yml:后台:测试= 我该怎么做,拜托?

  • 我对gitlab ci有一个问题,我的java项目应该支持不同的java版本,因为这是必要的,我很难正确设置gitlab ci。我的gradle builder可以在我的个人电脑上运行,但在gitlab或jitpack上,它甚至没有成功。我的项目有以下结构 有我的gitlab存储库我试图建立:https://gitlab.com/Ste3et_C0st/protectionlib/-/tree/m

  • 我的ci配置不适用于代码质量阶段: 源示例如下:https://gitlab.com/tyvain/mvn-ci-test/blob/master/.gitlab-ci.yml 我不能使它与官方的gitlab代码质量示例工作:https://docs.gitlab.com/ee/ci/examples/code_quality.html 错误为:“此GitLab CI配置无效:代码\质量作业:阶段

  • 我目前已经实现了这个图,我希望在描述具有多个父节点的子节点的同时保持结构和可折叠性。有办法做到这一点吗?我研究了力图,但我也希望保留一个集合层次结构(这意味着第一级的父级可以有一个子级,第三级可以显示)。经过大量的研究和对当前代码的修补,我无法找出我的问题。有没有人对显示具有多个父节点的D3树节点有任何经验?

  • gitlab-ci 是为 Gitlab 提供的持续集成服务器。 支持的操作系统: Ubuntu Linux Debian/GNU Linux 额外的 GitLab CI 要求: ruby 1.9.3 MySQL or PostgreSQL 当前版本 (3.x) 适用于 GitLab 5.3+.

  • 我在空闲时间实现了一个android应用程序(在Kotlin中,但这与问题无关),我尝试使用android jetpack和新的库。我有一个带有导航抽屉的活动。我试着遵循sunflower应用程序示例。它在主活动中使用以下组合来启用导航抽屉后面的逻辑: 注意:当在抽屉菜单中单击时,它会自动导航到正确的片段,并关闭抽屉,保持它们被选中等。所有的样板代码。这很整洁,也很有效。据我所知,抽屉菜单项的ID