Fundamental CI/CD Knowledge
Which statement best describes the main goal of Continuous Integration (CI) in software development?
- A process for automatically testing and merging code changes frequently to detect issues early.
- A method for manually checking code for errors after deployment is complete.
- The practice of compiling code only when new features are requested.
- A way to store backups of source code in separate locations.
- An approach to design user interfaces before backend logic is written.
Understanding Pipelines
If a CI/CD pipeline fails at the 'test' stage, what is the most appropriate immediate action for the development team?
- Review the test results and fix the failing tests before proceeding.
- Ignore the failure and continue to deploy to production.
- Rollback all previous successful builds.
- Skip testing for the current project and move on.
- Delete the pipeline configuration file completely.
Deployments in CI/CD
In the context of CI/CD, what is meant by 'continuous deployment'?
- Automatically releasing every change that passes automated tests directly to production.
- Deploying applications once a year on a fixed schedule.
- Manually approving each deployment before it reaches the customers.
- Limiting deployments to development environments only.
- Updating documentation after each code release manually.
Benefits of Automation
Why is automation important in a CI/CD pipeline, for example, when running security scans on new code?
- Automation ensures consistency and reduces human error during repetitive tasks.
- Automation increases manual review effort and delays project delivery.
- Automated pipelines cannot detect any security issues.
- Automation is only necessary for testing user interfaces.
- It is better to avoid automation as it complicates version control.
Version Control and CI/CD
How does version control support the CI/CD process when multiple developers work on the same project?
- By allowing teams to collaborate, track changes, and resolve code conflicts efficiently.
- By preventing developers from creating feature branches.
- By forcing all changes to be deployed without review.
- By removing the ability to roll back faulty deployments.
- By discarding all previous versions of the project.