قالب وردپرس درنا توس
Home / Mac / CI / CD differences on Mac infrastructure

CI / CD differences on Mac infrastructure



It is easy to make an overall generalization that everything is different on a Mac. And sure, there are some important differences, but regardless of the operating system associated with it, CI / CD is generally the same at a high level. Most of the distinctions in the world of Mac CI / CD are the product of Mac specific tools and best practices.

What's the same:

  • Linux. Mac's OS is based on Unix, around 90% of Linux commands still work
  • Creating virtual machines (provisioning)
  • A grouping area to collaborate and then distribute new code being developed (pipeline) [19659004] Using Updates / New External Packages (rehydration / CM)

This last step guarantees a little more explanation. The practice of updating and otherwise modifying a base VM image is called rehydration (in the case of stateless / volatile / immutable infrastructure) or configuration management (for sufficient or mutable architectures). This is where the Puppet and Chef are often used, and Ansible can also be used for this function.

  CI / CD Infrastructure Illustration 1

What is Different:

Code:
Differences are largely driven by the tools Apple employees get behind them. The road to least resistance is almost certainly the one that Apple, with its far-reaching influence, advocates. Unlike Windows or supported Linux offers such as RedHat or CentOS, the Apple development team has dominated its place with over 40 years of innovation, and many Apple concepts have become the way of doing business for all platforms (such as smart phones).

Databases :
Older apps and programs had a database as a core feature, and many systems still do. While the current best practice is to avoid a populated database (one that only works with a historical record) whenever possible, the legacy that already exists is almost always dependent on the history of the database. Databases represent a point "condition": a system that needs to know its own history and cannot be created completely "on the go." Maintaining a database is an important architecture function for many CI / CD systems. The conditions for this are either a "stateful system" or "mutable infrastructure". Ansible was designed with this flow in mind and can address all the components of this infrastructure.

Generally, Mac apps have always avoided this. This means that a different architecture is commonly used, often referred to as a volatile, stateless or immutable infrastructure. A database can be used, but is used as a temporary storage of data for that session. An architecture of this kind derives from a well-known good source, often referred to as a "golden image." The idea of ​​this system is to completely replicate the environment with each occurrence. The basic image still needs updates, but this is done to single-image offline, then new systems copy those updates from the image while they are created. Terraform was designed for this type of system and fully addresses the volatile process. Many non-Mac systems can use this architecture as well, but it is the rule for most Mac applications.

Build Caching:
Unlike the traditional Linux and Windows systems, Apple builds can take a long time to perform. Being aware of this, several large companies have launched their own products to address this, and Apple also begins addressing it internally. Currently, competitors in this area are:

  • Basel (by Google)
  • Please (by former Google employees)
  • Buck (by Facebook)
  • Trousers (used by Twitter)
  CI / CD Infrastructure Illustration 2

Source link