Some considerations when using this job:
- * The patch test verification takes some time (~ 2 hours) + consumes a lot of
- resources so it is not meant to be used for every patch
- * The system test for master patches will fail most of the times because both
+ * The patch test verification takes some time (~2 hours) + consumes a lot of
+ resources so it is not meant to be used for every patch.
+ * The system tests for master patches will fail most of the times because both
code and test are unstable during the release cycle (should be good by the
- end of the cycle)
- * Because of the above, patch test results has to be interpreted most of the
- times by a system test knowable person, the integration group can help with
- that
+ end of the cycle).
+ * Because of the above, patch test results typically have to be interpreted by
+ system test experts. The [Integration/Test][1] project can help with that.
+
+### Autorelease Validate Job
+
+Trigger: **revalidate**
+
+This job runs the PROJECT-validate-autorelease-BRANCH job which is used as a
+quick sanity test to ensure that a patch does not depend on features that do
+not exist in the current release.
+
+The **revalidate** trigger is useful in cases where a project's verify job
+passed however validate failed due to infra problems or intermittent issues.
+It will retrigger just the validate-autorelease job.
+
## <a name="jjb_basic_configuration">Basic Job Configuration</a>
- To create jobs based on the above templates you can use the example
- template which will create 6 jobs (verify, merge, and daily jobs for both
- master and stable/helium branch).
-
- Run the following steps from the repo (i.e. releng/builder) root to create
- initial job config. This script will produce a file in
- jjb/\<project\>/\<project\>.yaml containing your project's base template.
-
- python scripts/jjb-init-project.py <project-name>
-
- # Example
- python scripts/jjb-init-project.py aaa
-
- # Note: The optional options below require you to remove the 1st line
- # comment in the produced template file otherwise the auto
- # update script will overwrite the customization next time it
- # is run. See Auto Update Job Templates section below for more
- # details.
- #
- # Optionally pass the following options:
- #
- # -s / --streams : List of release streams you want to create jobs for. The
- # first in the list will be used for the Sonar job.
- # (defaults to "beryllium")
- # -p / --pom : Path to pom.xml to use in Maven build (defaults to pom.xml)
- # -g / --mvn-goals : With your job's Maven Goals necessary to build
- # (defaults to "clean install")
- # Example : -g "clean install"
- #
- # -o / --mvn-opts : With your job's Maven Options necessary to build
- # (defaults to empty)
- # Example : -o "-Xmx1024m"
- #
- # -d / --dependencies : A comma-seperated (no spaces) list of projects
- # your project depends on.
- # This is used to create an integration job that
- # will trigger when a dependent project-merge job
- # is built successfully.
- # Example : aaa,controller,yangtools
- #
- # -t / --templates : Job templates to use
- # (defaults: verify,merge,daily,integration,sonar)
- #
- # Example : verify,merge,daily,integration
- #
- # -a / --archive-artifacts : Comma-seperated list of patterns of artifacts
- # to archive on build completion.
- # See: http://ant.apache.org/manual/Types/fileset.html
- #
- # Example : *.log,*.patches
-
- If all your project requires is the basic verify, merge, and
- daily jobs then using the job template should be all you need to
- configure for your jobs.
-
- ### Auto Update Job Templates
-
- The first line of the job YAML file produced by the script will contain
- the words # REMOVE THIS LINE IF... leaving this line will allow the
- releng/builder autoupdate script to maintain this file for your project
- should the base template ever change. It is a good idea to leave this
- line if you do not plan to create any complex jobs outside of the
- provided template.
-
- However if your project needs more control over your jobs or if you have
- any additional configuration outside of the standard configuration
- provided by the template then this line should be removed.
-
- #### Tuning templates
-
- Additionally the auto-updater does allow some small tweaks to the template
- so that you can take advantage of the template while at the same time
- tuning small aspects of your jobs. To take advantage of this simply create
- a file in your project's jjb directory called **project.cfg** with the
- following contents and tune as necessary. If there is a parameter you do
- NOT want to tune simply remove the parameter or comment out the line with a
- "#"" sign.
+ To create jobs based on existing [templates](#jjb_templates), use the
+ [`jjb-init-project.py`][24] helper script. When run from the root of
+ [RelEng/Builder's repo][13], it will produce a file in
+ `jjb/<project>/<project>.yaml` containing your project's base template.
+
+ $ python scripts/jjb-init-project.py --help
+ usage: jjb-init-project.py [-h] [-c CONF] [-d DEPENDENCIES] [-t TEMPLATES]
+ [-s STREAMS] [-p POM] [-g MVN_GOALS] [-o MVN_OPTS]
+ [-a ARCHIVE_ARTIFACTS]
+ project
+
+ positional arguments:
+ project project
+
+ optional arguments:
+ -h, --help show this help message and exit
+ -c CONF, --conf CONF Config file
+ -d DEPENDENCIES, --dependencies DEPENDENCIES
+ Project dependencies A comma-seperated (no spaces)
+ list of projects your project depends on. This is used
+ to create an integration job that will trigger when a
+ dependent project-merge job is built successfully.
+ Example: aaa,controller,yangtools
+ -t TEMPLATES, --templates TEMPLATES
+ Job templates to use
+ -s STREAMS, --streams STREAMS
+ Release streams to fill with default options
+ -p POM, --pom POM Path to pom.xml to use in Maven build (Default:
+ pom.xml
+ -g MVN_GOALS, --mvn-goals MVN_GOALS
+ Maven Goals
+ -o MVN_OPTS, --mvn-opts MVN_OPTS
+ Maven Options
+ -a ARCHIVE_ARTIFACTS, --archive-artifacts ARCHIVE_ARTIFACTS
+ Comma-seperated list of patterns of artifacts to
+ archive on build completion. See:
+ http://ant.apache.org/manual/Types/fileset.html
+
+ If all your project requires is the basic verify, merge, and daily jobs then
+ using the job template should be all you need to configure for your jobs.
+
+ ### Auto-Update Job Templates
+
+ The first line of the job YAML file produced by the [init script][24] will
+ contain the words `# REMOVE THIS LINE IF...`. Leaving this line will allow the
+ RelEng/Builder [auto-update script][25] to maintain this file for your project,
+ should the base templates ever change. It is a good idea to leave this line if
+ you do not plan to create any complex jobs outside of the provided template.
+
+ However, if your project needs more control over your jobs or if you have any
+ additional configuration outside of the standard configuration provided by the
+ template, then this line should be removed.
+
+ #### Tuning Templates
+
+ Allowing the auto-updated to manage your templates doesn't prevent you from
+ doing some configuration changes. Parameters can be passed to templates via
+ a `<project>.cfg` in your `builder/jjb/<project>` directory. An example is
+ provided below, others can be found in the repos of other projects. Tune as
+ necessary. Unnecessary paramaters can be removed or commented out with a "#"
+ sign.
JOB_TEMPLATES: verify,merge,sonar
STREAMS: