Тарас Кирилюк та Олена Пустовойт — ci workflow у веб-студії
TRANSCRIPT
![Page 1: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/1.jpg)
![Page 2: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/2.jpg)
Development Team StructureOur Production Team
![Page 3: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/3.jpg)
Problems Back-ups. The only thing for your protection;
creating one thing, you can make a mess somewhere else;
yet we know we can make a minor change in 5 min - we have a
lot of them;
you can’t even imagine how many bugs you’ll meet during the
last testing before deadline;
where is our time?!;
while you don’t have rules - your client gives them to you;
panic during deadline/deploy;
![Page 4: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/4.jpg)
Continuous Integration WorkflowCI - is the practice, in software
engineering, of merging all developer working copies to a shared mainline several times a day.
What it gives to you:
- better developing processes;
- smooth deploy process;
- deploy is possible every day.
![Page 5: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/5.jpg)
Continuous Integration Workflow
![Page 6: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/6.jpg)
![Page 7: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/7.jpg)
Step 1. Code Driven Development
![Page 8: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/8.jpg)
Step 2. Understanding of how it works
![Page 9: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/9.jpg)
CI-BOX
![Page 10: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/10.jpg)
CI-BOX DevOps
![Page 11: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/11.jpg)
BACK-END part
![Page 12: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/12.jpg)
![Page 13: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/13.jpg)
Principles
Be lazy
Be productive
![Page 14: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/14.jpg)
The big picture
![Page 15: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/15.jpg)
Step 1
Goodbye old friends!
![Page 16: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/16.jpg)
Step 2
Start working with Console, Learn SSH
![Page 17: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/17.jpg)
Step 3
Learn how to move sites between servers…
1. rsync -avh -e 'ssh -p [port]' [ssh_user]@[server_name]:/path/to/drupal/ ./
2. nano sites/default/settings.php
3. drush sql-drop
4. gunzip < sites/../../../dump_name.mysql.gz | drush sql-cli
![Page 18: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/18.jpg)
Learn how to automate server provisioning
Step 4
![Page 19: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/19.jpg)
Step 5Learn about Vagrant
![Page 20: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/20.jpg)
Step 6
Start working locally
+
![Page 21: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/21.jpg)
Default:
Apache 2.4.x (or Nginx 1.x),
PHP 5.6.x, MySQL 5.5.x, Drush,
Drupal 6.x, 7.x, or 8.x.x.
Other cool stuff:
Varnish 4.x, Apache Solr 4.10.x,
Node.js 0.12,
Selenium, Ruby
Memcached
XHProf, XDebug, Adminer,
Pimp my Log, MailHog
![Page 22: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/22.jpg)
Step 7
Start using Git and Bitbucket
+ pull requests
+ manual Code review
![Page 23: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/23.jpg)
Step 8
Code driven development
- features
- strongarm
- hook_update_N()
![Page 24: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/24.jpg)
Step 9: STAGE + PROD environment
![Page 25: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/25.jpg)
Step 10: Deploy Continuously1. cd /path/to/docroot
2. drush vset maintenance_mode 1
3. drush bb
4. git pull
5. drush rr
6. drush updb -y
7. drush cc all
8. drush vset maintenance_mode 0
![Page 26: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/26.jpg)
Step 11
1. Check if "$HOSTNAME" == "$CURRENT_HOSTNAME" (run it only on DEV)
2. cp local.settings.php settings.php
3. rsync -avh --delete -e "$SSH_OPT" $REMOTE_USER@$REMOTE_SERVER:$PATH_TO_SITEROOT/sites/default/files/ ./sites/default/files
4. drush sql-drop -y
5. BASE_DUMP=$(ls -t $PATH_TO_BM_MANUAL/*.mysql.gz | head -1)
6. gunzip < $BASE_DUMP | drush sql-cli
First DEV-STAGE sync script
![Page 27: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/27.jpg)
Step 12
1. Check if "$HOSTNAME" == "$CURRENT_HOSTNAME" (run it only on STAGE)
2. rsync -avh --delete -e "$SSH_OPT"
$REMOTE_USER@$REMOTE_SERVER:$PATH_TO_SITEROOT/sites/default/files/
./sites/default/files
3. drush sql-drop -y
4. BASE_DUMP=$(ls -t $PATH_TO_BM_MANUAL/*.mysql.gz | head -1)
5. gunzip < $BASE_DUMP | drush sql-cli
First STAGE-PROD sync script
![Page 28: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/28.jpg)
Let's count2 projects at a time
2 servers (STAGE and PROD) on each project to deploy
9 commands to deploy (1 ssh + 8 deploy)
2 * 2 * 9 = 36
Manual actions / day (minimum)
And be sure to don’t mess up anything!
![Page 29: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/29.jpg)
Step 13
![Page 30: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/30.jpg)
![Page 31: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/31.jpg)
![Page 32: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/32.jpg)
![Page 33: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/33.jpg)
![Page 34: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/34.jpg)
Step 14
Scripts improvements
- Move Drupal files to docroot
- Create reinstal.sh
- Move all settings to settings.sh
![Page 35: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/35.jpg)
![Page 36: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/36.jpg)
![Page 37: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/37.jpg)
Testing environment
![Page 38: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/38.jpg)
How to create testing environment?1.Pull files from Bitbucket
2.Get Database dump from STAGE-server
3.Restore database from dump
4.Install Stage File Proxy module (or rsyncfiles folder)
5.Send link somewhere
6.Profit!
![Page 39: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/39.jpg)
![Page 40: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/40.jpg)
The Idea!
![Page 41: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/41.jpg)
Step N
Create script to create testing environments
![Page 42: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/42.jpg)
How it works?1.Jenkins checks Bitbucket repo (by schedule)
2.Jenkins merges branches when there is pull request
3.Jenkins runs BASH script after branches are merged
4.BASH:
- Create folder
- Copy merged files
- Copy base dump from STAGE-server
- Create database and restore dump
- Install Stage File Proxy module
- Post comment on Bitbucket with the link to created site
1.Profit!
![Page 43: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/43.jpg)
![Page 44: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/44.jpg)
Links to the source code:
Local environment (based on Drupal VM):
https://bitbucket.org/deweb-studio/code-driven-starter.kit
Tool to create testing environment:
https://bitbucket.org/deweb-studio/jenkins_ci_drupal
![Page 45: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/45.jpg)
![Page 46: Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії](https://reader034.vdocument.in/reader034/viewer/2022051503/5a6e98587f8b9a49648b55d3/html5/thumbnails/46.jpg)