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