首页 > 解决方案 > 为什么 GitLab CI/CD 在将某些文件作为工件传递时会忽略它们?

问题描述

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

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

然后,由于我不希望将任何源文件上传到我的服务器,我将它们与部署不需要的其他一些文件一起删除。

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

标签: deploymentcontinuous-integrationgitlabcontinuous-deploymentgitlab-ci-runner

解决方案


GitLab 中的每个作业默认克隆存储库,然后下载您在依赖项中设置的任何工件。您应该在阶段的作业日志的开头看到这一点deploy

要阻止源文件在部署阶段上传,您可以将GIT_STRATEGY设置为none.

例如:

deploy:
  stage: deploy
  cache: {}
  variables:
    GIT_STRATEGY: none
  dependencies:
    - build
  script:
    - ls -la
    - ls ./assets/ -la

推荐阅读