gitlab-ci에서 동적으로 전역 변수 설정

주앙 비 토리노

pom.xml 파일에서 값을 가져 와서 몇 가지 변수를 설정하고 싶습니다. 이러한 변수는 여러 단계 및 작업에서 사용되므로 전역이어야합니다.

gitlab-ci 문서에 따르면 두 가지 방법으로 전역 변수를 설정할 수 있습니다.

  1. 변수 문 사용 :

    variable:  
     pom_artifactID: $(grep -m1 '<artifactId>' pom.xml | cut -d '<' -f2  |cut -d '>' -f2)
    
  2. "before"스크립트 사용 :

     before_script:
       - pom_artifactID=$(grep -m1 '<artifactId>' pom.xml | cut -d '<' -f2  |cut -d '>' -f2)
       - pom_artifactVersion=$(grep -m1 '<version>' pom.xml | cut -d '<' -f2  |cut -d '>' -f2)
       - pom_packaging=$(grep -m1 '<packaging>' pom.xml | cut -d '<' -f2  |cut -d '>' -f2)
       - pom_finalName=$({ grep -m1 '<finalName>' pom.xml |  cut -d '<' -f2 | cut -d '>' -f2; [ ${PIPESTATUS[0]} -eq 0 ] && true || echo ${pom_artifactID}-${pom_artifactVersion}.$pom_packaging}; })
    

첫 번째는 gitlab-ci가 $ (command)를 평가하지 않기 때문에 작동하지 않으므로 pom_artifactID리터럴 "$ (grep -m1 ''pom.xml | cut -d '<'-f2 | cut -d '>'가됩니다. -f2) "

두 번째는 "before_script"가 "grep"명령에 의존하고 내 파이프 라인에 사용 된 일부 도커 이미지에 이전 버전의 grep이 있기 때문에 작동하지 않습니다.

전역 변수를 설정하는 또 다른 방법이 있습니다. 스테이지와 작업간에 변수를 전달합니까?

이반

작업과 단계간에 값 전달

현재 GitLab에서는 단계 또는 작업간에 환경 변수를 전달할 방법이 없습니다.
하지만 이에 대한 요청이 있습니다 : https://gitlab.com/gitlab-org/gitlab/-/issues/22638

현재 해결 방법은 아티팩트 를 사용하는 것 입니다. 기본적으로 파일을 전달합니다.
비슷한 사용 사례가있었습니다. Java 앱 버전을 가져와 pom.xml나중에 파이프 라인에서 다양한 작업에 전달했습니다.

우리가 그것을 어떻게했는지 .gitlab-ci.yml:

stages:
  - prepare
  - package

variables:
  VARIABLES_FILE: ./variables.txt  # "." is required for image that have sh not bash

get-version:
  stage: build
  script:
    - APP_VERSION=...
    - echo "export APP_VERSION=$APP_VERSION" > $VARIABLES_FILE
  artifacts:
    paths:
      - $VARIABLES_FILE
package:
  stage: package
  script:
    - source $VARIABLES_FILE
    - echo "Use env var APP_VERSION here as you like ..."

 
 

값 추출 pom.xml

그런데 XML 요소가 잠재적으로 여러 줄에 걸쳐있을 수 있으므로 일반 xml.pom에서 값을 추출하려면 XML 로 처리하는 pom.xml것이 좋습니다 grep.

적어도 몇 가지 옵션이 있습니다. 예 :

  1. xmllint도구에서 XPath 사용libxml2-utils
get-version:
  image: ubuntu
  script:
    - apt-get update
    - apt-get install -y libxml2-utils
    - APP_VERSION=`xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' $POM_FILE`
  1. pythonXML 처리 사용
get-version:
  image: python3
  script:
    - APP_VERSION=$(python3 -c "import xml.etree.ElementTree as ET; print(ET.parse(open('pom.xml')).getroot().find('{http://maven.apache.org/POM/4.0.0}version').text)")

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Ubuntu 14.04에서 전역 적으로 환경 변수 $ PATH 설정

분류에서Dev

동적으로 전역 JS 변수 설정

분류에서Dev

서브 쉘에서 전역 변수로 값 설정

분류에서Dev

함수에서 전역 변수 설정

분류에서Dev

Powershell-전역 적으로 설정하지 않는 함수 내부에 변수 설정?

분류에서Dev

Excel VBA에서 전역 변수 설정

분류에서Dev

Gitlab .gitlab-ci.yml에서 React 앱으로 환경 변수를 전달할 수 있습니까?

분류에서Dev

메서드 C #에서 전역 적으로 설정된 변수를 사용하는 방법

분류에서Dev

2.7에서 다른 방식으로 전역 변수를 설정하는 Python

분류에서Dev

Gitlab CI / CD 작업을 수동 모드로 동적으로 전환

분류에서Dev

메서드로 전역 변수를 설정하는 방법

분류에서Dev

.gitlab.ci.yml에서 Dockerfile로 변수를 전달하는 방법

분류에서Dev

전역 및 정적 전역 변수에 대한 Extern

분류에서Dev

textInteractionFlags를 모든 QLabel에 전역 적으로 설정할 수 있습니까?

분류에서Dev

재귀 함수에서 전역 변수를 정적 변수로 대체

분류에서Dev

Gitlab CI / CD : Runner에서 사용할 수없는 앵커 / 전역 변수의 변수

분류에서Dev

스크립트에서 동적으로 Azure DevOps 변수 설정

분류에서Dev

SELECT 문 내에서 동적으로 변수 설정

분류에서Dev

레일에서 동적으로 변수 설정

분류에서Dev

C #에서 전역 적으로 정의 된 정적 변수를 어떻게 사용할 수 있습니까?

분류에서Dev

함수에 설정된 전역 변수가 작동하지 않습니다.

분류에서Dev

bazel : 환경 변수에서 전역 변수 설정

분류에서Dev

Gitlab CI에서 그룹 환경 변수를 설정하는 방법

분류에서Dev

전 세계적으로 수정하는 방법 자바 내에서 전역 변수

분류에서Dev

Lua의 전역 변수를 C에서 '전역 적으로'변경

분류에서Dev

PHP에서 동적으로 전역 변수를 만드는 방법

분류에서Dev

laravel에서 전역 적으로 lc_time_names 설정

분류에서Dev

Windows 10에서 전역 적으로 아이콘 크기 설정

분류에서Dev

Emacs에서 전역 적으로 커서 유형을 어떻게 설정할 수 있습니까?

Related 관련 기사

  1. 1

    Ubuntu 14.04에서 전역 적으로 환경 변수 $ PATH 설정

  2. 2

    동적으로 전역 JS 변수 설정

  3. 3

    서브 쉘에서 전역 변수로 값 설정

  4. 4

    함수에서 전역 변수 설정

  5. 5

    Powershell-전역 적으로 설정하지 않는 함수 내부에 변수 설정?

  6. 6

    Excel VBA에서 전역 변수 설정

  7. 7

    Gitlab .gitlab-ci.yml에서 React 앱으로 환경 변수를 전달할 수 있습니까?

  8. 8

    메서드 C #에서 전역 적으로 설정된 변수를 사용하는 방법

  9. 9

    2.7에서 다른 방식으로 전역 변수를 설정하는 Python

  10. 10

    Gitlab CI / CD 작업을 수동 모드로 동적으로 전환

  11. 11

    메서드로 전역 변수를 설정하는 방법

  12. 12

    .gitlab.ci.yml에서 Dockerfile로 변수를 전달하는 방법

  13. 13

    전역 및 정적 전역 변수에 대한 Extern

  14. 14

    textInteractionFlags를 모든 QLabel에 전역 적으로 설정할 수 있습니까?

  15. 15

    재귀 함수에서 전역 변수를 정적 변수로 대체

  16. 16

    Gitlab CI / CD : Runner에서 사용할 수없는 앵커 / 전역 변수의 변수

  17. 17

    스크립트에서 동적으로 Azure DevOps 변수 설정

  18. 18

    SELECT 문 내에서 동적으로 변수 설정

  19. 19

    레일에서 동적으로 변수 설정

  20. 20

    C #에서 전역 적으로 정의 된 정적 변수를 어떻게 사용할 수 있습니까?

  21. 21

    함수에 설정된 전역 변수가 작동하지 않습니다.

  22. 22

    bazel : 환경 변수에서 전역 변수 설정

  23. 23

    Gitlab CI에서 그룹 환경 변수를 설정하는 방법

  24. 24

    전 세계적으로 수정하는 방법 자바 내에서 전역 변수

  25. 25

    Lua의 전역 변수를 C에서 '전역 적으로'변경

  26. 26

    PHP에서 동적으로 전역 변수를 만드는 방법

  27. 27

    laravel에서 전역 적으로 lc_time_names 설정

  28. 28

    Windows 10에서 전역 적으로 아이콘 크기 설정

  29. 29

    Emacs에서 전역 적으로 커서 유형을 어떻게 설정할 수 있습니까?

뜨겁다태그

보관