It's all about the answers!

Ask a question

Continuous Integration Builds


Sally-Anne Prout (11022216) | asked Aug 04 '08, 6:23 a.m.
Builds
Can the RTC build engine determine if a new delivery has been accepted into a stream and automatically start a build based on this change (continuous integration). This would be akin to how Build Forge (Adaptors) or Cruise Control would work.

Thanks Sally
:)

6 answers



permanent link
Amir Bar-or (1513026) | answered Aug 05 '08, 10:15 p.m.
I used the workspace where I made the syncrnoized stream. Even when I used the template I still got the error below. However , I fixed it by creating a dedicated workspace for my regression builds that is different from the syncronized workspace.

Thank you.


Log:

2008-08-05 21:07:47 Should build occur?
2008-08-05 21:07:47 Yes: Always build a user initiated request.
2008-08-05 21:07:47 Invoking pre-build participant "com.ibm.team.build.jazzscm"
Accepting changes into workspace "e2autobd_jazz_int_e2_src_only_3" ...
com.ibm.team.repository.common.TeamRepositoryException: Component E2_base_comp is accepting changes from multiple flow targets
at com.ibm.team.build.internal.scm.SourceControlUtility.acceptAllIncoming(SourceControlUtility.java:602)
at com.ibm.team.build.internal.scm.SourceControlUtility.acceptAllIncoming(SourceControlUtility.java:496)
at com.ibm.team.build.internal.engine.JazzScmPreBuildParticipant.performAccept(JazzScmPreBuildParticipant.java:219)
at com.ibm.team.build.internal.engine.JazzScmPreBuildParticipant.preBuild(JazzScmPreBuildParticipant.java:126)
at com.ibm.team.build.internal.engine.BuildLoop.invokePreBuildParticipants(BuildLoop.java:570)
at com.ibm.team.build.internal.engine.BuildLoop$2.run(BuildLoop.java:426)
at java.lang.Thread.run(Thread.java:595)

permanent link
Ryan Manwiller (1.3k1) | answered Aug 05 '08, 8:25 p.m.
JAZZ DEVELOPER
How did you create the build definition? If you are using the jazz build
engine and you used the "Ant - Jazz Build Engine" template, then it has
built in support for accepting the latest changes. You do not need the
teamAccept task in this case. The jazz build engine does it for you. See the
Jazz Source Control tab in the build definition editor. There, you would
specify your build workspace. Then, just make sure your build workspace has
flow targets setup with the integration stream you want to accept from. All
changes will be accepted during the build.

If you are not using the jazz build engine, then the teamAccept task is
necessary. But the workspace needs the same flow target setup.

You can embed the teamAccept task in your existing ant script or make a new
ant script. That's a detail of your build and up to you.

Regarding the error you got...
If you look at all the flow targets coming into your build workspace, and
look at the components within, do any of the components collide? Such as
Component E2_base_comp ? You cannot flow from muiltiple streams with the
same components unless you "scope" the flows so that each component is
coming from at most one stream. Otherwise the files will collide. This is
not allowed. To do that, open your build workspace in the workspace editor.
In the Flow Targets section, select the flow target and edit it. Choose
"Flow only components checked below" and then select components so there are
no overlaps between flows.

---
Ryan Manwiller
Jazz Team

permanent link
Amir Bar-or (1513026) | answered Aug 05 '08, 5:59 p.m.
The story continues, assuming what I wrote earlier is the only choice, I wrote an ant script that will do teamAccept before running my build.

I got this log, any ideas:

2008-08-05 17:58:38 Should build occur?
2008-08-05 17:58:38 Yes: Always build a user initiated request.
2008-08-05 17:58:39 Invoking build participant "com.ibm.team.build.ant"
Buildfile: F:\home\e2autobd\workspace\projects\sunjdk\buildInt.xml

checkEnv:

Sync:
com.ibm.team.repository.common.TeamRepositoryException: Component E2_base_comp is accepting changes from multiple flow targets
at com.ibm.team.build.internal.scm.SourceControlUtility.acceptAllIncoming(SourceControlUtility.java:602)
at com.ibm.team.build.internal.scm.SourceControlUtility.acceptAllIncoming(SourceControlUtility.java:496)
at com.ibm.team.build.ant.task.TeamAcceptTask.doExecute(TeamAcceptTask.java:144)
at com.ibm.team.build.ant.task.AbstractTeamBuildTask.execute(AbstractTeamBuildTask.java:419)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:357)
at org.apache.tools.ant.Target.performTasks(Target.java:385)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
at org.apache.tools.ant.Main.runBuild(Main.java:698)
at org.apache.tools.ant.Main.startAnt(Main.java:199)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)

BUILD FAILED
F:\home\e2autobd\workspace\projects\sunjdk\buildInt.xml:23: com.ibm.team.repository.common.TeamRepositoryException: Component E2_base_comp is accepting changes from multiple flow targets

Total time: 18 seconds
Build failed. Exit value was 1.
2008-08-05 17:58:59 Invoking post-build participant "com.ibm.team.build.junit.publishing"
Published directory of JUnit log files: F:\home\e2autobd\workspace\projects\sunjdk\test-output

permanent link
Amir Bar-or (1513026) | answered Aug 05 '08, 3:17 p.m.
Let me be more specific: I found the teamAccept ant task. I think that this allows me to accept changes. The question is do I have to write another Ant script to use this task and call my original ant , or is there a built-in way to do it?

permanent link
Amir Bar-or (1513026) | answered Aug 05 '08, 12:35 p.m.
I defined an integration build with my own ant script in a dedicated workspace and user. How do I automatically sync-up with the integration stream and accept all changes , so I would run the build on the latest code?

permanent link
Don Weinand (7851) | answered Aug 04 '08, 11:05 a.m.
JAZZ DEVELOPER
There is similar functionality. You can set it up so that periodically a
build is attempted and if changes have been accepted in the workspace the
build is executed otherwise it's skipped. The smallest interval that this
can occur at is every minute. This article should help describe the setup
process for doing that.

https://jazz.net/learn/LearnItem.jsp?href=content/docs/client-tour/using-build.html

Don Weinand
Jazz Team Build

"sallyanne" <sallyanne> wrote in message
news:g76ljh$npq$1@localhost.localdomain...
Builds
Can the RTC build engine determine if a new delivery has been accepted
into a stream and automatically start a build based on this change
(continuous integration). This would be akin to how Build Forge
(Adaptors) or Cruise Control would work.

Thanks Sally
:)

Your answer


Register or to post your answer.


Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.