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

GitHub Actions Continuous Delivery 101

GitHub Actions Continuous Delivery 101

In this talk I shared and showcase how to implement a CI/CD pipeline with open source GitHub action components. The audience may use the presented open source examples to build their own CI/CD pipelines based on open source GitHub action components.

Lothar Schulz

June 10, 2020
Tweet

More Decks by Lothar Schulz

Other Decks in Technology

Transcript

  1. GitHub Actions Continuous Delivery 101 ScaleUp 360° Continuous Delivery Europe

    Lothar Schulz 2020 07 10 pic: © moovel GitHub Actions Continuous Delivery 101 | ScaleUp 360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10 @lothar_schulz
  2. pic: © moovel GitHub Actions Continuous Delivery 101 | ScaleUp

    360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10 @lothar_schulz
  3. pic: © moovel GitHub Actions Continuous Delivery 101 | ScaleUp

    360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10 @lothar_schulz
  4. Engineering Manager lotharschulz.info github.com/lotharschulz speakerdeck.com/lothar @lothar_schulz lnkd.in/lotharschulz CI/CD Meetup Berlin

    medium.com/reachnow-tech Me @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10
  5. GitHub Actions Workflow Automation @lothar_schulz GitHub Actions Continuous Delivery 101

    | ScaleUp 360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10
  6. Built-in CI/CD GitHub Actions @lothar_schulz GitHub Actions Continuous Delivery 101

    | ScaleUp 360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10
  7. 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 GitHub Actions Continuous Delivery 101 | ScaleUp 360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10 https://github.blog/2019-08-08-github-actions-now-supports-ci-cd/
  8. Open Source pic: © moovel @lothar_schulz GitHub Actions Continuous Delivery

    101 | ScaleUp 360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10
  9. @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360° Continuous

    Delivery Europe | Lothar Schulz | 2020 06 10 github.com/actions
  10. @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360° Continuous

    Delivery Europe | Lothar Schulz | 2020 06 10 github.com/sdras/ awesome-actions #community-resources
  11. @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360° Continuous

    Delivery Europe | Lothar Schulz | 2020 06 10 github.com/ jessfraz/ shaking-finger-action
  12. @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360° Continuous

    Delivery Europe | Lothar Schulz | 2020 06 10 Open Source Projects using GitHub actions (incomplete list) • 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
  13. How To's pic: © moovel @lothar_schulz GitHub Actions Continuous Delivery

    101 | ScaleUp 360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10
  14. Matrix - Builds on Linux, macOS, Windows @lothar_schulz GitHub Actions

    Continuous Delivery 101 | ScaleUp 360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10 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 }}
  15. Matrix - Excludes @lothar_schulz GitHub Actions Continuous Delivery 101 |

    ScaleUp 360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10 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
  16. Matrix - Includes & Excludes @lothar_schulz GitHub Actions Continuous Delivery

    101 | ScaleUp 360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10 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
  17. Matrix - Includes & Excludes @lothar_schulz GitHub Actions Continuous Delivery

    101 | ScaleUp 360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10 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 !
  18. Jobs @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360°

    Continuous Delivery Europe | Lothar Schulz | 2020 06 10 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]
  19. Conditionals @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360°

    Continuous Delivery Europe | Lothar Schulz | 2020 06 10 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
  20. Matrix @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360°

    Continuous Delivery Europe | Lothar Schulz | 2020 06 10
  21. Matrix @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360°

    Continuous Delivery Europe | Lothar Schulz | 2020 06 10
  22. Matrix @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360°

    Continuous Delivery Europe | Lothar Schulz | 2020 06 10
  23. Surprises @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360°

    Continuous Delivery Europe | Lothar Schulz | 2020 06 10 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
  24. Fix @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360°

    Continuous Delivery Europe | Lothar Schulz | 2020 06 10 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
  25. Demo @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360°

    Continuous Delivery Europe | Lothar Schulz | 2020 06 10
  26. Demo Code @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp

    360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10
  27. There is even more • Core concepts • Encrypted secrets

    • Self hosted runners @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10
  28. There is more • Contexts available on run time •

    Triggered by own events • Package manager and gh docker registry integrated @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10
  29. @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360° Continuous

    Delivery Europe | Lothar Schulz | 2020 06 10 pic: © moovel THANK YOU
  30. @lothar_schulz Open Source CI/CD components for GitHub Actions | FossAsia

    Summit | Lothar Schulz | 2020 03 19 pic: © moovel THANK YOU SLIDE DECK GitHub Actions Continuous Delivery 101 | ScaleUp 360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10 @lothar_schulz pic: © moovel