services:
- docker:dind
variables:
DOCKER_TLS_CERTDIR: ""
script:
- docker build --pull -t "airflow:2.7.1-${CI_COMMIT_SHA:0:8}" . -f docker/Dockerfile
- docker tag "airflow:2.7.1-${CI_COMMIT_SHA:0:8}" "airflow:latest"
- docker push "airflow:2.7.1-${CI_COMMIT_SHA:0:8}"
- docker push "airflow:latest"
when: manual
airflow-init:
stage: init
variables:
AIRFLOW_PROJ_DIR: /opt/airflow/
AIRFLOW_UID: 1001
AIRFLOW_IMAGE_NAME: "airflow:2.7.1-${CI_COMMIT_SHA:0:8}"
Первая стадия отработала, затем пошла вторая, но вторая стадия не подхватывает ${CI_COMMIT_SHA:0:8}, в итоге вторая стадия пулит образ с таким именем airflow:2.7.1-
Как сделать, чтобы ${CI_COMMIT_SHA:0:8} от первой стадии передался во вторую?
передать файл .env через артефакты. но эта перемення должна и так существовать. попробуй в before_script в обеих джобах ее вывести
${CI_COMMIT_SHA}:0:8, ибо такой переменной что вы указали (${CI_COMMIT_SHA:0:8}) нету
а, да. в variables ссылки на переменные немного не так работают, как в bash. Только этот способ всё равно не сработает, я бы в before_script AIRFLOW_IMAGE_NAME объявлял
Возможно придется через отдельную да, но вроде и так будет работать
не, тогда будет :0:8 текстом, а ему надо с 0 по 8 символы, как я понимаю
либо уже в самом скрипте обрабатывать AIRFLOW_IMAGE_NAME предварительно
Так для этого есть ${CI_COMMIT_SHORT_SHA}
Спасибо. Помогло
Обсуждают сегодня