Как вручную запустить конвейер Gitlab CI, когда в нормальных условиях он запускается webhook с Id коммитов? - PullRequest
1 голос
/ 14 апреля 2020

У меня есть конвейер Gitlab CI, который запускается с помощью bitbucket webhook с текущими и последними идентификаторами фиксации. Я также хочу повторно запускать конвейер вручную всякий раз, когда созданный при сборке файл Gitlab CI, запущенный webhook, не работает должным образом. Я пробовал опцию RUN-PIPELINE, но показывает ошибку:

Форма содержит следующую ошибку: Нет этапов / заданий для этого конвейера. enter image description here

Вот Файл GitLab CI. Включить относится к другому проекту, в котором хранится стандартный файл yaml для конвейера:

include:
- project: Path/to/project
  ref: bb-deployment
  file: /bitbucket-deployment.yaml
variables:
  TILLER_NAMESPACE: <namespace>
  NAMESPACE: testenv
  REPO_REF: testenvbranch
  LastCommitSHA: <commit sha from webhook>
  CurrentCommitSHA: <Current commit she from webhook>

Вот подробный файл gitlab-ci, предоставленный в другом проекте с этапами:

stages:
  - pipeline
  - build

variables:
    ORG: test
    APP_NAME: $CI_PROJECT_NAME

before_script:
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
  - eval $(ssh-agent -s)
  - echo "$SSH_PRIIVATE_KEY2" | tr -d '\r' | ssh-add -
  - mkdir -p ~/.ssh
  - chmod 700 ~/.ssh
  - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
  - chmod 644 ~/.ssh/known_hosts


Building CI Script:
  stage: pipeline
  image: python:3.6
  only:
    refs:
      - master
  script:
    - |
      curl https://github.com/org/scripts/branch/install.sh | bash -s latest
      source /usr/local/bin/pipeline-variables.sh
      git clone git@bitbucket.org:$ORG/$APP_NAME.git
      cd $APP_NAME
      git checkout $lastCommit
      cp -r env old
      git checkout $bitbucketCommit
      $CMD_DIFF old env
      $CMD_BUILD
      $CMD_INSTALL updatedReposList.yaml deletedReposList.yaml /tmp/test $NAMESPACE $REPO_REF $ORG $APP_NAME $lastCommit $bitbucketCommit
      cat cicd.yaml
      mv cicd.yaml ..

  artifacts:
    paths:
      - cicd.yaml

Deplopying Apps:
  stage: build
  only:
    refs:
      - master
  trigger:
    include:
      artifact: cicd.yaml
      job: Building CI Script
    strategy: depend

В ручном триггере вместо рассмотрения последнего и текущего коммита она должна перестроить приложение.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 14 апреля 2020

Спасибо за ваш комментарий (ниже), я вижу, что вы используете директиву include (https://docs.gitlab.com/ce/ci/yaml/#include) в одном .gitlab-ci.yml для включения файла GitLab CI YAML из другого проекта.

Я могу продублировать эту ошибку (нет этапов / заданий для этого конвейера), вызвав «запуск конвейера» в проекте 1, который настроен на включение GitLab CI YAML из проекта 2, когда проект 2 GitLab CI YAML ограничен master ветвь, но я запускаю проект на другой ветке.

Например, скажем, проект 1 называется «stackoverflow-test» и его .gitlab-ci.yml:

include:
- project: atsaloli/test
  file: /.gitlab-ci.yml
  ref: mybranch

И проект 2 называется «тест» (в моем собственном пространстве имен, atsaloli), и его .gitlab-ci.yml:

my_job:
  script: echo hello world
  image: alpine
  only:
    refs:
      - master

Если я выберу «Выполнить конвейер» в Пользовательский интерфейс GitLab в проекте 1 на ветке, отличной от «master», затем я получаю сообщение об ошибке «Нет этапов / заданий для этого конвейера».

Это потому, что для моей ветки, не являющейся основной, не определено задание, и затем без какой-либо определенной работы, у меня нет какой-либо определенной стадии.

* 10 25 * Я надеюсь, что это проливает некоторый свет на то, что происходит с вашим веб-крючком.
...