gpt4 book ai didi

node.js - Docker/CI : Get access to nodeJS app, 在另一个阶段创建

转载 作者:太空宇宙 更新时间:2023-11-04 02:07:37 28 4
gpt4 key购买 nike

在我的 CI 管道 (gitlab) 中,有一个 构建end2end-testing 阶段。在构建阶段,将创建应用程序的文件。然后我想将生成的文件复制到 e2e_testing 容器以使用此应用程序进行一些测试。

如何将生成的文件 (/opt/project/build/core/bundle) 复制到镜像?

对于 e2e 测试,我想使用 nightwatchJS - 请参阅下面的 e2e docker 图像。也许可以在 e2e 镜像中使用构建镜像?

我需要做的是对生成的nodeJS应用程序进行 nightwatchJS e2e 测试

<小时/>

我的尝试

使用docker cp命令将生成文件复制到e2e_testing容器。

build:
stage: build
before_script:
- meteor build /opt/project/build/core --directory
script:
- cd /opt/jaqua/build/core/bundle
- docker build -t $CI_REGISTRY_IMAGE:latest .
after_script:
- docker cp /opt/project/build/core/bundle e2e_testing:/opt/project/build/core/

但这不起作用,因为下一阶段 (e2e) 将从 e2e:latest 镜像创建一个容器。因此,在此容器中不存在 bundle 文件夹,因此此示例脚本失败。

e2e:
image: e2e:latest
stage: e2e
before_script:
- cd /opt/project/build/core/bundle && ls -la
script:
# - run nightwatchJS to do some e2e testing with the build bundle

e2e:最新镜像 Dockerfile

FROM java:8-jre

## Node.js setup
RUN curl -sL https://deb.nodesource.com/setup_4.x | bash -
RUN apt-get install -y nodejs

## Nightwatch
RUN npm install -g nightwatch

一个名为 e2e_testing 的容器是从此镜像创建的,并且它一直在运行。因此,在 CI 管道运行时,容器已经存在。

但在创建此镜像时,应用程序文件不存在,因为它们是在构建阶段生成的。所以我无法使用 Dockerfile 将这些文件放入 docker 镜像中。

那么如何在 e2e 阶段访问构建阶段生成的文件呢?

或者是否可以在 nightwatch 镜像 (e2e) 中使用构建镜像 ($CI_REGISTRY_IMAGE:latest)

最佳答案

使用 artifacts 怎么样? ?

基本上,在构建后将 bundle 文件夹移动到存储库的根目录,并将 bundle 文件夹定义为工件。然后,从 e2e 作业中,将从构建阶段的工件下载捆绑文件夹,您将能够使用其内容。以下是如何执行此操作的示例:

build:
stage: build
before_script:
- meteor build /opt/project/build/core --directory
script:
# Copy the contents of the bundle folder to ./bundle
- cp -r /opt/project/build/core/bundle ./bundle
- cd /opt/jaqua/build/core/bundle
- docker build -t $CI_REGISTRY_IMAGE:latest .
artifacts:
paths:
- bundle

e2e:
image: e2e:latest
stage: e2e
dependencies:
- build
script:
- mkdir -p /opt/project/build/core/bundle
- cp -r ./bundle /opt/project/build/core/bundle
# - run nightwatchJS to do some e2e testing with the build bundle

我不知道您是否仍然需要 docker build 部分,因此我将其留在那里,以防您想将该容器推送到某个地方。

关于node.js - Docker/CI : Get access to nodeJS app, 在另一个阶段创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43621022/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com