Andromeda Build and Deploy Explainer
June 13, 2020
Supporting multiple means of CI/CD for Andromeda
If I started my previous two posts about loving Containers and loving Functions, then you can probably tell where I am going with this one. CI/CD as a concept and in its implementation is something I love. I do not know why, but I feel this sense of empowerment when I have something, I have created myself that gets built and deployed automatically to multiple environments. My overall CI tasks are relatively simple being honest. They might just do a basic build in Gradle or a copy to an S3 bucket, but they get the job done and have since been used quite a lot in my own personal applications.
Andromeda Build and Deploy is one of the most important bits of the puzzle. It supports all the current methods of running applications today and it will most likely support even more items going down the line. Be that either in the languages I use or the target environments my applications will run in. But at the core of it, Build and Deploy is responsible for building code and deploying it across the various Andromeda services that require it. Which today, includes Containers and Functions.
Primarily, all my CI tasks are in fact handled by Github Actions. I continue to use the managed Github Actions runners today, but I have a task somewhere to migrate to self-hosted runners, just to see how it goes. The configuration files are all stored in a Github repo that itself is also CI’d with one of the workflows to an S3 bucket. That is so other services in the configuration process (eg – Andromeda Containers for example) can call S3 directly to get the required workflows in to the app right off the bat. Configuration files are broken up in the repo to Github Actions and AWS CodeBuild, the two CI services I primarily use.
CI Tasks supported include S3 deployments, Docker build and pushes to AWS ECR (my private Docker registry of task) and a Gradle Build and push of the build ZIP to S3. Although as of writing this, AWS CodeArtifact was just launched, so that could potentially be added here! Another supported task is Jekyll site building which is what this website uses. So the Jekyll site build is combined with a Docker build and deployment task. CD includes Kubernetes and AWS Lambda today, with potentially more target destinations down the line, but for right now this works alright.
Overall, I think CI/CD is critical to easier side project development from a personal perspective. It means there is a lot more abstracted away from me and I can just focus on the code side of things. It sounds like as I write that, I am also explaining the benefits of good CI/CD that you might here in your workplace. I think Build and Deploy is one of my favourite internal services and I’m quite looking forward to expanding out a lot more as my knowledge and needs grow.
Thank you!
You could of consumed content on any website, but you went ahead and consumed my content, so I'm very grateful! If you liked this, then you might like this other piece of content I worked on.
The first end to end app I made with AndromedaPhotographer
I've no real claim to fame when it comes to good photos, so it's why the header photo for this post was shot by Taylor Vick . You can find some more photos from them on Unsplash. Unsplash is a great place to source photos for your website, presentation and more! But it wouldn't be anything without the photographers who put in the work.
Find Them On UnsplashSupport what I do
I write for the love and passion I have for technology. Just reading and sharing my articles is more than enough. But if you want to offer more direct support, then you can support the running costs of my website by donating via Stripe. Only do so if you feel I have truly delivered value, but as I said, your readership is more than enough already. Thank you :)
Support My Work