Slide 1

Slide 1 text

Github Leverage your CI/CD at the next level with Github actions Sylvain Pontoreau Felix Billon Aachen – 15/11/2022

Slide 2

Slide 2 text

Your speakers for this session ! Sylvain Pontoreau @spontoreau Felix Billon @felix_billon

Slide 3

Slide 3 text

History • October 2007 : development starting • April 2008 : official launch • July 2010 : 1 million of repositories • September 2011 : over a 1 million of users • April 2016 : 14 million of users and 35 million of repositories • June 2018 : purchase by Microsoft

Slide 4

Slide 4 text

Github offers all classic basic features to manage repositories : • Source code management • Ticket management • CI/CD • Project management • Wiki • Platform extension through marketplace • ... Basic features

Slide 5

Slide 5 text

Branch system

Slide 6

Slide 6 text

• A good branch system that allows you to : • Help developers to work on the same base code by minimize conflicts • Understand where stable code is, where code needed to be testing is, … • Have a clean history • Deploy faster, rollback faster • … Branch system

Slide 7

Slide 7 text

👍 • 🔒 Protect production code • 🔖 Allow to maintain different version • 🌟 Most popular Branch system : Gitflow 👎 • 🐢 Slower deployment (❌ for CD) • 👿 Merge hell • 🔀 Many branches • 🧟 Deprecated

Slide 8

Slide 8 text

👎 • 🤝 Need good collaboration • ⚔ Take care of conflicts Branch system : Trunk based 👍 • 🚀 Fast deployment (✔ for CD) • 1⃣ A branch to rule them all

Slide 9

Slide 9 text

👎 • ⚠ Risky without quality assurance Branch system : Github flow 👍 • 🚀 Push on main ➡ prod (✔ fast CD) • 󰔨 Few branches • 󰳘 Force high quality code • 🚚 Ship feature everyday (Kanban friendly)

Slide 10

Slide 10 text

👎 • 🗂 Need good team organization Branch system : Release flow 👍 • 🚀 Fast deployment (✔ for CD) • 📦 Release focused • 😎 Simple to learn and setup • 🔁 Great for iteration (SCRUM friendly) • 🔖 Allow to maintain different version

Slide 11

Slide 11 text

• Many others : Gitlab flow, Oneflow, … • To choose between them wisely : • Understand the size and the needs of your project • Check the maturity of the developer team Branch system

Slide 12

Slide 12 text

Repository configuration

Slide 13

Slide 13 text

Repository Configuration • Implement branch system : • Protect branches and tags • Set conditions for merge request • … • Secure your repository : • Force MFA • Only accept signed commit • Valide commit author • Activate dependabot • …

Slide 14

Slide 14 text

CI / CD

Slide 15

Slide 15 text

• Automation task • Allow to setup CI/CD • Pipeline as code (YAML) Workflow

Slide 16

Slide 16 text

• Stand alone packaged task that could be used in Workflow Actions

Slide 17

Slide 17 text

The big demo !

Slide 18

Slide 18 text

Conclusion

Slide 19

Slide 19 text

Questions ?

Slide 20

Slide 20 text

Thanks 😀