Как вызвать задания в gitlab-ci по запросу на слияние из любой ветки для разработки / master? - PullRequest
0 голосов
/ 28 декабря 2018

Я новичок в gitlab-ci и хочу запустить некоторые скрипты на удаленном сервере (я использовал ssh) в зависимости от действий, выполненных на gitlab.Есть 2 сценария:

  1. Скажем, сценарий A, когда запрос на слияние принят из любой ветви в develop ветвь;
  2. Затем я хочу выполнить сценарий B, когда запрос на слияниепринимается из любой ветви в ветку master.

Я уже пробовал использовать ключевое слово only: [merge_requests] в моем файле .gitlab-ci.yml, как предложено здесь вДокумент, но он не работает, так как задание не запущено.

Вот мой файл:

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


build:
   stage: build
   tags:
    - alextag
  only:
    - merge_requests
  script:
    - echo "Check if merge_request working here"

test:
  stage: test
  only:
    - branches
  tags:
    - alextag
  script: 
    - sh alex2.sh
    - echo "$USER"

Сценарий в задании test работает отлично, как каждый коммит /нажмите на текущую ветку, но когда я сливаюсь с другой веткой или разрабатываю / осваиваю, задание build не запускается.

Вы знаете, как сделать это функциональным?Любая помощь приветствуется, спасибо.

1 Ответ

0 голосов
/ 29 января 2019

Я наконец-то нашел решение проблемы.Версия экземпляра Gitlab, над которой я работал, была 11.4 , но атрибут merge_requests для заданий был представлен в версии 11.6.
См. Pipeline для запроса на слияние и проблема , связанная с этой функцией.

Обратите внимание, что этот атрибут запускает задание только тогда, когда запрос на слияние равен created, а не когда запрос на слияние равен accepted/merged.Вы можете использовать gitlab api , чтобы получить всю информацию о запросах на слияние.

...