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.

4de70370869f561b5bb5a816d2be3198?s=128

Lothar Schulz

June 10, 2020
Tweet

Transcript

  1. 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. 2.

    pic: © moovel GitHub Actions Continuous Delivery 101 | ScaleUp

    360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10 @lothar_schulz
  3. 3.

    pic: © moovel GitHub Actions Continuous Delivery 101 | ScaleUp

    360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10 @lothar_schulz
  4. 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. 5.

    GitHub Actions Workflow Automation @lothar_schulz GitHub Actions Continuous Delivery 101

    | ScaleUp 360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10
  6. 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. 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. 9.

    Open Source pic: © moovel @lothar_schulz GitHub Actions Continuous Delivery

    101 | ScaleUp 360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10
  9. 10.

    @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360° Continuous

    Delivery Europe | Lothar Schulz | 2020 06 10 github.com/actions
  10. 11.

    @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. 13.

    @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360° Continuous

    Delivery Europe | Lothar Schulz | 2020 06 10 github.com/ jessfraz/ shaking-finger-action
  12. 14.

    @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. 15.

    How To's pic: © moovel @lothar_schulz GitHub Actions Continuous Delivery

    101 | ScaleUp 360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10
  14. 16.

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

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

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

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

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

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

    Matrix @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360°

    Continuous Delivery Europe | Lothar Schulz | 2020 06 10
  21. 23.

    Matrix @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360°

    Continuous Delivery Europe | Lothar Schulz | 2020 06 10
  22. 24.

    Matrix @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360°

    Continuous Delivery Europe | Lothar Schulz | 2020 06 10
  23. 25.

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

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

    Demo @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360°

    Continuous Delivery Europe | Lothar Schulz | 2020 06 10
  26. 28.

    Demo Code @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp

    360° Continuous Delivery Europe | Lothar Schulz | 2020 06 10
  27. 29.

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

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

    @lothar_schulz GitHub Actions Continuous Delivery 101 | ScaleUp 360° Continuous

    Delivery Europe | Lothar Schulz | 2020 06 10 pic: © moovel THANK YOU
  30. 32.

    @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