Continuous Integration Flashcards
Name the steps of the deployment pipline
- Compile code
- Run unit tests
- Commit code (Maybe now or later)
- Put on a server that : Runs longer tests and builds installers
- Acceptance testing (Could involve human testers)
- Production
Name and describe the 3 common software release “Anit-patterns”
- Deploying software manually
a. Reliance on manual testing to confirm that the application is running correctly. - Deploying to a production - like environment only after development is complete.
- Manual configuration management of production evironments.
What is staging?
Environment as product-like as possible where you deploy your application for testing.
What is continuous integration?
The practice of merging all developer working copies to a shared mainline at frequent intervals (Ideally daily)
What are the six core principles of CI?
- Create a repeatable and reliable process for releasing software.
- Automate almost everything.
- Keep everything in version control.
- If it hurts, do it more frequently.
- Everyone is responsible for the delivery process.
- Continuous improvement.
What are the pros of CI
- Problems caused by interactions b/w different developers are discovered & repaired.
- The most recent system in the mainline is the definitive working system.
- ’’’’’’’’ Systems | Dev vs. Production ‘’’’’’’
What are the cons of CI
- If the system is very large, may take a long time to build & test.
- If dev platform is different from target platform, may not be possible to run system tests in dev’s private workspace.
Solutions to both of these: Split your tests, run the ones that are fast & work on dev machines every time you compile.
What is a daily build?
Practice of performing full development once per day (typically after working hours)
What are the pre-requisites for CI?
- Check-in regularly.
- Must have a comprehensive automated testing suite.
- Keep the build & test process short.
- Managing your development workspace.
a. Configuration management of source code, test data, and database/build/development scripts.
b. Configuratino management of 3rd party dependencies, libraries, and components.
c. Make sure that automated tests can be run on developer machines (Including smoke test).
What is a smoke test?
Test that confirms that the application can be run.
What are the essential practices of CI?
- Never check in on a broken build.
- Always run all commit tests locally before committing.
- Never go home on a broken build.
- Always be prepared to revert to the previous revision.
- Don’t comment out failing tests.
- Take responsibility for all breakages that result from your changes.