我正在开发一个使用容器环境的CI/CD管道。
为了区分环境,我在entrypoint.sh中使用了一个基本的shell,当容器出现时执行它,在这个shell中,我使用了一个由Gitlab管理的环境变量:CI_JOB_STAGE。但是,当我在本地运行容器时,shell脚本的执行方式似乎与在运行者上的情况不同。这太疯狂了,因为这就是集装箱的全部意义,不是吗?
CI_JOB_STAGE的条件似乎不起作用,即使在输出值和输出echo时显示了值我是为
if [[ $CI_JOB_STAGE -eq "locally" ]] && ! test -f "./env/bin/flask" lint_code)
各个阶段仍然运行正常,但我觉得这一切都很令人困惑。有谁知道这些跑步者是如何执行的吗?
文科
发布于 2019-11-15 14:13:23
Gitlab支持遗嘱执行人数目,它们的行为可能略有不同(执行器可能会挂载自定义卷,禁止特权容器)
通用工作流是:
我不想在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它将使构建可复制和易于阅读。您可以使用阶段,只需确保您使用的是Gitlab >= 12.4。
https://stackoverflow.com/questions/58877007
复制相似问题