deployment - 为什么 GitLab CI/CD 在将某些文件作为工件传递时会忽略它们?
问题描述
我的 GitLab 存储库有一个简单的 CI/CD 设置。
在build
工作期间,命令安装 NPM,运行使用 Webpack 构建 JS/SCSS 等的构建脚本。
然后,由于我不希望将任何源文件上传到我的服务器,我将它们与部署不需要的其他一些文件一起删除。
但是,当父目录htdocs
作为工件上传以便可以在部署作业中使用时,当我运行ls -la
并ls ./assets -la
在deploy
作业中时,我仍然可以看到我之前在build
作业中删除的所有文件。
当我从浏览器下载工件 ZIP 文件时,一切都正确,因为我所有不需要的文件都消失了。
为什么我仍然可以在作业中看到源文件和分发文件build
?这是一个错误吗?
目前,这导致我的所有源文件都上传到我的服务器,这不是我想要的。任何人都可以帮忙吗?
image: node:11.9.0
before_script:
- cd ./htdocs
stages:
- build
- deploy
build:
stage: build
script:
- npm install --quiet
- npm run build
- rm -rf node_modules assets/src
- rm -r .??* package.json package-lock.json README.md webpack.*.js
artifacts:
paths:
- ./htdocs/
deploy:
stage: deploy
cache: {}
dependencies:
- build
script:
- ls -la
- ls ./assets/ -la
解决方案
GitLab 中的每个作业默认克隆存储库,然后下载您在依赖项中设置的任何工件。您应该在阶段的作业日志的开头看到这一点deploy
。
要阻止源文件在部署阶段上传,您可以将GIT_STRATEGY设置为none
.
例如:
deploy:
stage: deploy
cache: {}
variables:
GIT_STRATEGY: none
dependencies:
- build
script:
- ls -la
- ls ./assets/ -la