by gdiocarez on 3/8/20, 8:09 AM with 6 comments
by weitzj on 3/8/20, 8:40 AM
So, get a new CI pipeline ready with steps like build, unit test, integration tests and some artifacts which come out of it (like a Jar or rpm or Docker image or AMI) Next step would be making sure your build pipeline has a reproducible build environment, i.e. you PIN the Compiler Version, nodejs Version, whatever... typically docker or a VM or other tools can help you with that.
That would be roughly your build pipeline. Now you would create another pipeline to deploy your build artifacts using for example terraform to update your AMI or using kubectl to update your Docker Image (if you use Kubernetes) or using ssh/ansible to update your jar/rpm/Docker image...
Once you have that in place, start thinking of your deployment environments. You might have dev,staging, production. And now think how you could use the same build artifact for all environments. This is what often goes wrong and people build their artifacts for each environment. This would be an indicator in your applications code that you need to invert this dependency (12-factor-apps, inversion of control). Don’t confuse build pipeline with deployment pipeline.
So these are some rough tips. Learning Jenkinsfile/GitLab.ci or some other CI server syntax is important. Then some infrastructure as code tool like terraform. Keep in mind things like:
12-factor-Apps, immutable infrastructure, inversion of control
and you will find plenty more stuff to learn.
by wyclif on 3/8/20, 8:24 AM
I think a good first step is upping your bash/zsh scripting game, and making sure your infrastructure chops are good (TCP/IP, HTTP, etc.)
by aliswe on 3/9/20, 12:31 PM
https://docs.microsoft.com/en-us/azure/devops/pipelines/crea...
by insomniacity on 3/8/20, 3:13 PM