๐—›๐—ผ๐˜„ ๐˜๐—ผ ๐—ฐ๐—ต๐—ผ๐—ผ๐˜€๐—ฒ ๐—ฎ ๐—–๐—œ/๐—–๐—— ๐—ฝ๐—น๐—ฎ๐˜๐—ณ๐—ผ๐—ฟ๐—บ?

๐—›๐—ผ๐˜„ ๐˜๐—ผ ๐—ฐ๐—ต๐—ผ๐—ผ๐˜€๐—ฒ ๐—ฎ ๐—–๐—œ/๐—–๐—— ๐—ฝ๐—น๐—ฎ๐˜๐—ณ๐—ผ๐—ฟ๐—บ?

ยท

2 min read

Here is what is important:

๐Ÿญ. ๐—–๐—œ/๐—–๐—— ๐—บ๐˜‚๐˜€๐˜ ๐—ถ๐—ป๐˜๐—ฒ๐—ด๐—ฟ๐—ฎ๐˜๐—ฒ ๐˜„๐—ถ๐˜๐—ต ๐˜†๐—ผ๐˜‚๐—ฟ ๐—ฟ๐—ฒ๐—ฝ๐—ผ๐˜€๐—ถ๐˜๐—ผ๐—ฟ๐—ถ๐—ฒ๐˜€

Repositories are essential to CI and CD. Beyond being the end point of the check-in and test process, software repositories are the preferred place to store your CI and CD scripts and configuration files. Yes, many of the CI/CD platforms can store scripts and other files internally, but you are usually better off having them in version control outside of the tool.

๐Ÿฎ. ๐—ฌ๐—ผ๐˜‚๐—ฟ ๐—–๐—œ/๐—–๐—— ๐˜๐—ผ๐—ผ๐—น๐˜€ ๐—ป๐—ฒ๐—ฒ๐—ฑ ๐˜๐—ผ ๐˜€๐˜‚๐—ฝ๐—ฝ๐—ผ๐—ฟ๐˜ ๐˜†๐—ผ๐˜‚๐—ฟ ๐—ฝ๐—ฟ๐—ผ๐—ด๐—ฟ๐—ฎ๐—บ๐—บ๐—ถ๐—ป๐—ด ๐—น๐—ฎ๐—ป๐—ด๐˜‚๐—ฎ๐—ด๐—ฒ๐˜€ ๐—ฎ๐—ป๐—ฑ ๐˜๐—ผ๐—ผ๐—น๐˜€

Each programming language tends to have its own build tools and testing tools. To be useful to you, a CI/CD tool must support all the languages that are part of a given project. Otherwise, you might need to write one or more plug-ins for the tool. Docker images are becoming more and more important to distributed, modular, and microservice software deployments. It helps a lot if your CI/CD tool knows how to deal with Docker images, including creating an image from your source code, binaries, and prerequisites, and deploying an image to a specific environment.

๐Ÿฏ. ๐——๐—ผ ๐˜†๐—ผ๐˜‚๐—ฟ ๐—ฑ๐—ฒ๐˜ƒ๐—ฒ๐—น๐—ผ๐—ฝ๐—ฒ๐—ฟ๐˜€ ๐˜‚๐—ป๐—ฑ๐—ฒ๐—ฟ๐˜€๐˜๐—ฎ๐—ป๐—ฑ ๐—–๐—œ/๐—–๐—— ๐—ฎ๐—ป๐—ฑ ๐˜๐—ต๐—ฒ ๐˜๐—ผ๐—ผ๐—น๐˜€ ๐˜†๐—ผ๐˜‚โ€™๐—ฟ๐—ฒ ๐—ฐ๐—ผ๐—ป๐˜€๐—ถ๐—ฑ๐—ฒ๐—ฟ๐—ถ๐—ป๐—ด?

The principles of CI and CD may seem obvious, but the details are not. The various CI/CD tools have differing levels of support and documentation. There are multiple books on Jenkins, which isnโ€™t surprising since itโ€™s the oldest of the bunch. For other products, you may have to investigate the documentation and support forums and paid support options as part of your due diligence in picking a tool.

๐Ÿฐ. ๐—ฌ๐—ผ๐˜‚ ๐—ฐ๐—ฎ๐—ป ๐—ฐ๐—ต๐—ผ๐—ผ๐˜€๐—ฒ ๐—ฑ๐—ถ๐—ณ๐—ณ๐—ฒ๐—ฟ๐—ฒ๐—ป๐˜ ๐—–๐—œ/๐—–๐—— ๐˜๐—ผ๐—ผ๐—น๐˜€ ๐—ณ๐—ผ๐—ฟ ๐—ฑ๐—ถ๐—ณ๐—ณ๐—ฒ๐—ฟ๐—ฒ๐—ป๐˜ ๐—ฝ๐—ฟ๐—ผ๐—ท๐—ฒ๐—ฐ๐˜๐˜€

While this guide is about choosing a CI/CD platform, donโ€™t assume that one platform will be optimal for all your software development projects. Most shops use multiple programming languages and environments, and not every CI/CD platform will support all of them well.

๐Ÿฑ. ๐—ฃ๐—ฟ๐—ฒ๐—ณ๐—ฒ๐—ฟ ๐˜€๐—ฒ๐—ฟ๐˜ƒ๐—ฒ๐—ฟ๐—น๐—ฒ๐˜€๐˜€ ๐—–๐—œ/๐—–๐—— ๐˜„๐—ต๐—ฒ๐—ฟ๐—ฒ ๐—ฎ๐—ฝ๐—ฝ๐—ฟ๐—ผ๐—ฝ๐—ฟ๐—ถ๐—ฎ๐˜๐—ฒ

In general, cloud container deployments are less expensive than cloud server instance deployments, and serverless cloud deployments are less expensive than container deployments. Unfortunately, few CI/CD platforms can run serverless as of this writing. One the few CI/CD platforms that can run serverless is Serverless CI/CD, part of Serverless Framework Pro, an enhanced version of the open source Serverless Framework. Serverless CI/CD is optimized for deploying serverless apps and currently runs only on AWS. Youโ€™ll have to determine whether it supports your application well enough to use.

ย