Serverless CI/CD on the AWS Cloud
caylent.com
caylent.com
GitHub Actions with self-hosted runners (https://help.github.com/en/actions/hosting-your-own-runners/...) offers a much more user-friendly and complete product. It's a shame that GitHub does not publish an AMI, but installing the runner is straightforward enough. A T3 instance is all that you need.
Discoverability and modification was a nightmare. Solving any task basically required that I pick a community written extension and trust it with github credentials.
Their documentation also managed to both be too long and devoid of the details I needed answering, which is a neat trick.
In the end I went back to CircleCI, since writing a yaml file was much clearer.
Github actions I find pretty awesome, allowing your configuration file to just be glue between well-written, well-maintained actions for doing "stuff".
I've written a couple of my own, and since they're docker based they're very simple to get running, and very easily composable.
For example this one is trivial, but it lets you run project-specific test-cases on PR/push/whatever:
https://github.com/skx/github-action-tester
Just add `.github/run-tests.sh` to your repository and enable the action, suddenly your test-cases run. And since the test-cases are in your repository you can do anything you like, including run them locally!
I can say that I do like extensions to a point, and it seems that there is a lot more traction from the community, than for example for CircleCI Orbs, which are more or less the same thing.
However, CircleCI or GitLab CI (I'd reckon they are quite close in the syntax and features they offer) configuration seems much more straightforward, and is easier to write and understand.
Also, documentation really does leave a lot to be desired.
The trick is to understand that for complex behaviours you can't just glue different actions together, and instead you may have to build your own action and use the GitHub API token provided in the context to possibly perform additional actions.
If Amazon's internal tooling is like that, they should've gone ahead and bought GitHub. Would've probably paid off in terms of developer productivity very quickly.
The entire “heres a parts bin go bananas” thing cant be the final state of devops. Simultaneously building profitable businesses on top of the three is a terrifying prospect.
1 - https://buildkite.com/docs/tutorials/elastic-ci-stack-aws
Interested to hear any feedback from those running Buildkite with GCP.
Due to lack of features you can really only use codepipeline in very simple cases for builds. Just too painful.
So it's better to stick to codepipeline for deployments only; but if you do, your deployment ci is now different than your build ci.
Really wanted to like it (the security benefits are real) but now avoid and use "full" ci for everything.
Obviously org, team and situation dependent, but we got the most velocity benefit from using 1 tool everywhere. If you had to use 1 tool I can almost guarantee you would not choose codepipeline after using it.
The folks behind Architect built a fully hosted service that includes CI/CD called Begin [2].
I’m happily using both for a few different projects.
[1] http://arc.codes
[2] http://begin.com