Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Leverage your CI/CD at the next level with Github actions

Leverage your CI/CD at the next level with Github actions

Define branch managment system, handle versionning, maintain code quality, prevent security breaches, deploy frequently... Build a good CI/CD for your project can be difficult ! In this talk we will see how to take advantage of features offered by Github like Github Action to build efficient CI/CD that will enhanced your development workflow.

[email protected]

November 15, 2022
Tweet

Other Decks in Programming

Transcript

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

    View full-size slide

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

    View full-size slide

  3. 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

    View full-size slide

  4. 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

    View full-size slide

  5. Branch system

    View full-size slide

  6. • 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  9. 👎
    • ⚠ 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)

    View full-size slide

  10. 👎
    • 🗂 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

    View full-size slide

  11. • 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

    View full-size slide

  12. Repository
    configuration

    View full-size slide

  13. 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
    • …

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  16. The big demo !

    View full-size slide