我有一个做2件主要事情的管道:1)使用来自外部提供程序的内容构建静态站点,以及2)从该静态站点构建docker容器。
目前,我将这些步骤分为2个阶段,并且构建阶段会生成一个工件
ArFragment
虽然我无法进入打包阶段以查看生成的文件-stages:
- build
- package
build:
stage: build
image: node:12
script:
- npm ci
- npm run build
artifacts:
untracked: true
paths:
- folder/for/project
- folder/that/was/not/there/before/build/time
package:
stage: package
image: docker:stable
services:
- docker:dind
needs:
- build
script:
- export DOCKER_HOST=tcp://docker:2375/
- docker build -t my-project .
命令将构建一个存在docker build -t my-project
但不存在folder/for/project
的版本。在构建步骤完成后下载工件确实会给我两个文件夹,因此很明显,这是从该步骤中导出正确的内容,而不是导入到下一个步骤。>
打包阶段的CI日志确实表明它正在下载某物,但我无法确定它的去向或访问方式(someID和令牌,此处为匹配上传值中的值)构建步骤)
folder/that/was/not/there/before/build/time
如何将这些文件从管道的一个阶段传递到下一个阶段?
答案 0 :(得分:0)
我现在设法解决了这个问题,希望将来对其他人有帮助。问题是我为自己的工作命名了与阶段相同的名称(build
,test
等),因此GitLab一定会感到困惑。使用问题中的示例,可行的解决方案将是:
stages:
- build
- package
build-job:
stage: build
image: node:12
script:
- npm ci
- npm run build
artifacts:
untracked: true
paths:
- folder/for/project
- folder/that/was/not/there/before/build/time
package:
stage: package
image: docker:stable
services:
- docker:dind
dependencies:
- build-job
script:
- export DOCKER_HOST=tcp://docker:2375/
- docker build -t my-project .
注意,我已将build
作业更改为build-job
,并更新了依赖项名称,并且阶段名称保持不变。