GitHub actions are a new workflow automation feature of the popular code repository host GitHub. The product is currently in limited beta .
Among many other things, it allows you to run (pretty much arbitrary) Continuous Integration / Continuous Delivery (CI/CD) workflows.
Sort of like TravisCI, but arguably way more flexible.
I got into the limited beta while back and have been using it for a couple of weeks now.
I think it's pretty amazing, and it may have some potential for R users.
A gif says is best:
(This is a complete package build/check/doc/deploy workflow).
To benefit from all the inherent flexibility, GitHub actions is arguably best used via GitHub's own visual editor (at github.com). (You may be relieved to learn that there's always a flat text representation behind the visual editor that you can edit by hand).
Still, I thought, it might be great to have simple templates with sensible defaults for many R projects. So @FrauK and I built a package for that:
This package is meant to get you started quickly, as well as a place to gather and distill experiences and best practices.
I've also developed a couple of R-specific GitHub actions, which you'll also find documented there. (These are, technically, separate from the package, though the package provides convenient wrappers).
Here's how to get started.
Throughout, I've found GitHub actions to be really easy to work with, quite performant, and generously supported by GitHub.
The aspect I like the most is that the each of the actions making up a workflow, each have their own Docker image to run in.
Though this has some upfront cost, being thus forced to bring-my-own-dockerfile has been a blessing in my development workflow, and I've even turned to developing inside those Docker images.
Finally, I've had to provision only one computing environment per project.
Docker is not, without additional measures, a reproducibility panacea, as RStudio has cogently argued.
But still, beats wrestling with TravisCI for me .
I was also happy to read that GitHub has already open sourced the actions spec and parser, and seems to encourage a wide range of community implementations, including running it locally as a
makefile of sorts.
So the vendor lock-in is hopefully going to be relatively limited, especially because it's all Docker and Shell underneath.
It's obviously still early days for GitHub actions itself, and especially the ghactions package, with lots more to do (especially testing, more project support, build artifact caching, and much more.).
This being a beta project, GitHub also cautions against usage in production context, and the same holds for my package.
Still, I thought I'd put this out there.
Can't wait to hear your feedback.