Automation of dependency build
Hi all,
I've been working on some automation scripts (ANT scripts with custom ant tasks) for and IBMi dependency build that will do the following:
1. Find incoming changes
2. Check the connected work items and their status.
3. Accept changes based on the wanted work item status.
4. set work items in "build in progress" status
5. execute the dependency build, package and deploy
6. set work items in "deployed to dev system" or "build failed"
7. deliver changes to target stream
I'm doing the build between two stream, so I have
"Source stream" ----> <build> ------> "target stream"
This could be
"Development stream" -----> <build> ------> "Development environment stream"
This ANT script will then "set up" the workspace for the dependency build to start. But I have some issues with this.
a. The dependency builds seems to have "accept incoming changes" as mandatory. I cannot disable it. This will ruin my work item filtering.
b. The dependency build will do "source code scanning" on the current flow target. Will it ruin the build, if I put the flow target to the "target stream"? I mean, will it then do scanning on the source code without my new changes? Why doesn't it do scanning on it's build workspace with the new changes?
I you have any comments please pitch in.
Thanks,
Morten.
I've been working on some automation scripts (ANT scripts with custom ant tasks) for and IBMi dependency build that will do the following:
1. Find incoming changes
2. Check the connected work items and their status.
3. Accept changes based on the wanted work item status.
4. set work items in "build in progress" status
5. execute the dependency build, package and deploy
6. set work items in "deployed to dev system" or "build failed"
7. deliver changes to target stream
I'm doing the build between two stream, so I have
"Source stream" ----> <build> ------> "target stream"
This could be
"Development stream" -----> <build> ------> "Development environment stream"
This ANT script will then "set up" the workspace for the dependency build to start. But I have some issues with this.
a. The dependency builds seems to have "accept incoming changes" as mandatory. I cannot disable it. This will ruin my work item filtering.
b. The dependency build will do "source code scanning" on the current flow target. Will it ruin the build, if I put the flow target to the "target stream"? I mean, will it then do scanning on the source code without my new changes? Why doesn't it do scanning on it's build workspace with the new changes?
I you have any comments please pitch in.
Thanks,
Morten.
Accepted answer
Hi Morten,
One way to control the scope of a dependency build is through the use of subsets. Would this help?
Here is the subset information in the current product documentation:
https://jazz.net/help-dev/clm/topic/com.ibm.team.build.doc/topics/t_ee_buildsubset_overview.html
An API, added in 5.0, allows programmatic creation of a build subset:
https://jazz.net/jazz/web/projects/Rational%20Team%20Concert#action=com.ibm.team.workitem.viewWorkItem&id=258710
One way to control the scope of a dependency build is through the use of subsets. Would this help?
Here is the subset information in the current product documentation:
https://jazz.net/help-dev/clm/topic/com.ibm.team.build.doc/topics/t_ee_buildsubset_overview.html
An API, added in 5.0, allows programmatic creation of a build subset:
https://jazz.net/jazz/web/projects/Rational%20Team%20Concert#action=com.ibm.team.workitem.viewWorkItem&id=258710
2 other answers
Hi Morten,
Dependency Build needs to accept all changes from the stream to the build workspace to avoid gap/conflict and calculate files need to be rebuilt.
Perhaps what you want is to automatically create subset based on your work items and use that subset in the build so that your build only scopes to the files in the subset.
Hi both, thanks for your answers. I'll look into the subsets and see how easy they are to use.
Temporarily I've decided to go for an intermediate stream, which will (at each new build) rolled back to last successful build snapshot (together with the build workspace). A filtering mechanism will then scan for new changes and for the associated work items and deliver these changes to the intermediate stream, before the dependency build is executed. It seems to work.... for now.
Temporarily I've decided to go for an intermediate stream, which will (at each new build) rolled back to last successful build snapshot (together with the build workspace). A filtering mechanism will then scan for new changes and for the associated work items and deliver these changes to the intermediate stream, before the dependency build is executed. It seems to work.... for now.
Comments
Morten Madsen
May 30 '15, 10:41 a.m.Anybody have any comments?
I'm thinking, the only way to do the above would be to have a "filtering mechanism" which would deliver work item changes to a temporary stream, that the build would use as flow target (fetch it's changes from).
Basically, it would solve my problems, if I could get rid of the "automatically accept incoming changes before build". I want to manually set the workspace up before the build... any ideas anyone?