gitlab神器zip文件的命名与嵌套

gitlab artifact naming and nesting of zip file

我在 gitlab 配置中创建了以下工件

Building Artifacts:
  stage: Building Artifacts
  cache: 
    key: $CI_COMMIT_REF_SLUG-$CI_PROJECT_DIR
    paths:
      - node_modules/
  script:
    - npm run build
  artifacts:
    name: "staging_api"
    paths:
    - dist/
  only:
   - master

问题是:工件总是使用 staging_api.zip 文件名创建,并且里面总是有一个名为 dist 的目录,然后是该目录中的文件。相反,我需要所有文件都直接在 staging_api.zip 内,并且没有子目录 (dist)。如何实现?

工件在工作区中出现时始终捆绑在 zip 中。无法更改此行为。

因此,使工件在工件 zip 中以不同结构(如根目录)出现的唯一方法是在工作区中按原样排列工件文件并更改 artifacts:paths: 规则匹配这些文件。

在您的情况下,如果您将 dist/* 文件移动到工作区根目录,如果您不知道构建生成的 files/directories 的名称,这可能会带来挑战。克服这一挑战的一种可能方法是 use artifacts:untracked:,它会自动将所有未跟踪的文件添加到工件中。这可以选择性地与 artifacts:exclude: 结合使用以忽略某些未跟踪的文件(例如 node_modulesbuild 等)。

因此你可能会这样做:

script:
  # ...
  - mv dist/* ./  # move files from dist to workspace root
artitacts:
  untracked: true  # artifact all untracked files
  exclude:  # exclude files that should not be uploaded
    - build/**/*
    - node_modules/**/*
    - ".cache/**/*"
    # add any other files you want to exclude that are untracked
    # repository files (tracked files) are already excluded