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_modules
、build
等)。
因此你可能会这样做:
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
我在 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_modules
、build
等)。
因此你可能会这样做:
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