Skip to content

shvkn/ci-cd-release-process

 
 

Repository files navigation

Github actions CI

Релизный процесс

Основная ветка разработки - develop. Когда мы готовы к релизу на ветке develop создаем тэг v<число> (например, v12 ).

Последний тэг необходимо проверить в https://github.com/shvkn/ci-unit-demo-cra/tags

(develop) git tag -a v* -m 'v*'
(develop) git push --follow-tags

При появдения пуша с тэгом v* запускается флоу релизного процесса

  • отведение ветки release-v*
  • build
  • lint
  • e2e / unit тестирование
  • добавление записи в реестр релизов (issue)
  • в случае отсутсвия ошибок происходит деплой на gh pages и автоматическое закрытие issue релиза

Если тесты прошли

После успешного прохождения релизного процесса создаем pull-request master << release-v*

Запускается флоу pull_request

  • build
  • linter
  • e2e / unit тестирование

Мерджим pull request изменения в master и подобновляем от master'a ветку develop

git checkout develop
git rebase master
git push

Если тесты упали

# в ветке develop создается коммит с hot-fix
(develop) git commit -m 'fix: hot-fix'
(develop) git push
(develop) git checkout release-v*

# Переносим hot-fix и переставляем тэг
(release-v*) git cherry-pick develop
(release-v*) git tag -fa v*
(release-v*) git push
(release-v*) git push --tags --force

Релизный процесс перезапускается. После хотфиксов необходимо удалить неудавшиеся action run'ы, они не дадут провести pull-request.

Флоу release, pull_request можно запускать вручную (на случай ошибки гитхаба 429)


В этом репозитории находится пример приложения с тестами:

Для запуска примеров необходимо установить NodeJS 16 или выше.

Как запустить:

# установить зависимости
npm ci

# запустить приложение
npm start

Как запустить e2e тесты:

# скачать браузеры
npx playwright install

# запустить тесты
npm run e2e

Как запустить модульные тесты:

npm test

About

Релизный процесс и unit-тестирование react приложений с помощью Github Workflows

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 83.2%
  • HTML 14.4%
  • CSS 1.2%
  • Other 1.2%