使用 .artifactignore 排除文件夹
Exclude a folder with .artifactignore
我正在构建一个管道,我的暂存目录如下所示:
.
└── a
├── b
│ ├── c <-- exclude everything under this
│ │ └── d
│ │ ├── big_file_1
│ │ └── big_file_2
│ ├── file_1
│ └── file_2
├── file_3
└── file_4
我想要的是从我的工件中排除 c
下的所有内容。 c
下的文件可以深度嵌套,层数不可预测。我了解到 .artifactignore
,虽然宣传它像 .gitignore
一样工作,但绝非如此。如果我想排除 c
,我在 .gitignore
中要做的就是:
**/c
我试过了,加上 .artfifactignore
中的无数其他模式,但无法正常工作。如果您想重现问题,这里有一个 YAML 管道:
steps:
- bash: |
mkdir -p a/b/c/d
touch a/b/c/d/big_file_1
touch a/b/c/d/big_file_2
touch a/b/file_1
touch a/b/file_2
touch a/file_3
touch a/file_4
echo > .artifactignore <<EOF
**/c
**/c/*
**/c/**
**/c/**/*
a/b/c/**
**/big*
EOF
tree
workingDirectory: $(Build.StagingDirectory)
- publish: $(Build.StagingDirectory)
name: drop
displayName: Publish
None 个模式有效!我应该如何用 .artifactignore
排除 c
目录?
我在您的管道中做了一些非常小的更新(“cat”而不是“echo”),对我来说效果很好。
我的管道:
trigger:
- none
stages:
- stage: first
jobs:
- job: firstJob
continueOnError: false
steps:
- bash: |
mkdir -p a/b/c/d
touch a/b/c/d/big_file_1
touch a/b/c/d/big_file_2
touch a/b/file_1
touch a/b/file_2
touch a/file_3
touch a/file_4
cat > .artifactignore <<EOF
**/c
EOF
tree
workingDirectory: $(Build.StagingDirectory)
- publish: $(Build.StagingDirectory)
name: drop
displayName: Publish
树的输出:
已发布的工件:
参考文献:
- https://docs.microsoft.com/en-us/azure/devops/artifacts/reference/artifactignore?view=azure-devops
- https://git-scm.com/docs/gitignore
- How to write multiple line string using Bash with variables?
我正在构建一个管道,我的暂存目录如下所示:
.
└── a
├── b
│ ├── c <-- exclude everything under this
│ │ └── d
│ │ ├── big_file_1
│ │ └── big_file_2
│ ├── file_1
│ └── file_2
├── file_3
└── file_4
我想要的是从我的工件中排除 c
下的所有内容。 c
下的文件可以深度嵌套,层数不可预测。我了解到 .artifactignore
,虽然宣传它像 .gitignore
一样工作,但绝非如此。如果我想排除 c
,我在 .gitignore
中要做的就是:
**/c
我试过了,加上 .artfifactignore
中的无数其他模式,但无法正常工作。如果您想重现问题,这里有一个 YAML 管道:
steps:
- bash: |
mkdir -p a/b/c/d
touch a/b/c/d/big_file_1
touch a/b/c/d/big_file_2
touch a/b/file_1
touch a/b/file_2
touch a/file_3
touch a/file_4
echo > .artifactignore <<EOF
**/c
**/c/*
**/c/**
**/c/**/*
a/b/c/**
**/big*
EOF
tree
workingDirectory: $(Build.StagingDirectory)
- publish: $(Build.StagingDirectory)
name: drop
displayName: Publish
None 个模式有效!我应该如何用 .artifactignore
排除 c
目录?
我在您的管道中做了一些非常小的更新(“cat”而不是“echo”),对我来说效果很好。
我的管道:
trigger:
- none
stages:
- stage: first
jobs:
- job: firstJob
continueOnError: false
steps:
- bash: |
mkdir -p a/b/c/d
touch a/b/c/d/big_file_1
touch a/b/c/d/big_file_2
touch a/b/file_1
touch a/b/file_2
touch a/file_3
touch a/file_4
cat > .artifactignore <<EOF
**/c
EOF
tree
workingDirectory: $(Build.StagingDirectory)
- publish: $(Build.StagingDirectory)
name: drop
displayName: Publish
树的输出:
已发布的工件:
参考文献:
- https://docs.microsoft.com/en-us/azure/devops/artifacts/reference/artifactignore?view=azure-devops
- https://git-scm.com/docs/gitignore
- How to write multiple line string using Bash with variables?