Continuous delivery?



DRY

(Don't REPEAT yourself)


RULE OF THREE



MAIN PRINCIPLES

PRINCIPLE #1


EVERY BUILD IS A POTENTIAL RELEASE





PRINCIPLE #2


ELIMINATE MANUAL BOTTLENECKS

PRINCIPLE #3

AUTOMATE


AUTOMATE


Automate wherever possible...

PRINCIPLE #4


TRUST YOUR TESTS



BUT HOW?



GIT

GIT FLOWS


Git FEATUREs Model 


GIT FLOW MODEL

GIT WORKFLOW


GIT WORKFLOW


GIT FEATURES



Merge HELL




Merging without PAIN

Possible?

KEEP YOURSELF UPDATED


git fetch origin
git rebase origin/my-new-feature
git rebase origin/master

OR

# autosetup rebase so that pulls rebase by default
git config --global branch.autosetuprebase always

MERGE BACK


git checkout master
git merge --squash newstuff


  BUILD PIPELINES

CONTINUOUS DELIVERY / DEPLOYMENT


FOR MAIN BRANCHES WE do

(Master, Dev, Hotfix)


  1. Build (Compile, Unit Test, Produce artifacts)
  2. Quality Checks (Sonar, PMD, Coverage, FIndBugs)
  3. Deploy to test (Auto)
  4. Deploy to Prod (Manual/Auto)


TOOLS

Jenkins Build Pipeline plugin






What Do we DEliver?


RELEASES?


FEATURES?


STRATEGY


#1 Single REPO

WHY?


WE ARE SMALL TEAM 

AND

CODE IS

interdependent




Oxyme Deps

#2 BUILD PIPELINE

With 

Jenkins 

and

Auto deployment to Test 








#3 one button deploy to PROD




#4 Jira and GIT




#5 Pipelines for FUTURE BRANCHES




#6 CODE QUAliTY CHECKS

Continuous integration and delivery

By Anton Liulichev

Continuous integration and delivery

  • 1,406