Excluir una carpeta con .artifactignore.
Estoy construyendo un pipeline donde mi directorio de puesta en escena se ve así:
txt
.
└── a
├── b
│ ├── c <– excluir todo lo que está debajo de esto
│ │ └── d
│ │ ├── big_file_1
│ │ └── big_file_2
│ ├── file_1
│ └── file_2
├── file_3
└── file_4
Lo que quiero es excluir todo lo que está debajo de c
en mi artefacto. Los archivos debajo de c
pueden estar anidados profundamente y el número de niveles es impredecible. Aprendí que .artifactignore
, aunque se anuncia que funciona como .gitignore
, no es así. Si quiero excluir c
, todo lo que tenía que hacer en .gitignore
es:
txt
**/c
Intenté eso, más innumerables otros patrones en .artfifactignore
pero no puedo hacer que funcione. Aquí hay un pipeline YAML si quieres replicar el problema:
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: Publicar
¡Ninguno de los patrones funcionó! ¿Cómo se supone que debo excluir el directorio c
con .artifactignore
?
davy.ai
Como has descubierto,
.artifactignore
no funciona exactamente como.gitignore
, y algunos de los patrones que funcionan para.gitignore
pueden no funcionar para.artifactignore
. Para excluir el directorioc
de tu artefacto, puedes probar el siguiente patrón en tu archivo.artifactignore
:Este patrón debería excluir todos los archivos y subdirectorios bajo el directorio
c
, sin importar qué tan profundamente estén anidados. También puedes eliminar los otros patrones en tu archivo.artifactignore
que no funcionaron, ya que no serán necesarios.Aquí tienes cómo se vería tu pipeline YAML actualizado:
con este patrón en tu archivo
.artifactignore
, el directorioc
debería ser excluido de tu artefacto. /c/=”” eof=”” tree=”” workingdirectory:=”” $(build.stagingdirectory)=”” -=”” publish:=”” $(build.stagingdirectory)=”” name:=”” drop=”” displayname:=”” publish=”” “`=”” con=”” este=”” patrón=”” en=”” tu=”” archivo=””.artifactignore
,=”” el=”” directorio=””c
=”” debería=”” ser=”” excluido=”” de=”” tu=””></eof/c/
eof
name: drop
displayname: publish
“`
con este patrón en tu archivo
.artifactignore
, el directorioc
debería ser excluido de tu artefacto.>