Запускайте рабочий процесс github только в том случае, если он помещен в определенную ветку и существует тег

Я хочу запустить рабочий процесс Github только в том случае, если код помещен в определенную ветку и если тег существует, но моя конфигурация (рабочий процесс github) не работает должным образом:

name: Deployment
on:
  push:
    branches:
      - feature/BRANCH-NAME
    tags:
      - *
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - uses: actions/setup-node@v1
        with:
          node-version: '10.x'

      - name: Install dependencies
        run: |
          npm install

      - name: Lint & build
        run: |
          npm run build

Рабочий процесс запускается, даже если тег не существует.

Как я мог это исправить?


person Patrick    schedule 23.01.2020    source источник
comment
Пример в документации говорит, что если у вас есть" ветки "и" теги ", то он срабатывает для любого из них, то есть они" или "нет" и ". Понятия не имею, можно ли / как сделать «и».   -  person Rup    schedule 23.01.2020
comment
Спасибо за ответ @Rup. Это именно "и" я хочу как-то настроить ..   -  person Patrick    schedule 23.01.2020


Ответы (1)


Поскольку мне не удалось найти способ реализовать условие AND (то есть с тегом AND на главном сервере), я использовал следующий обходной путь:

name: Worflow demo
on:
  push:
    tags:
      - v*

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1

      - name: Exit if not on master branch
        if: endsWith(github.ref, 'master') == false
        run: exit -1

      - name: Next job ...

Это сработает, если будет отправлена ​​помеченная (например, tag v1.0.0) фиксация:

on:
  push:
    tags:
      - v*

Первый шаг («Выйти, если не в главной ветке») затем проверяет, не заканчивается ли текущая ветка на master, и завершает рабочий процесс (последующие тесты не запускаются):

- name: Exit if not on master branch
  if: endsWith(github.ref, 'master') == false
  run: exit -1

Надеюсь, это поможет и кому-то другому.

person Patrick    schedule 24.01.2020
comment
Используете ли вы этот рабочий процесс при выпуске релиза? В таком случае есть событие on: release, которое можно использовать вместо on: push. Это должно достичь того, чего вы хотите, потому что он срабатывает только тогда, когда в основной ветке есть помеченный выпуск. - person peterevans; 27.01.2020
comment
См. этот вопрос / ответ - person peterevans; 27.01.2020
comment
В настоящее время я не использую этот рабочий процесс для выпуска. Но спасибо за ответ! - person Patrick; 27.01.2020
comment
@peterevans поправьте меня, если я ошибаюсь. on: release не срабатывает, когда я нажимаю несколько тегов в ветке по умолчанию - person rohitsakala; 26.01.2021
comment
@Patrick Я пробовал ваше решение, но github.ref пуст, когда нажата помеченная фиксация - person rohitsakala; 26.01.2021
comment
@rohitsakala Правильно. on: release срабатывает только в том случае, если вы создаете выпуск через GitHub API. - person peterevans; 26.01.2021