Gitlab에 전달되는 아티팩트를 쉽게 디버깅하는 방법

2844 단어 devopstoolinggitlab

Gitlab에 전달되는 아티팩트를 디버그하는 방법



최근에 저는 GitLab 파이프라인 파일로 많은 작업을 해왔으며 이제 평소보다 설정이 조금 더 복잡해졌습니다. 제 경우 중간 단계는 다른 프로젝트에서 템플릿으로 포함되어 있습니다. 첫 번째 단계에서 아티팩트가 마지막 단계에 도달하지 않는 고약한 버그가 있었습니다. 그러나 기본적으로 작동해야 하는 Gitlab의 문서에 따라.

mygitlab-ci.yml 의 단순화된 버전입니다. StackOverflow의 영감:

image: ubuntu:18.04

stages:
  - test
  - build
  - deploy

test:
  stage: test
  script:
    - echo "test result..." >> test_result.txt
  artifacts:
    paths:
    - "test_result.txt"
    expire_in: 1 day

# runs in stage build
include:
 - project: 'another-project'
   ref: 'master'
   file:
     - '/templates/build.yml' # this creates build_result.txt

# trying to debug if included step can see the artifact from before
included-build:
  script:
    # This is wrong! Overriding the included template's script section
    - cat test_result.txt

# test_result didn't arrive here at all
deploy:
  stage: deploy
  script:
    - cat test_result.txt
    - cat build_result.txt


문제



그래서 왜test_result.txt 첫 번째 단계부터 마지막 ​​단계까지 도달하지 않았는지 디버깅하고 싶었습니다.

내 첫 번째 생각은 script 사이의 모든 단계에 cat test_result.txt를 추가하여 이것을 디버깅할 수 있다는 것입니다. 맞습니까? 아니요!

포함된 템플릿도 script 섹션을 도입하기 때문에 script 섹션을 included-build에 추가하면 포함된 스크립트가 재정의됩니다. 따라서 원래 동작을 잃습니다.

🔥 핫 팁, (병합된 YAML 보기)[ https://docs.gitlab.com/ee/ci/pipeline_editor/#view-expanded-configuration ] 탭을 통해 확인하여 언제든지 이를 확인할 수 있습니다. 이렇게 하면 템플릿에서 병합된 모든 것을 볼 수 있고 놀라지 않을 것입니다 :).

해결책



나는 모든 직업이 before_script를 가질 수 있다는 것을 발견했습니다. 제 경우에는 어떤 단계에서도 사용하지 않았기 때문에 안심하고 사용할 수 있었습니다. 이렇게 하면 이미 포함된 스크립트를 손상시키지 않을 수 있습니다.

# trying to debug if included step can see the artifact from before
included-build:
  when: on_success
  before_script:
    # right! Won't change the original behavior of this job
    - cat test_result.txt


그래서 나는 이 before_script 섹션을 첫 단계와 마지막 단계 사이의 모든 작업에 추가할 수 있었고 이렇게 하면 버그를 쉽게 찾을 수 있었습니다. 이 작은 팁이 여러분에게도 도움이 되기를 바랍니다.

🔥🔥 추가 핫 팁, Gitlab Workflow VS Code Extension을 사용하세요. 온프레미스 서버에서도 작동합니다(공식 gitlab.com 프로젝트뿐만 아니라)!

당신은 할 수 있습니다 ...
  • VS Code에서 나가지 않고 최신 파이프라인을 따릅니다.
  • CI 변수 자동 완성이 있습니다.
  • 병합 요청 검토 및 생성

  • 그것은 매력처럼 작동하며 GitLab으로 작업할 때 필수품입니다.

    좋은 웹페이지 즐겨찾기