developer tip

.gitlab-ci.yml에서 와일드 카드 아티팩트 하위 디렉터리를 지정하는 방법은 무엇입니까?

copycodes 2021. 1. 8. 08:31
반응형

.gitlab-ci.yml에서 와일드 카드 아티팩트 하위 디렉터리를 지정하는 방법은 무엇입니까?


GitLab CI를 사용하여 C # 솔루션을 빌드하고 한 빌드 단계에서 다른 빌드 단계로 일부 빌드 아티팩트를 전달하려고합니다.

문제는 아티팩트가 단일 디렉토리가 아니라 다른 하위 디렉토리에 있지만 모두 동일한 이름 bin/또는 obj/.

.gitlab-ci.yml모습은 다음과 같습니다.

...
stages:
  - build
  - test

build:
  stage: build
  script:
    CALL %MSBuild% ...
  artifacts:
    paths:
      - /**/bin/
      - /**/obj/
    expire_in: 6 hrs

test:
  stage: test
  dependencies:
    - build
  ...

나는 다른 방법을 사용하여 인공물을 포착하려고 시도했다.

**/bin/
**/obj/

(유효하지 않은 구문) 또는

.*/bin/
.*/obj/

그러나 하나는, 어떤 유물을 찾을 수 없습니다 그냥 /**/bin/하고 /**/obj/나에게 다음과 같은 오류를 제공합니다 :

Uploading artifacts...
WARNING: /**/bin/: no matching files
WARNING: /**/obj/: no matching files

아티팩트를 스캔 할 하위 디렉토리 패턴을 어떻게 지정할 수 있습니까? 아니면 이것이 가능할까요?

단순히 사용

artifacts:
  untracked: true

packages/너무 큰 아카이브로 인해 아티팩트 업로드가 실패하는 추적되지 않은 거대한 하위 디렉토리로 인해 옵션이 아닙니다 .

Uploading artifacts...
untracked: found 4513 files                        
ERROR: Uploading artifacts to coordinator... too large archive  id=36 responseStatus=413 Request Entity Too Large token=...
FATAL: Too large

gitlab-CI-멀티 러너 빌드 주자를 사용하여 내장되어 이동을 현재 사용 () filepath.Glob을 어떤 특정 이슈를 스캔 file_archiver.go .

Go는 여기 SO의 다른 질문 에서 논의한 것처럼 이중 별 모양의 표현을 지원하지 않는 것 같습니다 . 따라서 현재로서는 완전한 기능을 갖춘 **/bin표현 을 사용할 방법이없는 것 같습니다 .

그러나 모든 프로젝트가 솔루션 루트 아래 동일한 수준에 있기 때문에 다음과 같은 것을 사용할 수 있습니다.

artifacts:
  paths:
    - "*/bin"
    - "*/obj"

Note that the quotes (") seem to be required, as well as no trailing path separator at the end.

It should also be possible to explicitly add more levels by adding more globbing expressions (as described here):

paths:
  ...
  - "*/obj"
  - "*/*/bin"
  - "*/*/obj"
  ...

GitLab is tracking this issue here, and will possibly be fixed in a future version.

ReferenceURL : https://stackoverflow.com/questions/38009869/how-to-specify-wildcard-artifacts-subdirectories-in-gitlab-ci-yml

반응형