Slide 1

Slide 1 text

GitHub Actions for Jim Hester

Slide 2

Slide 2 text

Continuous Integration ensure YOU don't break project ensure reproducibility! Not just for R p ackages! ensure OTHERS don't break project

Slide 3

Slide 3 text

Continuous Integration "If it hurts, do it more often" - Martin Fowler P ain Time between Actions

Slide 4

Slide 4 text

Continuous Integration "If it hurts, do it more often" - Martin Fowler

Slide 5

Slide 5 text

Continuous Integration "If it hurts, do it more often" - Martin Fowler

Slide 6

Slide 6 text

Continuous Integration "If it hurts, do it more often" - Martin Fowler

Slide 7

Slide 7 text

What? How? Why?

Slide 8

Slide 8 text

What? How? Why? linux

Slide 9

Slide 9 text

Windows What? How? Why? linux

Slide 10

Slide 10 text

Windows What? How? Why? macOS linux

Slide 11

Slide 11 text

Docker Windows What? How? Why? macOS linux

Slide 12

Slide 12 text

Docker Windows What? How? Why? macOS linux 20 Concurrent Jobs! 6 hours per job!!!

Slide 13

Slide 13 text

Docker Windows What? How? Why? macOS linux 20 Concurrent Jobs! 6 hours per job!!! Requires sep arate setup and Authentication???

Slide 14

Slide 14 text

Docker Windows What? How? Why? macOS linux 20 Concurrent Jobs! 6 hours per job!!! Requires sep arate setup and Authentication???

Slide 15

Slide 15 text

Docker Windows What? How? Why? Is it free??? macOS linux 20 Concurrent Jobs! 6 hours per job!!! Requires sep arate setup and Authentication???

Slide 16

Slide 16 text

Docker Windows What? How? Why? Is it free??? macOS linux for open source, academic or educational repositories 20 Concurrent Jobs! 6 hours per job!!! Requires sep arate setup and Authentication???

Slide 17

Slide 17 text

Operating Systems Concurrent builds maximum job Ease of setup GitHub Actions 20 360 minutes Travis CI 3 50 minutes Circle CI 4 300 minutes Appveyor 1 60 minutes

Slide 18

Slide 18 text

Azure Pipelines?

Slide 19

Slide 19 text

Azure Pipelines? ++ More mature than GitHub Actions

Slide 20

Slide 20 text

Azure Pipelines? ++ More mature than GitHub Actions −− Much more challenging to Setup

Slide 21

Slide 21 text

Azure Pipelines? ++ More mature than GitHub Actions −− Much more challenging to Setup GitHub Actions based on Azure pipelines

Slide 22

Slide 22 text

What? Why? How?

Slide 23

Slide 23 text

library(usethis) use_github_actions() What? Why? How?

Slide 24

Slide 24 text

library(usethis) use_github_actions() What? Why? How?

Slide 25

Slide 25 text

library(usethis) use_github_actions() What? Why? How?

Slide 26

Slide 26 text

library(usethis) use_github_actions() What? Why? How?

Slide 27

Slide 27 text

library(usethis) use_github_actions() What? Why? How?

Slide 28

Slide 28 text

library(usethis) use_github_actions() What? Why? How?

Slide 29

Slide 29 text

library(usethis) use_github_actions() What? Why? How?

Slide 30

Slide 30 text

library(usethis) use_github_actions_tidy()

Slide 31

Slide 31 text

library(usethis) use_github_actions_tidy()

Slide 32

Slide 32 text

library(usethis) use_github_actions_tidy() What? Why? How? Matrix builds!

Slide 33

Slide 33 text

library(usethis) use_github_actions_tidy() What? Why? How? Matrix builds! Multiple OS!

Slide 34

Slide 34 text

library(usethis) use_github_actions_tidy() What? Why? How? Matrix builds! Multiple OS! Multiple R Versions!

Slide 35

Slide 35 text

library(usethis) use_github_actions_tidy() What? Why? How? Matrix builds! Multiple OS! RSPM linux binaries! Multiple R Versions!

Slide 36

Slide 36 text

library(usethis) use_github_actions_tidy() What? Why? How? P ackage Caching!

Slide 37

Slide 37 text

library(usethis) use_github_actions_tidy() What? Why? How? Queries and inst alls System Dependencies!

Slide 38

Slide 38 text

library(usethis) use_github_actions_tidy() What? Why? How? Upload full check results!

Slide 39

Slide 39 text

library(usethis) use_github_actions_tidy() What? Why? How? Record and upload code coverage!

Slide 40

Slide 40 text

pkgdown requires a Personal Access token blogdown requires a netlify deploy token Bookdown requires a netlify deploy token use_github_action("pkgdown.y aml") use_github_action("blogdown.y aml") use_github_action("bookdown.y aml") github.com/r-lib/actions

Slide 41

Slide 41 text

blogdown requires a netlify deploy token use_github_action("blogdown.y aml")

Slide 42

Slide 42 text

blogdown requires a netlify deploy token use_github_action("blogdown.y aml")

Slide 43

Slide 43 text

blogdown requires a netlify deploy token use_github_action("blogdown.y aml") Inst all R & p andoc

Slide 44

Slide 44 text

blogdown requires a netlify deploy token use_github_action("blogdown.y aml") Inst all R p ackages and hugo

Slide 45

Slide 45 text

blogdown requires a netlify deploy token use_github_action("blogdown.y aml") Build the site!

Slide 46

Slide 46 text

blogdown requires a netlify deploy token use_github_action("blogdown.y aml") deploy to netlify

Slide 47

Slide 47 text

Render README requires a Personal Access token Document and style Runs on Pull requests when you comment with /document or /style use_github_action("render-readme.y aml") use_github_action("pr-commands.y aml") github.com/r-lib/actions

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

Docker cont ainers Any docker hub cont ainer!

Slide 51

Slide 51 text

Docker cont ainers Any docker hub cont ainer!

Slide 52

Slide 52 text

Docker cont ainers Any docker hub cont ainer!

Slide 53

Slide 53 text

Docker cont ainers Any docker hub cont ainer!

Slide 54

Slide 54 text

github.com/r-lib/actions usethis::use_github_actions() speakerdeck.com/jimhester/github-actions-for-r @jimhester @maxheld83 GitHub Actions for   @jimhester_ @maxheld