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

Open Source CI/CD components for GitHub Actions

Open Source CI/CD components for GitHub Actions

GitHub Actions can orchestrate any workflow. 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.

Avatar for Lothar Schulz

Lothar Schulz

March 19, 2020
Tweet

More Decks by Lothar Schulz

Other Decks in Programming

Transcript

  1. Open Source CI/CD components for GitHub Actions FossAsia Summit Lothar

    Schulz 2020 03 19 pic: © moovel Open Source CI/CD components for GitHub Actions | FossAsia Summit | Lothar Schulz | 2020 03 19 @lothar_schulz
  2. pic: © moovel Open Source CI/CD components for GitHub Actions

    | FossAsia Summit | Lothar Schulz | 2020 03 19 @lothar_schulz
  3. pic: © moovel Open Source CI/CD components for GitHub Actions

    | FossAsia Summit | Lothar Schulz | 2020 03 19 @lothar_schulz
  4. Engineering Manager lotharschulz.info CI/CD Meetup Berlin github.com/lotharschulz speakerdeck.com/lothar @lothar_schulz lnkd.in/lotharschulz

    Me @lothar_schulz Open Source CI/CD components for GitHub Actions | FossAsia Summit | Lothar Schulz | 2020 03 19
  5. GitHub Actions Workflow Automation @lothar_schulz Open Source CI/CD components for

    GitHub Actions | FossAsia Summit | Lothar Schulz | 2020 03 19
  6. Built-in CI/CD GitHub Actions @lothar_schulz Open Source CI/CD components for

    GitHub Actions | FossAsia Summit | Lothar Schulz | 2020 03 19
  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 Open Source CI/CD components for GitHub Actions | FossAsia Summit | Lothar Schulz | 2020 03 19 https://github.blog/2019-08-08-github-actions-now-supports-ci-cd/
  8. Open Source pic: © moovel @lothar_schulz Open Source CI/CD components

    for GitHub Actions | FossAsia Summit | Lothar Schulz | 2020 03 19
  9. @lothar_schulz Open Source CI/CD components for GitHub Actions | FossAsia

    Summit | Lothar Schulz | 2020 03 19 github.com/actions
  10. @lothar_schulz Open Source CI/CD components for GitHub Actions | FossAsia

    Summit | Lothar Schulz | 2020 03 19 github.com/sdras/ awesome-actions #community-resources
  11. @lothar_schulz Open Source CI/CD components for GitHub Actions | FossAsia

    Summit | Lothar Schulz | 2020 03 19 github.com/ jessfraz/ shaking-finger-action
  12. @lothar_schulz Open Source CI/CD components for GitHub Actions | FossAsia

    Summit | Lothar Schulz | 2020 03 19 Open Source Projects using GitHub actions (list not complete) • 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
  13. How To's pic: © moovel @lothar_schulz Open Source CI/CD components

    for GitHub Actions | FossAsia Summit | Lothar Schulz | 2020 03 19
  14. Matrix - Builds on Linux, macOS, Windows @lothar_schulz Open Source

    CI/CD components for GitHub Actions | FossAsia Summit | Lothar Schulz | 2020 03 19 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 Open Source CI/CD components for GitHub

    Actions | FossAsia Summit | Lothar Schulz | 2020 03 19 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 Open Source CI/CD components

    for GitHub Actions | FossAsia Summit | Lothar Schulz | 2020 03 19 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 Open Source CI/CD components

    for GitHub Actions | FossAsia Summit | Lothar Schulz | 2020 03 19 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 Open Source CI/CD components for GitHub Actions |

    FossAsia Summit | Lothar Schulz | 2020 03 19 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 Open Source CI/CD components for GitHub Actions |

    FossAsia Summit | Lothar Schulz | 2020 03 19 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. Surprises @lothar_schulz Open Source CI/CD components for GitHub Actions |

    FossAsia Summit | Lothar Schulz | 2020 03 19 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
  21. Fix @lothar_schulz Open Source CI/CD components for GitHub Actions |

    FossAsia Summit | Lothar Schulz | 2020 03 19 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
  22. Demo Code @lothar_schulz Open Source CI/CD components for GitHub Actions

    | FossAsia Summit | Lothar Schulz | 2020 03 19
  23. There is even more • Core concepts • Encrypted secrets

    • Self hosted runners @lothar_schulz Open Source CI/CD components for GitHub Actions | FossAsia Summit | Lothar Schulz | 2020 03 19
  24. There is more • Contexts available on run time •

    Triggered by own events • Package manager and gh docker registry integrated @lothar_schulz Open Source CI/CD components for GitHub Actions | FossAsia Summit | Lothar Schulz | 2020 03 19
  25. @lothar_schulz Open Source CI/CD components for GitHub Actions | FossAsia

    Summit | Lothar Schulz | 2020 03 19 pic: © moovel THANK YOU
  26. @lothar_schulz Open Source CI/CD components for GitHub Actions | FossAsia

    Summit | Lothar Schulz | 2020 03 19 pic: © moovel THANK YOU SLIDE DECK Open Source CI/CD components for GitHub Actions | FossAsia Summit | Lothar Schulz | 2020 03 19 @lothar_schulz pic: © moovel