Ok, here are a few little experiments.
Let's start with this configuration:


  <project name="B">
  </project>

  <project name="U">
    <triggers>
      <projectTrigger project="B">
        <triggerFirstTime>False</triggerFirstTime>
        <innerTrigger type="intervalTrigger" seconds="11"
buildCondition="ForceBuild" name="Multi: Project: internal every 11
seconds" />
      </projectTrigger>
    </triggers>
  </project>

Once the configuration is reloaded, the status of B is "unknown",
which means U will never trigger. This is fine.
Force the build for B. Once it completes, the build for U gets
triggered and completes as well.
After this, every 10 seconds, you see a line in the server log that
says the state of B is success. But this does not trigger the build
for U.
Make a change to the configuration file (add a space) to force the
server reloading it.
After 10 seconds, you start seeing the same message as before about B
status being success. And yet, it does not trigger the build for U.
If you force B again, U will be triggered as well.
Try the same with triggerFirstTime set to True and you'll see it does
not make a difference (why is this property there then?)

So there is an undocumented behavior that means the project trigger
only triggers if the linked project has been built between the two
checks

This might explain why my schedule trigger did not work as project B
quite probably was not built between the moment I loaded the
configuration and the scheduled time.

I think it would be worth mentioning this in the documentation so that
other people do not get confused the first time they use project
triggers.

Regards
Olivier


On 20 août, 11:18, OBones <[email protected]> wrote:
> I thought that triggerStatus was Success by default, at least that's
> what the doc says.
> As to "ForceBuild", I actually want project U to run if it has
> modifications of its own so I believe this is ok if I leave
> IfModificationExists
>
> I'll fiddle around to see if I can get it to work, but this trigger
> problem seems quite mysterious to me.
>
> The extra --> was from me commenting out the multiTrigger in my
> production config ;-)
>
> On 19 août, 17:58, Benjamin Baumann <[email protected]> wrote:
>
> > Hello,
>
> > I think you should change your project trigger configuration to
>
> > <projectTrigger project="B">
> >     <triggerFirstTime>False</triggerFirstTime>
> > *    <triggerStatus>Success</triggerStatus>*
> >     <innerTrigger type="intervalTrigger" seconds="1800"  buildCondition="*
> > ForceBuild*" />
> > </projectTrigger>
>
> > The first change will only launch the project U build if the project B build
> > has been successful.
> > The second change will force the build of project U when project B has been
> > built. With your previous configuration, U would be built if B has been
> > built AND if there was changes in U source control (IfModificationExists).
>
> > As for the multitrigger, I think it's OK. By the way, there were extra "-->"
> > in the configuration you posted.
>
> > Hope this helps,
> > Benjamin Baumann
>
> > 2010/8/19 OBones <[email protected]>
>
> > > Hello,
>
> > > I want to trigger project U when it is 21:00 weekdays but only if
> > > project B was successful during its last run.
> > > Reading the documentation, I thought I could do this with a
> > > multiTrigger for project U:
>
> > >        <multiTrigger operator="And">
> > >          <triggers>
> > >            <projectTrigger project="B">
> > >              <triggerFirstTime>False</triggerFirstTime>
> > >              <innerTrigger type="intervalTrigger" seconds="1800"
> > > buildCondition="IfModificationExists" />
> > >            </projectTrigger>-->
> > >            <scheduleTrigger time="21:00">
> > >              <weekDays>
> > >                <weekDay>Monday</weekDay>
> > >                <weekDay>Tuesday</weekDay>
> > >                <weekDay>Wednesday</weekDay>
> > >                <weekDay>Thursday</weekDay>
> > >                <weekDay>Friday</weekDay>
> > >              </weekDays>
> > >            </scheduleTrigger>
> > >          </triggers>
> > >        </multiTrigger>
>
> > > Unfortunately this did not work and the build was not triggered last
> > > night.
> > > I set triggerFirstTime to false because according to the
> > > documentation, the first time the internal trigger triggers is not
> > > reliable.
> > > Could it be this value that is preventing the build from running
> > > altogether?
> > > Or am I doing something wrong?
>
> > > Regards
> > > Olivier

Reply via email to