• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
CI and other tools for feature branch development
 

CI and other tools for feature branch development

on

  • 650 views

Working in teams is always a challenge. Have you ever had situation when all your team members commit to master branch and right before the release someone accidentally does commit that breaks ...

Working in teams is always a challenge. Have you ever had situation when all your team members commit to master branch and right before the release someone accidentally does commit that breaks everything? Or someone haven't finished his feature within the deadline and it holds the release? If yes -- this session is for you as we will talk about how to avoid these situations using feature branch development.

Beside simple idea of having different features in different git branches we will also talk about tools to support this workflow. For example you need multiple team members to work on the same feature and they need a host to see each other changes real life. Or after feature is finished we need to allow QA to do the review and that person should not bother with installing the site locally, switch git branch, set up database etc.

We will talk about https://github.com/ygerasimov/featurebranch project that allows to set up server to spin hosts per branch, copy databases etc.

As this instrument uses CI Jenkins and phing we will talk about them as well. We will see how to edit your phing scripts to fit your project specific tasks, add automated testing on deployments etc.

We will also talk about git flow (http://nvie.com/posts/a-successful-git-branching-model) that will help your team to keep branches well organized.

This session is aimed to help your organization to implement feature-branch workflow.

Statistics

Views

Total Views
650
Views on SlideShare
641
Embed Views
9

Actions

Likes
2
Downloads
9
Comments
0

3 Embeds 9

https://twitter.com 4
http://www.slideee.com 3
https://www.linkedin.com 2

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    CI and other tools for feature branch development CI and other tools for feature branch development Presentation Transcript

    • CI and other tools for feature branch development Yuriy Gerasimov Senior Drupal Architect Propeople @ygerasimov
    • Plan ● What CI is? ● What feature-branch development is? ● How do we develop? ● Custom tool for supporting feature branch development (server setup, virtual hosts, phing) ● Github flow, CI integration, Jenkins ● Demo
    • CI, why would I need it? ● Check if the code is according drupal style standards ● Run all kind of tests ● Deploy for manual testing
    • Feature branch development
    • Feature branch development
    • How do we do development? ● Each ticket – separate branch ● Code review (quality, knowledge sharing) ● Each branch should be “merge ready” before the review ● If features are big, discuss the order of merges to minimize amount of work to resolve the conflicts
    • featurebranch tool ● UI to deploy git branches to separate hosts ● Update hosts if commits received in corresponding branches ● Automatically delete the host if branch is deleted ● UI to remove the host
    • Symfony tool for UI ● What is the original git repo? ● Keep tracking about changes in branches ● Trigger jenkins jobs ● Symfony tool got triggered by post-receive hook of git
    • Jenkins ● Jobs – Create – Delete – Update ● All jobs are done with phing
    • Server ● Wildcard virtual hosts setup ● Wildcard domain setup ● Drush to be installed ● Jenkins should be able to clone to code to virtual hosts folders and create databases
    • Symfony internals ● Pulls remote repo and save the state of branches (yaml file with brahch – commit hash pairs) – new commits on deployed branches – trigger update job on jenkins – Deployed branch has been deleted – delete the host ● UI to display list of branches and hosts so you can trigger create and delete jobs on jenkins from the UI
    • Phing deployment scripts ● Xml file with steps ● Nice console output ● Plenty of plugins for different tools ● Extendable with php
    • Phing example
    • Feature branch development
    • git flow ● Master and Develop branches ● git flow init ● git flow feature start MYFEATURE ● git flow feature finish MYFEATURE ● git flow feature publish MYFEATURE ● ...
    • git flow ● git flow release start RELEASE ● git flow release publish RELEASE ● git flow release finish RELEASE
    • Demo ● https://github.com/ygerasimov/featurebranch ● https://www.youtube.com/watch? v=IhZ6OczRZqs ● https://www.youtube.com/watch? v=p4FqvwY6cFk
    • Github & Jenkins ● Jenkins plugin to trigger builds on PR
    • links ● github.com/ygerasimov/featurebranch ● wiki.jenkins- ci.org/display/JENKINS/GitHub+Plugin ● www.lullabot.com/blog/article/github-pull- request-builder-drupal
    • CI and other tools for feature branch development Yuriy Gerasimov Senior Drupal Architect Propeople @ygerasimov