Условие основано на предыдущем шаге на GITLABCI

Этап сборки запускается только при наличии изменений в Dockerfile-pentaho.

Шаг запуска должен выполняться каждый раз, если шаг сборки был запущен, я хочу получить образ с тегом CI_PIPELINE_ID, если нет, я хочу запустить его с последним тегом.

Мне нужно запустить шаг «выполнить» с помощью приведенного ниже сценария, если запускается шаг сборки:

  • docker run --rm $PENTAHO_IMAGE:$CI_PIPELINE_ID --v files/pentaho/reps/:/pentaho-di/repo/

А если нет, мне нужно запустить скрипт ниже:

  • docker run --rm $PENTAHO_IMAGE:latest --v files/pentaho/reps/:/pentaho-di/repo/

Я пытался создать файл с touch $CI_PROJECT_DIR/success на этапе сборки и проверить, существует ли он на этапе запуска, но не могу заставить его работать.

вот мой gitlab-ci.yml.

services:
  - docker:19.03.1-dind

variables:
  PENTAHO_IMAGE: $CI_REGISTRY/xxxx/xxxxx/pentaho
  

stages:
  - build
  - run

.docker-configs: &docker-configs
  tags: 
    - interno
  image:
    name: docker/compose:1.24.1
    entrypoint: [""]
  variables:
    DOCKER_HOST: tcp://docker:2375
    BUILD_PENTAHO: latest
  services:
    - docker:18.09.7-dind
  before_script:
    - apk add --no-cache bash
    - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY"
 
build-pentaho:
  <<: *docker-configs 
  stage: build   
  rules:
    - changes: 
        - Dockerfile-pentaho 
  script:
    - echo "Building pentaho docker image"
    - docker build -t $PENTAHO_IMAGE:$CI_PIPELINE_ID -f Dockerfile-pentaho .
    - docker push $PENTAHO_IMAGE:$CI_PIPELINE_ID
    - touch $CI_PROJECT_DIR/success # creating file to check on running step

run-pentaho:
  <<: *docker-configs
  stage: run 
  script:
    - echo "Executando pentaho image"
    - | 
      if [[ -f success ]] ; then
        echo "condição true"
        docker run --rm $PENTAHO_IMAGE:$CI_PIPELINE_ID --v files/pentaho/reps/:/pentaho-di/repo/ 
      else
        echo "condição false"
        docker run --rm $PENTAHO_IMAGE:latest --v files/pentaho/reps/:/pentaho-di/repo/ 
      fi
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
241
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У меня работает с артефактами.

Окончательный gitlab-ci:

services:
  - docker:19.03.1-dind

variables:
  PENTAHO_IMAGE: $CI_REGISTRY/xxxx/xxxxx/pentaho
  

stages:
  - build
  - run

.docker-configs: &docker-configs
  tags: 
    - interno
  image:
    name: docker/compose:1.24.1
    entrypoint: [""]
  variables:
    DOCKER_HOST: tcp://docker:2375
    BUILD_PENTAHO: latest
  services:
    - docker:18.09.7-dind
  before_script:
    - apk add --no-cache bash
    - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY"
 
build-pentaho:
  <<: *docker-configs 
  stage: build   
  rules:
    - changes: 
        - Dockerfile-pentaho 
  script:
    - echo "Building pentaho docker image"
    - docker build -t $PENTAHO_IMAGE:$CI_PIPELINE_ID -f Dockerfile-pentaho .
    - docker push $PENTAHO_IMAGE:$CI_PIPELINE_ID  
    - echo "building ..." >> ./result.txt
  artifacts:
    expire_in: 3 minutes
    paths:
        - result.txt


run-pentaho:
  <<: *docker-configs
  stage: run 
  script:
    - echo "Executando pentaho image"
    - | 
      if [[ -f result.txt ]] ; then
        echo "condição true"
        docker run --rm $PENTAHO_IMAGE:$CI_PIPELINE_ID --v files/pentaho/reps/:/pentaho-di/repo/ 
      else
        echo "condição false"
        docker run --rm $PENTAHO_IMAGE:latest --v files/pentaho/reps/:/pentaho-di/repo/ 
      fi

Другие вопросы по теме