X-Git-Url: https://gerrit.linuxfoundation.org/infra/gitweb?a=blobdiff_plain;f=docs%2Fjjb%2Flf-ci-jobs.rst;h=1ec548515022e8b74c748dbc3cbab4770c8d0600;hb=eccb60c2014c1dfed187ad0d783a57664fac3086;hp=9e0941ccfde0af3a07f383b8a6f320078cc859c6;hpb=ff9379ceded83ed982012970d1de2f4a7f0889f4;p=releng%2Fglobal-jjb.git diff --git a/docs/jjb/lf-ci-jobs.rst b/docs/jjb/lf-ci-jobs.rst index 9e0941cc..1ec54851 100644 --- a/docs/jjb/lf-ci-jobs.rst +++ b/docs/jjb/lf-ci-jobs.rst @@ -64,13 +64,6 @@ lf-infra-jjbini Provides jenkins_jobs.ini configuration for Jenkins. -lf-infra-jjbini-sandbox ------------------------ - -Provides jenkins_jobs.ini configuration for Jenkins sandbox. - -.. todo:: This needs to be consolidated into lf-infra-jjbini when JJB 2.0 is available - lf-packer-common ---------------- @@ -96,6 +89,16 @@ 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 ============= @@ -104,10 +107,13 @@ Job Templates Gerrit Branch Lock ------------------ -Job submits a patch to lock or unlock a project's branch. +Job submits a patch to lock or unlock a project's branch. This should only be +loaded once, as "ci-management-gerrit-branch-lock" (or "ci-management" +equivalent). That job will process lock/unlock requests for all projects and +all branches. :Template Names: - - {project-name}-gerrit-branch-lock-{stream} + - {project-name}-gerrit-branch-lock - gerrit-branch-lock :Comment Trigger: @@ -123,10 +129,7 @@ Job submits a patch to lock or unlock a project's branch. :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. @@ -240,11 +243,12 @@ configuration in the format ``KEY=value``. In the case of template definitions of a parameter below is not passed the one defined in default clouds will be inherited. - :IMAGE_NAME: The image name to use for this template. - (required) + :IMAGE_NAME: The image name to use for this template. (required) :HARDWARE_ID: OpenStack flavor to use. (required) :LABELS: Labels to assign to the vm. (default: FILE_NAME) + :VOLUME_SIZE: Volume size to assign to vm. (default: "") + :HARDWARE_ID: Hardware Id to assign to vm. (default: "") :NETWORK_ID: OpenStack network to use. (default: "") :USER_DATA_ID: User Data to pass into the instance. (default: jenkins-init-script) @@ -261,16 +265,18 @@ configuration in the format ``KEY=value``. :START_TIMEOUT: Number of milliseconds to wait for the agent to be provisioned and connected. (default: 600000) :KEY_PAIR_NAME: SSH Public Key Pair to use for authentication. - (default: jenkins) + (default: jenkins-ssh) :NUM_EXECUTORS: Number of executors to enable for the instance. (default: 1) - :JVM_OPTIONS: JVM Options to pass to Java. (default: "") + :JVM_OPTIONS: JVM Options to pass to Java. (default: null) :FS_ROOT: File system root for the workspace. (default: "/w") + :NODE_PROPERTIES: Node properties. (default: null) :RETENTION_TIME: Number of minutes to wait for an idle slave to be used again before it's removed. If set to -1, the slave will be kept forever. (default: 0) :CONNECTION_TYPE: The connection type for Jenkins to connect to the build minion. Valid options: JNLP, SSH. (default: "SSH") + :CONFIG_TYPE: Configuration drive. (default: null) For a live example see the OpenDaylight project jenkins-config directory. https://github.com/opendaylight/releng-builder/tree/master/jenkins-config @@ -359,6 +365,18 @@ This job checks out the current code review patch and then runs a .. note:: + The JJB Deploy Job is configured to trigger only if the Gerrit comment + starts with the `jjb-deploy` keyword. + + Example of a valid command in Gerrit comment that triggers the job: + + ``jjb-deploy builder-jjb-*`` + + Example of a invalid command in Gerrit comment that would _not_ trigger + the job: + + ``Update the job. jjb-deploy builder-jjb-*`` + JOB_NAME can include the * wildcard character to push multiple jobs matching the pattern. For example ``jjb-deploy builder-jjb-*`` will push all builder-jjb-* jobs to the sandbox system. @@ -402,6 +420,8 @@ Runs `jenkins-jobs update` to update production job configuration :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-workers: Number of threads to run **update** with. Set to 0 by default + which is equivalent to the number of available CPU cores. (default: 0) :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) @@ -409,6 +429,8 @@ Runs `jenkins-jobs update` to update production job configuration (default: true) :submodule-timeout: Timeout (in minutes) for checkout operation. (default: 10) + :submodule-disable: Disable submodule checkout operation. + (default: false) :gerrit_merge_triggers: Override Gerrit Triggers. :gerrit_trigger_file_paths: Override file paths which can be used to @@ -421,7 +443,8 @@ Runs `jenkins-jobs update` to update production job configuration JJB Verify ---------- -Runs `jenkins-jobs test` to validate JJB syntax +Runs `jenkins-jobs test` to validate JJB syntax. Optionally validates +build-node labels used in templates and job definitions. :Template Names: - {project-name}-jjb-verify @@ -439,7 +462,13 @@ 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-node-label-check: Whether to check build-node labels in jobs + against node names in cloud config files (default: false) + :build-node-label-list: Space-separated list of external build-node + labels not present in cloud config files (default: "") :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) @@ -450,6 +479,17 @@ Runs `jenkins-jobs test` to validate JJB syntax (default: true) :submodule-timeout: Timeout (in minutes) for checkout operation. (default: 10) + :submodule-disable: Disable submodule checkout operation. + (default: false) + :throttle_categories: List of categories to throttle by. + :throttle-enabled: Whether or not to enable throttling on the job. + (default: true) + :throttle-max-per-node: Max jobs to run on the same node. (default: 1) + :throttle-max-total: Max jobs to run across the entire project. - 0 + means 'unlimited' (default: 0) + :throttle-option: Throttle by the project or by list of categories + defined in the throttle plugin configuration. (options: 'project', + 'category'; default: project) :gerrit_verify_triggers: Override Gerrit Triggers. :gerrit_trigger_file_paths: Override file paths which can be used to @@ -495,7 +535,7 @@ Info YAML Verify Info YAML Verify job validates that INFO.yaml file changes are kept isolated from other file changes. Verifies INFO.yaml files follow the schema defined in -`global-jjb/info-schema`. +`lfit/releng-global-jjb/schema/info-schema.yaml`. :Template Names: - {project-name}-info-yaml-verify @@ -520,6 +560,8 @@ other file changes. Verifies INFO.yaml files follow the schema defined in (default: true) :submodule-timeout: Timeout (in minutes) for checkout operation. (default: 10) + :submodule-disable: Disable submodule checkout operation. + (default: false) :gerrit_verify_triggers: Override Gerrit Triggers. @@ -603,6 +645,8 @@ containing the credentials for the cloud. (default: true) :submodule-timeout: Timeout (in minutes) for checkout operation. (default: 10) + :submodule-disable: Disable submodule checkout operation. + (default: false) Minimal Example: @@ -612,6 +656,71 @@ Full Example: .. literalinclude:: ../../.jjb-test/lf-ci-jobs/openstack-cron-full.yaml +.. _gjjb-openstack-update-cloud-image: + +OpenStack Update Cloud Image +---------------------------- + +This job finds and updates OpenStack cloud images on the ci-management source +repository. + +The job is triggered in two ways: + +1. When packer merge job completes, the new image name created is passed + down to the job. +2. When the job is triggered manually to update all new images. + +When the job is triggered through an upstream packer merge job, this only +generates a change request for the new image built. + +When the job is triggered manually, this job finds the latest images on +OpenStack cloud and compares them with the images currently used in the source +ci-management source repository. If the compared images have newer +time stamps are **all** updated through a change request. + +This job requires a Jenkins configuration merge and verify job setup and +working on Jenkins. + +:Template Names: + - {project-name}-openstack-update-cloud-image + - gerrit-openstack-update-cloud-image + - github-openstack-update-cloud-image + +: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) + :new-image-name: Name of new image name passed from packer merge job or + set to 'all' to update all images. (default: all) + +: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) + :git-url: URL clone project from. (default: $GIT_URL/$PROJECT) + :openstack-cloud: OS_CLOUD setting to pass to openstack client. + (default: vex) + :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. + (default: true) + :submodule-timeout: Timeout (in minutes) for checkout operation. + (default: 10) + :submodule-disable: Disable submodule checkout operation. + (default: false) + :update-cloud-image: Submit a change request to update new built cloud + image to Jenkins. (default: false) + +Minimal Example: + +.. literalinclude:: ../../.jjb-test/lf-ci-jobs/openstack-update-cloud-image-minimal.yaml + +Full Example: + +.. literalinclude:: ../../.jjb-test/lf-ci-jobs/openstack-update-cloud-image-full.yaml + .. _gjjb-packer-merge: @@ -635,9 +744,9 @@ Packer Merge job runs `packer build` to build system images in the cloud. :mvn-settings: The name of settings file containing credentials for the project. :platforms: Platform or distribution to build. Typically json file - found in the packer/vars directory. (Example: centos) - :template: System template to build. Typically shell script found in - the packer/provision directory. (Example: java-builder) + found in the packer/vars directory. (Example: centos-7) + :templates: System template to build. Typically a yaml file or shell script + found in the packer/provision directory. (Example: docker) :Optional parameters: @@ -645,6 +754,7 @@ Packer Merge job runs `packer build` to build system images in the cloud. :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) + :gerrit_verify_triggers: Override Gerrit Triggers. :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. @@ -658,8 +768,25 @@ Packer Merge job runs `packer build` to build system images in the cloud. (default: true) :submodule-timeout: Timeout (in minutes) for checkout operation. (default: 10) + :submodule-disable: Disable submodule checkout operation. + (default: false) + :update-cloud-image: Submit a change request to update newly built cloud + image to Jenkins. (default: false) - :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 `. 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: @@ -667,7 +794,9 @@ Packer Merge job runs `packer build` to build system images in the cloud. Packer Verify ------------- -Packer Verify job runs `packer validate` to verify packer configuration. +Packer Verify job runs `packer validate` to verify packer configuration. The +verify job checks superficial syntax of the template and other files. It does +not attempt to build an image, and cannot detect all possible build issues. :Template Names: - {project-name}-packer-verify @@ -689,6 +818,9 @@ Packer Verify job runs `packer validate` to verify packer configuration. :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: 10) + :gerrit_trigger_file_paths: Override file paths which can be used to + filter which file modifications will trigger a build. + :gerrit_verify_triggers: Override Gerrit Triggers. :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. @@ -702,7 +834,207 @@ Packer Verify job runs `packer validate` to verify packer configuration. (default: true) :submodule-timeout: Timeout (in minutes) for checkout operation. (default: 10) + :submodule-disable: Disable submodule checkout operation. + (default: false) - :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. + +.. _gjjb-packer-verify-build: + +Packer Verify Build +------------------- + +Packer Verify Build job is essentially the same as the +:ref:`Packer Merge job`. It is triggered only by its keyword, +and will build a useable image. If the last patch set before a merge has a +successful verify build, the merge job will not build the same image. + +:Template Names: + - {project-name}-packer-verify-build-{platforms}-{templates} + - gerrit-packer-verify-build + - github-packer-verify-build + +:Comment Trigger: verify-build|packer-build + +: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) + :mvn-settings: The name of settings file containing credentials for + the project. + :platforms: Platform or distribution to build. Typically json file + found in the packer/vars directory. (Example: centos-7) + :templates: System template to build. Typically a yaml file or shell script + found in the packer/provision directory. (Example: docker) + +: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: 10) + :gerrit_trigger_file_paths: Override file paths which can be used to + filter which file modifications will trigger a build. + :gerrit_verify_triggers: Override Gerrit Triggers. + :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) + :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. + (default: true) + :submodule-timeout: Timeout (in minutes) for checkout operation. + (default: 10) + :submodule-disable: Disable submodule checkout operation. + (default: false) + :update-cloud-image: Submit a change request to update new built cloud + image to Jenkins. (default: false) + + +Puppet Verify +------------- + +Runs puppet-lint in the ``puppet-dir`` directory. puppet-lint runs recursively, +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) + :submodule-disable: Disable submodule checkout operation. + (default: false) + + +Sonar +----- + +Runs the Jenkins SonarQube Scanner plug-in to analyze code for bugs, +code smells and security vulnerabilities, and to upload the result +(possibly including code-coverage statistics) to a SonarQube server +or to SonarCloud.io. + +Requires ``SonarQube Scanner for Jenkins`` + +One of the optional parameters sonar-project-file and sonar-properties +must be supplied; they cannot both be empty. + +Plug-in configurations + Manage Jenkins --> Configure System --> SonarQube servers + - Name: Sonar (fixed) + - Server URL: https://sonar.server.org/ or https://sonarcloud.io + - Server authentication token: none for local, API token (saved as a + "secret text" credential) for Sonarcloud + + Manage Jenkins --> Global Tool Configuration --> SonarQube Scanner + - Name: SonarQube Scanner (fixed) + - Install automatically + - Select latest version + +.. note:: Sonar properties can be set directly in the job definition by + setting the sonar-project-file to ``""`` and adding all properties under + ``sonar-properties``. + +:Template Names: + + - {project-name}-sonar + - gerrit-sonar + - github-sonar + +:Optional Parameters: + :sonar-task: Sonar task to run. (default: "") + :sonar-project-file: The filename for the project's properties + (default: "sonar-project.properties") + :sonar-properties: Sonar configuration properties. (default: "") + :sonar-java-opts: JVM options. (default: "") + :sonar-additional-args: Additional command line arguments. (default: "") + + +Sonar with Prescan +------------------ + +The same as the Sonar job above, except the caller also defines a builder +called ``lf-sonar-prescan``, in which they can put any builders that they want +to run prior to the Sonar scan. + +.. code-block:: yaml + + - builder: + name: lf-sonar-prescan + builders: + - shell: "# Pre-scan shell script" + +:Template Names: + + - {project-name}-sonar-prescan + - gerrit-sonar-prescan + - github-sonar-prescan + +:Required Parameters: + :lf-sonar-prescan: A builder that will run prior to the Sonar scan. + +:Optional Parameters: + :sonar-task: Sonar task to run. (default: "") + :sonar-project-file: The filename for the project's properties + (default: "sonar-project.properties") + :sonar-properties: Sonar configuration properties. (default: "") + :sonar-java-opts: JVM options. (default: "") + :sonar-additional-args: Additional command line arguments. (default: "") + + +Sonar with Prescan Script +------------------------- + +The same as the Sonar job above, except the caller must supply a shell script +to run prior to the Sonar scan. This is commonly used to install prerequisites, +build the project, execute unit tests and generate a code-coverage report. + +:Template Names: + + - {project-name}-sonar-prescan-script + - gerrit-sonar-prescan-script + - github-sonar-prescan-script + +:Required Parameters: + :sonar-prescan-script: A shell script that will run prior to the Sonar scan. + +:Optional Parameters: + :sonar-task: Sonar task to run. (default: "") + :sonar-project-file: The filename for the project's properties. + (default: "sonar-project.properties") + :sonar-properties: Sonar configuration properties. (default: "") + :sonar-java-opts: JVM options. (default: "") + :sonar-additional-args: Additional command line arguments. (default: "")