为什么 GitLab CI/CD 在将某些文件作为工件传递时会忽略它们?

Why is GitLab CI/CD ignoring certain files when passing them as an artifact?

我的 GitLab 存储库有一个简单的 CI/CD 设置。

build 作业期间,命令安装 NPM,运行 使用 Webpack 构建 JS/SCSS 等的构建脚本

然后,因为我不想将任何源文件上传到我的服务器,所以我将它们连同部署不需要的其他一些文件一起删除。

但是,当父目录 htdocs 被上传为工件以便它可以在部署作业中使用时,当我 运行 ls -lals ./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