Хотя на первый взгляд кажется, что нет никакой разницы, в действительности проприетарные и opensource проекты имеют большое отличие в реализации CI\CD process. Разные команды к которым добавляются неучтенные котрибьютеры работают в разных временных зонах, разработка ведется в условиях недостаточной коммуникации. За добавление новых изменений отвечает не один или несколько человек, а консорциум. В результате, процесс внесения изменений слишком затягивается, увеличивая потенциальные конфликты не только в файлах но и бизнес логике. Все эти особенности вносят свое влияние на устройство CI\CD для open source project. Как он устроен мы и расскажем в нашем докладе.
2. Continuous Delivery. ContinuousDevOps. KYIV, 2020
Overview
• - Особенности Opensource проектов
• - Инструменты для организации CI/CD
• - Containerization with docker
• - Стандартизация среды разработки (environment)
• - Jenkins
• - Clustering
17. Continuous Delivery. ContinuousDevOps. KYIV, 2020
Красивая история коммитов
• Commits squashing
• Rebase + merge or back merge?
• Readable commit messages like
“Review answer” 0_o
18. Continuous Delivery. ContinuousDevOps. KYIV, 2020
Как проходит ревью
“Три круга ада” или как я научился предугадывать...
• Внутреннее ревью
• Ревью с заказчиком
• Ревью с еще одним заказчиком … (а так можно было?!)
32. Continuous Delivery. ContinuousDevOps. KYIV, 2020
Once issues and PRs come, it's too late.
Reviewing, testing and deploying fixes and new features from
your contributors becomes a black hole of time lost.
Big mistake
Hinweis der Redaktion
Master branch was only for released version of our project.
Release branch was only for bridging the release to master branch. No other branch (even develop) can directly have a pull request to master branch (except for hotfix). Project maintainers don’t need to create a pull request to master branch. This was already done by our CD. Basically our CD check the Pull Request to release branch. If it pass unit test and instrumentation test then CD will create a new tag to release it and it was merged into master. Whenever a new tag created it will also deploy our release.
Develop contains feature that’s already accepted by project maintainers. Project maintainers need to creating a pull request to release branch to make a release. The CD will manage the deployment when it’s already on release branch.
Feature branch was contributors working branch. It must be created from current develop branch. When it finished, it also must be merged back to develop by creating a pull request back to develop.