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
CI/CD на GitHub Actions и GitLab CI для самых маленьких. Часть 3