Merge "Add puppet-verify job to lf-ci-jobs"
[releng/global-jjb.git] / docs / jjb / lf-ci-jobs.rst
index 4eda20c..8d6ef7d 100644 (file)
@@ -21,6 +21,8 @@ lf-infra-jjb-parameters
 
 :Required Parameters:
 
+    :jjb-cache: Location of Jenkins Job Builder (JJB) cache used for jjb
+        jobs.
     :jjb-version: Version of Jenkins Job Builder (JJB) to install and use in
         the jjb jobs.
 
@@ -94,9 +96,21 @@ lf-packer-verify-file-paths
 
 Gerrit file-paths for packer verify jobs.
 
+lf-puppet-parameters
+--------------------
+
+Parameters useful for Puppet related tasks.
+
+:Parameters:
+
+    :puppet-lint-version: Version of puppet-lint to install / use.
+        (shell: PUPPET_LINT_VERSION)
+
 Job Templates
 =============
 
+.. _gerrit-branch-lock:
+
 Gerrit Branch Lock
 ------------------
 
@@ -106,6 +120,26 @@ Job submits a patch to lock or unlock a project's branch.
     - {project-name}-gerrit-branch-lock-{stream}
     - gerrit-branch-lock
 
+:Comment Trigger:
+
+    * lock branch
+    * unlock branch
+
+:Required parameters:
+
+    :build-node: The node to run build on.
+    :jenkins-ssh-credential: Credential to use for SSH. (Generally
+        should be configured in defaults.yaml)
+
+:Optional parameters:
+
+    :branch: Git branch to build against. (default: master)
+    :git-url: URL to clone project from. (default: $GIT_URL/$GERRIT_PROJECT)
+    :stream: Keyword that can be used to represent a release code-name.
+        Often the same as the branch. (default: master)
+    :submodule-timeout: Timeout (in minutes) for checkout operation.
+        (default: 10)
+    :gerrit_merge_triggers: Override Gerrit Triggers.
 
 .. _lf-global-jjb-jenkins-cfg-merge:
 
@@ -260,6 +294,36 @@ Troubleshooting
     used to push to Jenkins. In the event of a job failure this file can be
     inspected.
 
+ .. _lf-global-jjb-jenkins-cfg-verify:
+
+Jenkins Configuration Verify
+----------------------------
+
+Jenkins job to verify the Global Jenkins configuration.
+
+Requires the ``clouds-yaml`` file to be setup on the Jenkins host.
+
+:Template names:
+
+    - {project-name}-jenkins-cfg-verify
+    - gerrit-jenkins-cfg-verify
+    - github-jenkins-cfg-verify
+
+:Optional parameters:
+
+    :branch: Git branch to build against. (default: master)
+    :git-url: URL to clone project from. (default: $GIT_URL/$GERRIT_PROJECT)
+
+This job is not part of the "{project-name}-ci-jobs" group. It must be called
+explicitly.
+
+Example:
+
+.. literalinclude:: ../../.jjb-test/lf-ci-jobs/jenkins-cfg-verify.yaml
+   :language: yaml
+
+
+.. _jenkins-sandbox-cleanup:
 
 Jenkins Sandbox Cleanup
 -----------------------
@@ -285,13 +349,15 @@ Cleanup Jenkins Sandbox of jobs and views periodically.
     :cron: Schedule to run job. (default: '0 8 * * 6')
 
 
+.. _jjb-deploy:
+
 JJB Deploy Job
 --------------
 
-Deploy jobs to jenkins-sandbox system via code review comment
+Deploy jobs to jenkins-sandbox system via code review comment.
 
 This job checks out the current code review patch and then runs a
-`jenkins-jobs update` to push a patch defined by the comment.
+``jenkins-jobs update`` to push a patch defined by the comment.
 
 :Template names:
 
@@ -304,7 +370,7 @@ This job checks out the current code review patch and then runs a
     .. note::
 
        JOB_NAME can include the * wildcard character to push multiple jobs
-       matching the pattern. For example `jjb-deploy builder-jjb-*`` will push
+       matching the pattern. For example ``jjb-deploy builder-jjb-*`` will push
        all builder-jjb-* jobs to the sandbox system.
 
 :Required parameters:
@@ -319,6 +385,8 @@ This job checks out the current code review patch and then runs a
     :gerrit_jjb_deploy_job_triggers: Override Gerrit Triggers.
 
 
+.. _jjb-merge:
+
 JJB Merge
 ---------
 
@@ -343,6 +411,7 @@ Runs `jenkins-jobs update` to update production job configuration
     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
     :build-timeout: Timeout in minutes before aborting build. (default: 10)
     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
+    :jjb-cache: JJB cache location. (default: $HOME/.cache/jenkins_jobs)
     :jjb-version: JJB version to install. (default: see job-template)
     :stream: Keyword that can be used to represent a release code-name.
         Often the same as the branch. (default: master)
@@ -357,6 +426,8 @@ Runs `jenkins-jobs update` to update production job configuration
         (default defined by lf_jjb_common)
 
 
+.. _jjb-verify:
+
 JJB Verify
 ----------
 
@@ -378,9 +449,12 @@ Runs `jenkins-jobs test` to validate JJB syntax
 :Optional parameters:
 
     :branch: Git branch to fetch for the build. (default: master)
+    :build-concurrent: Whether or not to allow this job to run multiple jobs
+        simultaneously. (default: true)
     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
     :build-timeout: Timeout in minutes before aborting build. (default: 10)
     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
+    :jjb-cache: JJB cache location. (default: $HOME/.cache/jenkins_jobs)
     :jjb-version: JJB version to install. (default: see job-template)
     :stream: Keyword that can be used to represent a release code-name.
         Often the same as the branch. (default: master)
@@ -421,6 +495,7 @@ project level jobs.
     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
     :build-timeout: Timeout in minutes before aborting build. (default: 10)
     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
+    :jjb-cache: JJB cache location. (default: $HOME/.cache/jenkins_jobs)
     :jjb-version: JJB version to install. (default: see job-template)
     :stream: Keyword that can be used to represent a release code-name.
         Often the same as the branch. (default: master)
@@ -511,16 +586,29 @@ containing the credentials for the cloud.
     :build-node: The node to run build on.
     :jenkins-ssh-credential: Credential to use for SSH. (Generally should
         be configured in defaults.yaml)
+    :jenkins-urls: URLs to Jenkins systems to check for active builds.
 
 :Optional parameters:
 
     :branch: Git branch to fetch for the build. (default: master)
     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
     :build-timeout: Timeout in minutes before aborting build. (default: 90)
-    :cron: Time when the packer image should be rebuilt (default: @daily)
+    :cron: Time when the packer image should be rebuilt (default: @hourly)
     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
     :openstack-cloud: OS_CLOUD setting to pass to openstack client.
         (default: vex)
+    :openstack-image-cleanup: Whether or not to run the image cleanup script.
+        (default: true)
+    :openstack-image-cleanup-age: Age in days of image before marking it for
+        removal. (default: 30)
+    :openstack-image-protect: Whether or not to run the image protect script.
+        (default: true)
+    :openstack-server-cleanup: Whether or not to run the server cleanup script.
+        (default: true)
+    :openstack-stack-cleanup: Whether or not to run the stack cleanup script.
+        (default: true)
+    :openstack-volume-cleanup: Whether or not to run the volume cleanup script.
+        (default: true)
     :stream: Keyword that can be used to represent a release code-name.
         Often the same as the branch. (default: master)
     :submodule-recursive: Whether to checkout submodules recursively.
@@ -528,6 +616,15 @@ containing the credentials for the cloud.
     :submodule-timeout: Timeout (in minutes) for checkout operation.
         (default: 10)
 
+Minimal Example:
+
+.. literalinclude:: ../../.jjb-test/lf-ci-jobs/openstack-cron-minimal.yaml
+
+Full Example:
+
+.. literalinclude:: ../../.jjb-test/lf-ci-jobs/openstack-cron-full.yaml
+
+
 .. _gjjb-packer-merge:
 
 Packer Merge
@@ -576,6 +673,19 @@ Packer Merge job runs `packer build` to build system images in the cloud.
 
     :gerrit_verify_triggers: Override Gerrit Triggers.
 
+Test an in-progress patch
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+To test an in-progress patch from a GitHub Pull Request. Upload this
+job to the :doc:`Jenkins Sandbox <lfdocs:jenkins-sandbox>`. Then when manually
+building the job replace the GERRIT_REFSPEC parameter with the GitHub Pull
+Request number of the patch you would like to test.
+
+Example GitHub:
+
+.. code-block:: none
+
+   GERRIT_REFSPEC: origin/pr/49/merge
 
 .. _gjjb-packer-verify:
 
@@ -605,6 +715,9 @@ Packer Verify job runs `packer validate` to verify packer configuration.
     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
     :build-timeout: Timeout in minutes before aborting build. (default: 10)
     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
+    :openstack: Packer template uses an OpenStack builder (default: true).
+    :openstack-cloud: Sets OS_CLOUD variable to the value of this parameter.
+        (default: vex).
     :packer-cloud-settings: Name of settings file containing credentials
         for the cloud that packer will build on. (default: packer-cloud-env)
     :packer-version: Version of packer to install / use in build. (default: 1.0.2)
@@ -618,3 +731,46 @@ Packer Verify job runs `packer validate` to verify packer configuration.
     :gerrit_verify_triggers: Override Gerrit Triggers.
     :gerrit_trigger_file_paths: Override file paths which can be used to
         filter which file modifications will trigger a build.
+
+
+Puppet Verify
+-------------
+
+Runs puppet-lint in the ``puppet-dir`` directory. puppet-lint runs recursively,
+so the base directory is usually the best place to run from.
+
+:Template Names:
+
+    - {project-name}-puppet-verify
+    - gerrit-puppet-verify
+    - github-puppet-verify
+
+:Comment Trigger: recheck|reverify
+
+:Required Parameters:
+
+    :build-node: The node to run build on.
+    :jenkins-ssh-credential: Credential to use for SSH. (Generally set
+        in defaults.yaml)
+
+:Optional Parameters:
+
+    :branch: The branch to build against. (default: master)
+    :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
+    :build-timeout: Timeout in minutes before aborting build. (default: 15)
+    :gerrit_trigger_file_paths: Override file paths which used to filter which
+        file modifications will trigger a build. Refer to JJB documentation for
+        "file-path" details.
+        https://docs.openstack.org/infra/jenkins-job-builder/triggers.html#triggers.gerrit
+    :git-url: URL clone project from. (default: $GIT_URL/$GERRIT_PROJECT)
+    :puppet-dir: Directory containing the project's puppet module(s) relative
+        to the workspace.
+        (default: '')
+    :puppet-lint-version: Version of puppet-lint to use for testing.
+        (default: 2.3.6)
+    :stream: Keyword representing a release code-name.
+        Often the same as the branch. (default: master)
+    :submodule-recursive: Whether to checkout submodules recursively.
+        (default: true)
+    :submodule-timeout: Timeout (in minutes) for checkout operation.
+        (default: 10)