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

Continuous Delivery 101 w/ GitHub Actions

Continuous Delivery 101 w/ GitHub Actions

Lothar Schulz

November 24, 2020
Tweet

More Decks by Lothar Schulz

Other Decks in Programming

Transcript

  1. Changing the way cities move Continuous Delivery 101 w/ GitHub

    Actions Continuous Lifecycle - Continuous Delivery Day - 2020 11 24
  2. 2 Einfacher Zugang zur täglichen Mobilität Mobimeo entwickelt die Plattform,

    die öffentliche Nahverkehrs- und Sharing-Angebote vernetzt - modular, flexibel zu integrieren und einfach zu nutzen. Dabei berücksichtigen wir die jeweilige Situation und Präferenz des Einzelnen. Unterwegs sein wird individueller, intuitiver und entspannter. Für mehr Mobilität bei weniger Verkehr. About Mobimeo Mobimeo – Wir ändern wie sich Menschen in Städten bewegen
  3. 3 Wir wissen was die Mobilitätsbranche antreibt - heute und

    morgen About Mobimeo Mobimeo wurde 2018 als Tochterunternehmen der Deutschen Bahn AG gegründet und ist 2020 mit Teilen der moovel Group GmbH fusioniert. Standorte in Berlin and Hamburg 170+ Mobimeos aus über als 39 Nationen
  4. 4 Me Engineering Manager lotharschulz.info github.com/lotharschulz speakerdeck.com/lothar @lothar_schulz lnkd.in/lotharschulz Continuous

    Delivery 101 w/ GitHub Actions Continuous Lifecycle - Continuous Delivery Day - 2020 11 24 @lothar_schulz
  5. 5 GitHub Actions Workflow Automation Continuous Delivery 101 w/ GitHub

    Actions Continuous Lifecycle - Continuous Delivery Day - 2020 11 24 @lothar_schulz
  6. 6 GitHub Actions Built-in CI/CD Continuous Delivery 101 w/ GitHub

    Actions Continuous Lifecycle - Continuous Delivery Day - 2020 11 24 @lothar_schulz
  7. 7 Continuous Delivery 101 w/ GitHub Actions Continuous Lifecycle -

    Continuous Delivery Day - 2020 11 24 https://github.blog/2019-08-08-github-actions-now-supports-ci-cd/ What are GitHub Actions? With GitHub Actions, workflows and steps are just code in a repository, so you can create, share, reuse, and fork your software development practices. @lothar_schulz
  8. 8 Continuous Delivery 101 w/ GitHub Actions Continuous Lifecycle -

    Continuous Delivery Day - 2020 11 24 @lothar_schulz
  9. 9 Open Source Continuous Delivery 101 w/ GitHub Actions Continuous

    Lifecycle - Continuous Delivery Day - 2020 11 24 @lothar_schulz
  10. 13 • https://github.com/gatsbyjs/gatsby/tree/master/.github/workflows • https://github.com/hakimel/reveal.js/blob/master/.github/workflows/js.yml • https://github.com/twbs/bootstrap/blob/master/.github/workflows/test.yml • https://github.com/microsoft/vscode/tree/master/.github/workflows •

    https://github.com/facebook/create-react-app/tree/master/.github/workflows • https://github.com/hakimel/reveal.js/blob/master/.github/workflows/js.yml • https://github.com/babel/babel/tree/master/.github/workflows • https://github.com/nodejs/node/tree/master/.github/workflows • https://github.com/microsoft/TypeScript/tree/master/.github/workflows • https://github.com/kubernetes/utils/tree/master/.github/workflows • https://github.com/jonico/programmatic-runner-test/blob/master/.github/workflows/blank.yml • https://github.com/corona-warn-app/cwa-testresult-server/tree/master/.github/workflows • https://github.com/corona-warn-app/cwa-verification-portal/tree/master/.github/workflows • https://github.com/corona-warn-app/cwa-testresult-server/tree/master/.github/workflows • https://github.com/OWASP/owasp-masvs/tree/master/.github/workflows Open Source Projects using GitHub actions (incomplete list) @lothar_schulz Continuous Delivery 101 w/ GitHub Actions Continuous Lifecycle - Continuous Delivery Day - 2020 11 24
  11. 14 How To Continuous Delivery 101 w/ GitHub Actions Continuous

    Lifecycle - Continuous Delivery Day - 2020 11 24 @lothar_schulz
  12. Matrix - Builds on Linux, macOS, Windows strategy: fail-fast: false

    matrix: os: [macOS-10.14, ubuntu-18.04] goos: [linux, darwin] exclude: - os: macOS-10.14 goos: linux - os: ubuntu-18.04 goos: darwin runs-on: ${{ matrix.os }} @lothar_schulz Continuous Delivery 101 w/ GitHub Actions Continuous Lifecycle - Continuous Delivery Day - 2020 11 24
  13. Matrix - Excludes strategy: fail-fast: false matrix: os: [macOS-10.14, ubuntu-18.04]

    goos: [linux, darwin] exclude: - os: macOS-10.14 goos: linux - os: ubuntu-18.04 goos: darwin runs-on: ${{ matrix.os }} exclude: - os: macOS-10.14 goos: linux - os: ubuntu-18.04 goos: darwin @lothar_schulz Continuous Delivery 101 w/ GitHub Actions Continuous Lifecycle - Continuous Delivery Day - 2020 11 24
  14. Matrix - Excludes strategy: fail-fast: false matrix: os: [macOS-10.14, ubuntu-18.04]

    goos: [linux, darwin] exclude: - os: macOS-10.14 goos: linux - os: ubuntu-18.04 goos: darwin runs-on: ${{ matrix.os }} exclude: - os: macOS-10.14 goos: linux - os: ubuntu-18.04 goos: darwin include: - os: macOS-10.14 goos: darwin - os: ubuntu-18.04 goos: linux ! @lothar_schulz Continuous Delivery 101 w/ GitHub Actions Continuous Lifecycle - Continuous Delivery Day - 2020 11 24
  15. Jobs Jobs can run at the same time in parallel

    or be dependent on the status of a previous job and run sequentially. build-and-dockerhub-push-if-linux: needs: [benchmark, test] @lothar_schulz Continuous Delivery 101 w/ GitHub Actions Continuous Lifecycle - Continuous Delivery Day - 2020 11 24
  16. Conditionals if: matrix.os == 'ubuntu-18.04' env: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}

    DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} run: | d=$(date +%Y-%m-%d) tag=$d-${{ matrix.os }}-${{ github.sha }} docker build -t lotharschulz/hello-github-actions:$tag . docker login -u ${DOCKER_USERNAME} -p ${DOCKER_PASSWORD} docker push lotharschulz/hello-github-actions:$tag @lothar_schulz Continuous Delivery 101 w/ GitHub Actions Continuous Lifecycle - Continuous Delivery Day - 2020 11 24
  17. Surprises test: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v1 - uses:

    actions/setup-java@v1 with: java-version: 11 - uses: eskatos/gradle-command-action@v1 with: arguments: test - name: test the code @lothar_schulz Continuous Delivery 101 w/ GitHub Actions Continuous Lifecycle - Continuous Delivery Day - 2020 11 24
  18. test: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v1 - uses: actions/setup-java@v1

    with: java-version: 11 - uses: eskatos/gradle-command-action@v1 with: arguments: test # - name: test the code Surprises @lothar_schulz Continuous Delivery 101 w/ GitHub Actions Continuous Lifecycle - Continuous Delivery Day - 2020 11 24
  19. 25 Demo Time Continuous Delivery 101 w/ GitHub Actions Continuous

    Lifecycle - Continuous Delivery Day - 2020 11 24
  20. 26 Demo Code Continuous Delivery 101 w/ GitHub Actions Continuous

    Lifecycle - Continuous Delivery Day - 2020 11 24
  21. There is more Core concepts Encrypted secrets Self hosted runners

    Continuous Delivery 101 w/ GitHub Actions Continuous Lifecycle - Continuous Delivery Day - 2020 11 24
  22. There is even more Contexts available on run time Triggered

    by own events Package manager and gh docker registry integrated Continuous Delivery 101 w/ GitHub Actions Continuous Lifecycle - Continuous Delivery Day - 2020 11 24
  23. 29 Ich bin gespannt auf Fragen Continuous Delivery 101 w/

    GitHub Actions Continuous Lifecycle - Continuous Delivery Day - 2020 11 24