我正在使用容器化环境的CI / CD管道上工作。
为了区分环境,我在entrypoint.sh
中使用了一个基本的外壳程序,该外壳程序在容器出现时执行,在该外壳程序中,我使用了一个由Gitlab管理的环境变量:{{1} }。但是,当我在本地运行容器而不是在运行器上运行时,shell脚本的执行效果似乎不同。疯了是因为不是容器的全部要点?
CI_JOB_STAGE
似乎不起作用,即使使用和CI_JOB_STAGE
打印出值时也会显示这些值我要附上
的要点echo
if [[ $CI_JOB_STAGE -eq "locally" ]] && ! test -f "./env/bin/flask"
)这些阶段仍然可以正常运行,但是我发现所有这些都很令人困惑。是否有人对这些跑步者的执行情况有详细的了解?
要点
答案 0 :(得分:0)
Gitlab支持number of executors,其中每个行为可能略有不同(执行程序可能会挂载自定义卷,禁止特权容器)
我不鼓励使用entrypoint.sh
中的脚本。尝试将其重写为.gitlab-ci.yml
:
stages:
- install
- build
- test
job 0:
stage: .pre
script: install some prerequisites
job 1:
stage: install
script:
- python3 -m venv env
- source ./env/bin/activate
- pip install -r ./dev/requirements.txt
job 2:
stage: build
script: make build
job 3:
stage: test
script: make test
它将使生成物具有可复制性,并且更易于阅读。您可以使用.pre
and .post
stage,只需确保使用的是Gitlab> = 12.4。