CI/CD Pass env to other job
https://docs.gitlab.com/ee/ci/variables/index.html#pass-an-environment-variable-to-another-job
특별히 값을 만들어서 다른 작업으로 넘겨줘야할 때가 있다.
다음처럼 하면된다.
build:
stage: build
script:
- echo "BUILD_VARIABLE=value_from_build_job" >> build.env
artifacts:
reports:
dotenv: build.env
deploy:
stage: deploy
variables:
BUILD_VARIABLE: value_from_deploy_job
script:
- echo "$BUILD_VARIABLE" # Output is: 'value_from_build_job' due to precedence
echo "BUILD_VARIABLE=value_from_build_job"
이런식으로 KEY=value
를 만들어서 echo로 출력후 env파일로 저장한다. 그리고 artifacts:reports:dotenv 에 추가한다.
이제 다른 작업에서 $KEY 로 호출하면 자동으로 읽어온다.
동작 방식은 깃랩 러너가 env파일을 읽어서 로딩을 미리 해두고 우리는 $KEY로 사용만 하면된다.
혹시 값이 안넘어오면 아래 코드를 참고해보자. dependency나 need를 사용하면된다.
build:
stage: build
script:
- echo "BUILD_VERSION=hello" >> build.env
artifacts:
reports:
dotenv: build.env
deploy_one:
stage: deploy
script:
- echo "$BUILD_VERSION" # Output is: 'hello'
dependencies:
- build
deploy_two:
stage: deploy
script:
- echo "$BUILD_VERSION" # Output is empty
dependencies: []
deploy_three:
stage: deploy
script:
- echo "$BUILD_VERSION" # Output is: 'hello'
needs:
- build
deploy_four:
stage: deploy
script:
- echo "$BUILD_VERSION" # Output is: 'hello'
needs:
job: build
artifacts: true
deploy_five:
stage: deploy
script:
- echo "$BUILD_VERSION" # Output is empty
needs:
job: build
artifacts: false
deploy_two는 empty인것을 알수 있다. 이건 dependency를 사용하지 않았기 때문이다.
Last updated
Was this helpful?