If you were logged in you would be able to see more operations.
|
|
|
QuickBuild
Created: 06/Mar/06 11:36 PM
Updated: 27/Dec/12 09:37 AM
|
|
Component/s: |
None
|
Affects Version/s: |
None
|
Fix Version/s: |
None
|
|
Original Estimate:
|
Unknown
|
Remaining Estimate:
|
Unknown
|
Time Spent:
|
Unknown
|
Environment:
|
All
|
|
When a build is stopped manually, the process that's running is stopped, and no other steps are run. If your build consists of some cleanup steps, these don't get executed, and can leave your build environment in a dirty state, that can cause the next build to fail.
For example, let's imagine I have a build consisting of the following steps:
1. Create DB Schema/User
2. Load DB Schema
3. Run tests/some other build step that needs the DB
4. Delete the DB Schema/User
If the build is stopped manually, then step (4) doesn't get run, and the schema is left undeleted. When the next build runs, step (1) will fail because the user exists. In my environment, step (4) ALWAYS runs, so this build failure will in fact cleanup the problem, and the subsequent build will succeed.
I recommend that stopping a build kills the current step, then evaluates the conditions on the subsequent steps to see if they should run. Stopping a step should mark it as failed, but should also set a new flag to say that the build has been stopped (in case there are steps that should only run if build has been stopped). e.g. this.parent.anyChildStepStopped, or this.parent.buildStopped.
In the example case above, my DB clean step (4) has a condition of true, so it always runs.
If you need more info, please let me know.
|
Description
|
When a build is stopped manually, the process that's running is stopped, and no other steps are run. If your build consists of some cleanup steps, these don't get executed, and can leave your build environment in a dirty state, that can cause the next build to fail.
For example, let's imagine I have a build consisting of the following steps:
1. Create DB Schema/User
2. Load DB Schema
3. Run tests/some other build step that needs the DB
4. Delete the DB Schema/User
If the build is stopped manually, then step (4) doesn't get run, and the schema is left undeleted. When the next build runs, step (1) will fail because the user exists. In my environment, step (4) ALWAYS runs, so this build failure will in fact cleanup the problem, and the subsequent build will succeed.
I recommend that stopping a build kills the current step, then evaluates the conditions on the subsequent steps to see if they should run. Stopping a step should mark it as failed, but should also set a new flag to say that the build has been stopped (in case there are steps that should only run if build has been stopped). e.g. this.parent.anyChildStepStopped, or this.parent.buildStopped.
In the example case above, my DB clean step (4) has a condition of true, so it always runs.
If you need more info, please let me know. |
Show » |
|