Pull to refresh

Comments 4

Ветвление и условия в workflow

Почему то регулятор на уровне workflow (когда вообще запускать пайплайн, а не когда выполнять шаг) для github написан а для гитлаба - нет. https://docs.gitlab.com/ci/yaml/workflow/

Он есть, просто не в самом верху -

Вы можете создавать сложные условия, комбинируя эти переменные:

rules:
  - if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == "push"
    when: on_success
  - if: $CI_COMMIT_BRANCH =~ /^feature\/.*/
    when: manual
  - when: never

нет же

Гитлаб

deploy-staging:
stage: deploy
script:
- ./
deploy.sh staging
rules:
- if: $CI_COMMIT_BRANCH == "develop"
when: on_success
- when: never

////////////////////////////////////// пропускаем текст ////

Вы можете создавать сложные условия, комбинируя эти переменные.

rules:

  • if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == "push" when: on_success

  • if: $CI_COMMIT_BRANCH =~ /^feature/.*/ when: manual

  • when: never

Не выходим из контекста условий для джобов - речь только про усложнение условий

Гитхаб

Сразу говорим про "когда воркфлоу запускать вообще"

on:
push:
branches: [ main, develop, 'feature/**' ]
pull_request:
branches: [ main, develop ]

//// а дальше переходим на условия для джобы
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run tests
run: npm test

deploy-to-staging:
runs-on: ubuntu-latest
needs: test
if: github.ref == 'refs/heads/develop'

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

workflow: rules: - if: $CI_PIPELINE_SOURCE == "schedule" when: never - if: $CI_PIPELINE_SOURCE == "push" when: never - when: always

А, понял что вы имеете ввиду, спасибо что подметили! Сделаю UPD, с корректировкой :)

Sign up to leave a comment.

Articles