CI/CD Tools and Practices Flashcards
What is the main goal of CI/CD?
To automate and streamline the software development lifecycle
What are the key principles of CI/CD?
Automate everything,
maintain a single source repository,
build and test every change,
keep the build fast,
test in a clone of the production environment,
make it easy to get the latest deliverables,
everyone can see the results of the latest build,
and automate deployment
What is the difference between continuous integration and continuous delivery/deployment?
Continuous integration focuses on automatically building and testing code changes
continuous delivery/deployment extends this to automatically releasing validated changes to production
What are some popular version control systems used in CI/CD?
Git, Mercurial, and Subversion (SVN)
What is a feature branch workflow?
A feature branch workflow involves creating separate branches for each feature or bugfix, which are then merged back into the main branch after review and testing
What is a pull request or merge request?
A pull request or merge request is a way to propose changes to the main branch of a repository, allowing for code review and discussion before merging
What is a build server?
A build server is a centralized system that automatically
compiles,
packages,
and tests code changes,
providing feedback on the success or failure of each build
What is a build pipeline?
A build pipeline is a series of automated steps that take code changes from version control,
build and test them,
prepare them for deployment
What are some popular CI/CD pipelines or build automation tools?
Jenkins, GitLab CI/CD, GitHub Actions, CircleCI, Travis CI, Bamboo, and TeamCity
What is a test automation framework?
A test automation framework is a set of guidelines, libraries, and tools that help structure and simplify the creation and maintenance of automated tests
What are some types of tests often automated in CI/CD?
Unit tests, integration tests, functional tests, performance tests, and security tests
What is code coverage?
Code coverage is a metric that measures the percentage of code lines, branches, or functions that are executed during automated tests
What is static code analysis?
Static code analysis is the process of examining code without executing it, to identify potential issues related to code quality, security, or compliance
What are some popular static code analysis tools?
SonarQube, Checkstyle, PMD, ESLint, and Pylint
What is Infrastructure as Code (IaC)?
Infrastructure as Code is the practice of managing and provisioning infrastructure resources using machine-readable definition files or scripts, enabling version control and automation
What are some popular IaC tools?
Terraform, AWS CloudFormation, Azure Resource Manager, Google Cloud Deployment Manager, Ansible, Puppet, and Chef
What is containerization?
Containerization is the process of packaging an application and its dependencies into a self-contained unit called a container, which can run consistently across different environments
What are some popular containerization tools?
Docker, Kubernetes, Amazon ECS, Google Kubernetes Engine, and Azure Kubernetes Service
What is continuous monitoring?
Continuous monitoring involves real-time observation and analysis of application and infrastructure metrics, logs, and events to detect issues and anomalies
What are some popular continuous monitoring tools?
Prometheus, Grafana, ELK stack (Elasticsearch, Logstash, Kibana), Nagios, and Datadog
What are the benefits of using CI/CD for software development teams?
Faster time-to-market, improved code quality, reduced risk, increased collaboration, and better scalability and reliability
What are some challenges in implementing CI/CD?
Complexity of setup and maintenance, cultural resistance to change, security and compliance concerns, and the need for specialized skills and knowledge