GitHub Actions: Automating Serverless Deployments
The whole internet is abuzz over GitHub Actions, if by ‘whole internet’ you mean ‘the part of the internet that is obsessed with serverless ops’ and by ‘abuzz’ you mean ‘aware of‘.
But Actions are a bit surprising! GitHub is a company that has famously focused on doing a single thing extremely well. As the ranks of developer-tooling SaaS companies swells by the day, you would think GitHub would have long ago joined the fray. Wouldn’t you like to try out a browser-based IDE, CI/CD tools, or live debugging tools, with the GitHub logo at the top left corner?
With the GitHub Actions product page promising to let you build your own ‘workflow’ from private and shared ‘actions’ in any order you want, with each action to be run in its own docker container, the whole thing configured with a simple-but-powerful scripting logic; GitHub Actions feels like a big ambitious expansion of the product. Could this be the influence of notoriously over ambitious new leadership at Microsoft?
In reality GitHub Actions are a powerful new tool for expanding what you do based on GitHub events and nothing else!
What can it do?
A lot! Again in the realm of ‘doing something to your repo when something happens to your repo. Some use cases that stand out:
- Build your assets when you commit to Master
- Raise alerts for critical issues
- Take some custom action when commits get comments
- Notify stakeholders when feature branches are merged to production
What can’t it do?
A whole lot! Workflows can’t:
- Respond to anything other than GitHub repo events (you can’t send a request from anywhere else to kick off a workflow)
- Take more than an hour
- Have more than 100 actions - a limitation that seems pretty minor since actions can do arbitrarily large tasks
GitHub Actions are definitely a step in the right direction, since both the configuration for a workflow and the docker images for each action can all be part of a single repo managed like others code. And as I and others have often harped on: one should always prefer managing code over managing config. GitHub Actions increases the likelihood that your whole teams will be able to see how the workflow around your code is supposed to work, and that’s an unalloyed benefit to your team.
“I’m sold, GitHub Actions forever! I’ll add them to master tomorrow.”
Bad news sport, GitHub Actions are on a beta with a waitlist and while GitHub has its sight set on integrating actions with your production process, a warning at the top of the developer guide explicitly states that GitHub Actions isn’t ready to do that.
So for now head on over and get on the waiting list for the feature, and try it out with your dev branches sometime soon.
GitHub makes no secret of the fact that Actions replace the task of building an app to receive webhooks from your repository. If you’d like to build an app in the simplest possible structure, my coworker Anna Spysz wrote about how to receive GitHub webhooks in just a few steps. Further, using Stackery makes it easy to hook your app up to a docker container to run your build tasks.