The GBuild Agent is essentially an extension to Continuum as it reuses several Continuum and Maven components. As these components are written against the Plexus component architecture, the GBuild Agent is also written as a Plexus application. In Plexus, the configuration of the components in the application can be overridden in the application.xml.

The application.xml of the GBuild Agent can be found at this location once the agent has been started for the first time.

gbuild-agent-1.0-SNAPSHOT/apps/gbuild-agent/conf/application.xml

application.xml
<application>

  <load-on-start>
    <component>
      <role>org.apache.geronimo.gbuild.agent.BuildAgent</role>
      <role-hint>build-executor</role-hint>
    </component>
    <!--
    <component>
      <role>org.apache.geronimo.gbuild.agent.BuildAgent</role>
      <role-hint>build-producer</role-hint>
    </component>
    <component>
      <role>org.apache.geronimo.gbuild.agent.BuildAgent</role>
      <role-hint>build-results</role-hint>
    </component>
    <component>
      <role>org.apache.geronimo.gbuild.agent.BuildAgent</role>
      <role-hint>ping-monitor</role-hint>
    </component>
    <component>
      <role>org.apache.geronimo.gbuild.agent.BuildAgent</role>
      <role-hint>build-activity</role-hint>
    </component>
    -->
  </load-on-start>

  <resources>
    <jar-repository>${plexus.home}/lib</jar-repository>
  </resources>

  <components>
    <component>
      <role>org.apache.geronimo.gbuild.agent.ClientManager</role>
      <implementation>org.apache.geronimo.gbuild.agent.ClientManager</implementation>
      <configuration>
        <broker-url>tcp://ci.gbuild.org:16161</broker-url>
        <ping-interval>300000</ping-interval>
        <reconnect-attempts>10</reconnect-attempts>
        <reconnect-delay>600000</reconnect-delay>
      </configuration>
    </component>

    <component>
      <role>org.apache.geronimo.gbuild.agent.BuildAgent</role>
      <role-hint>build-executor</role-hint>
      <implementation>org.apache.geronimo.gbuild.agent.ContinuumBuildAgent</implementation>
      <requirements>
        <requirement>
          <role>org.apache.geronimo.gbuild.agent.ClientManager</role>
        </requirement>
        <requirement>
          <role>org.apache.geronimo.gbuild.agent.BuildAgentExtentionManager</role>
        </requirement>
        <requirement>
          <role>org.apache.maven.continuum.buildcontroller.BuildController</role>
        </requirement>
        <requirement>
          <role>org.apache.maven.continuum.configuration.ConfigurationService</role>
        </requirement>
      </requirements>
      <configuration>
        <contributor>Unknown</contributor>
        <admin-address>scm@geronimo.apache.org</admin-address>
        <build-task-queue>BUILD.TASKS</build-task-queue>
        <build-results-topic>BUILD.RESULTS</build-results-topic>
        <working-directory>${plexus.home}/agent/work</working-directory>
        <build-output-directory>${plexus.home}/agent/output</build-output-directory>
      </configuration>
    </component>

    <component>
      <role>org.apache.maven.continuum.store.ContinuumStore</role>
      <role-hint>agent-store</role-hint>
      <implementation>org.apache.geronimo.gbuild.agent.ThreadContextContinuumStore</implementation>
    </component>

    <component>
      <role>org.apache.maven.continuum.notification.ContinuumNotificationDispatcher</role>
      <implementation>org.apache.geronimo.gbuild.agent.MockContinuumNotificationDispatcher</implementation>
    </component>

    <component>
      <role>org.apache.geronimo.gbuild.agent.BuildAgentExtension</role>
      <role-hint>file-include</role-hint>
      <implementation>org.apache.geronimo.gbuild.agent.FileIncludeExtension</implementation>
      <requirements>
        <requirement>
          <role>org.apache.maven.continuum.configuration.ConfigurationService</role>
        </requirement>
      </requirements>
      <configuration>
        <pattern>^include.*</pattern>
      </configuration>
    </component>

    <component>
      <role>org.apache.geronimo.gbuild.agent.BuildAgentExtension</role>
      <role-hint>general-headers</role-hint>
      <implementation>org.apache.geronimo.gbuild.agent.HeaderIncludeExtension</implementation>
      <configuration>
        <pattern>^(project|build|header).*</pattern>
      </configuration>
    </component>


    <!--
    | Build Producer
    -->
    <component>
      <role>org.apache.geronimo.gbuild.agent.BuildAgent</role>
      <role-hint>build-producer</role-hint>
      <implementation>org.apache.geronimo.gbuild.agent.PropertiesBuildTaskProducer</implementation>
      <requirements>
        <requirement>
          <role>org.apache.geronimo.gbuild.agent.ClientManager</role>
        </requirement>
      </requirements>
      <configuration>
        <build-task-queue>BUILD.TASKS</build-task-queue>
        <include-prefix>include.</include-prefix>
        <header-prefix>header.</header-prefix>
        <watch-directory>${plexus.home}/tasks</watch-directory>
        <poll-interval>10000</poll-interval>
      </configuration>
    </component>

    <!--
    | Build Results
    -->
    <component>
      <role>org.apache.geronimo.gbuild.agent.BuildAgent</role>
      <role-hint>build-results</role-hint>
      <implementation>org.apache.geronimo.gbuild.agent.BuildResultsContinuumAgent</implementation>
      <requirements>
        <requirement>
          <role>org.apache.geronimo.gbuild.agent.ClientManager</role>
        </requirement>
        <requirement>
          <role>org.apache.geronimo.gbuild.agent.BuildResultsExtensionManager</role>
        </requirement>
      </requirements>
      <configuration>
        <build-results-topic>BUILD.RESULTS</build-results-topic>
      </configuration>
    </component>

    <component>
      <role>org.apache.geronimo.gbuild.agent.BuildResultsExtension</role>
      <role-hint>write-include-file</role-hint>
      <implementation>org.apache.geronimo.gbuild.agent.WriteIncludeFileExtension</implementation>
      <configuration>
        <include-pattern>^include.*</include-pattern>
        <results-directory>${plexus.home}/results</results-directory>
        <date-format>yyyy-MM</date-format>
        <file-name-template>{date}/{project.name}/{project.version}/{build.name}-{build.id}.properties</file-name-template>
      </configuration>
    </component>

    <!--
    | Ping monitor
    -->
    <component>
      <role>org.apache.geronimo.gbuild.agent.BuildAgent</role>
      <role-hint>ping-monitor</role-hint>
      <implementation>org.apache.geronimo.gbuild.agent.PingMonitorAgent</implementation>
      <requirements>
        <requirement>
          <role>org.apache.geronimo.gbuild.agent.ClientManager</role>
        </requirement>
      </requirements>
    </component>

    <!--
    | Logger manager
    -->
    <component>
      <role>org.codehaus.plexus.logging.LoggerManager</role>
      <implementation>org.codehaus.plexus.logging.log4j.Log4JLoggerManager</implementation>
      <lifecycle-handler>basic</lifecycle-handler>

      <configuration>
        <threshold>DEBUG</threshold>
        <default-appender>console,rolling</default-appender>
        <appenders>
          <appender>
            <id>console</id>
            <threshold>DEBUG</threshold>
            <type>org.apache.log4j.ConsoleAppender</type>
            <conversion-pattern>%d [%t] %-5p %-30c{1} - %m%n</conversion-pattern>
          </appender>

          <appender>
            <id>rolling</id>
            <threshold>DEBUG</threshold>
            <type>org.apache.log4j.RollingFileAppender</type>
            <conversion-pattern>%-4r [%t] %-5p %c %x - %m%n</conversion-pattern>

            <properties>
              <property>
                <name>file</name>
                <value>${plexus.home}/logs/gbuild-agent.log</value>
              </property>
              <property>
                <name>append</name>
                <value>true</value>
              </property>
              <property>
                <name>maxBackupIndex</name>
                <value>10</value>
              </property>
              <property>
                <name>maxFileSize</name>
                <value>100KB</value>
              </property>
            </properties>
          </appender>
        </appenders>
        <levels>
          <level>
            <hierarchy>org.apache.geronimo.gbuild.agent.BuildAgent:build-activity</hierarchy>
            <level>INFO</level>
          </level>
          <level>
            <hierarchy>org.apache.geronimo.gbuild.agent.BuildAgentExtension:file-include</hierarchy>
            <level>INFO</level>
          </level>
          <level>
            <hierarchy>org.apache.geronimo.gbuild.agent.BuildAgentExtension:general-headers</hierarchy>
            <level>INFO</level>
          </level>
          <level>
            <hierarchy>org.apache.geronimo.gbuild.agent.BuildResultsExtension:write-include-file</hierarchy>
            <level>INFO</level>
          </level>
          <level>
            <hierarchy>org.apache.geronimo.gbuild.agent.BuildAgentExtension:file-include</hierarchy>
            <level>INFO</level>
          </level>
          <level>
            <hierarchy>org.activemq</hierarchy>
            <level>WARN</level>
          </level>
        </levels>
      </configuration>
    </component>
  </components>

</application>
  • No labels