Задание Gitlab CI, запускаемое после каждого развертывания для создания отчетов о состоянии - PullRequest
4 голосов
/ 19 апреля 2020

Я хочу отправить отчет о состоянии развертывания в API отдыха.
Он должен быть независимым от задания развертывания (из-за зависимости $ IMAGE2), поскольку я хочу использовать задание отчета в других проектах. Поэтому я создал две задачи в Gitlab CI следующим образом:

deploy:
  stage: deploy
  image: $IMAGE1
  script:
    - cd ${CI_PROJECT_DIR} && echo 'Failed' > deployment-status
    # some codes to deploy and exit 1 if not successful
    - cd ${CI_PROJECT_DIR} && echo 'Passed' > deployment-status  #This line run only when deployment is successful
  when: manual
  artifacts:
    when: always
    paths:
      - deployment-status

report-deployment:
  stage: post-deploy
  image: $IMAGE2
  script:
    - cd ${CI_PROJECT_DIR} && cat deployment-status
    # some codes to report the status of deployment to an API
  when: always
  needs: ["deploy"]

В приведенном выше решении, в зависимости от развертывания, я заполняю deployment-status Passed / Failed и использую файл артефакта deployment-status в следующей работе, чтобы получить информацию о состоянии развертывания и сообщить о ней.

Приведенное выше решение имеет некоторые проблемы:
- Состояние конвейера будет равно running, если я не вызову ручное задание. (из-за задания report-deployment, для которого требуется deploy)
- Если я попытаюсь дважды запустить задание deploy, в API будет отправлен только один отчет.
Изображение проблем

...