Continuous Integration Flashcards

1
Q

Name the steps of the deployment pipline

A
  1. Compile code
  2. Run unit tests
  3. Commit code (Maybe now or later)
  4. Put on a server that : Runs longer tests and builds installers
  5. Acceptance testing (Could involve human testers)
  6. Production
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Name and describe the 3 common software release “Anit-patterns”

A
  1. Deploying software manually
    a. Reliance on manual testing to confirm that the application is running correctly.
  2. Deploying to a production - like environment only after development is complete.
  3. Manual configuration management of production evironments.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What is staging?

A

Environment as product-like as possible where you deploy your application for testing.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What is continuous integration?

A

The practice of merging all developer working copies to a shared mainline at frequent intervals (Ideally daily)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What are the six core principles of CI?

A
  1. Create a repeatable and reliable process for releasing software.
  2. Automate almost everything.
  3. Keep everything in version control.
  4. If it hurts, do it more frequently.
  5. Everyone is responsible for the delivery process.
  6. Continuous improvement.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What are the pros of CI

A
  1. Problems caused by interactions b/w different developers are discovered & repaired.
  2. The most recent system in the mainline is the definitive working system.
  3. ’’’’’’’’ Systems | Dev vs. Production ‘’’’’’’
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What are the cons of CI

A
  1. If the system is very large, may take a long time to build & test.
  2. 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What is a daily build?

A

Practice of performing full development once per day (typically after working hours)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What are the pre-requisites for CI?

A
  1. Check-in regularly.
  2. Must have a comprehensive automated testing suite.
  3. Keep the build & test process short.
  4. 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).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What is a smoke test?

A

Test that confirms that the application can be run.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What are the essential practices of CI?

A
  1. Never check in on a broken build.
  2. Always run all commit tests locally before committing.
  3. Never go home on a broken build.
  4. Always be prepared to revert to the previous revision.
  5. Don’t comment out failing tests.
  6. Take responsibility for all breakages that result from your changes.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly