Fix github-maven-merge scm config
[releng/global-jjb.git] / jjb / lf-macros.yaml
index 133becd..ac577c8 100644 (file)
       - inject:
           properties-file: $WORKSPACE/.dependency.properties
 
+- builder:
+    name: lf-license-check
+    builders:
+      - inject:
+          properties-content: |
+              FILE_PATTERNS={file-patterns}
+              SPDX_DISABLE={spdx-disable}
+              LHC_VERSION={lhc-version}
+              LICENSE_EXCLUDE_PATHS={license-exclude-paths}
+              LICENSES_ALLOWED={licenses-allowed}
+      - shell: !include-raw-escape:
+          - ../shell/license-check.sh
+
 - builder:
     name: lf-infra-create-netrc
     builders:
     builders:
       - shell: !include-raw: ../shell/gpg-verify-git-signature.sh
 
+- builder:
+    name: lf-infra-pre-build
+    builders:
+      - shell: !include-raw-escape: ../shell/python-tools-install.sh
+
 - builder:
     name: lf-infra-ship-logs
     builders:
       - lf-infra-create-netrc:
           server-id: logs
       - shell: !include-raw:
-          - ../shell/lftools-install.sh
+          # Ensure python-tools are installed in case job template does not
+          # call the lf-infra-pre-build macro.
+          - ../shell/python-tools-install.sh
           - ../shell/logs-deploy.sh
       - shell: !include-raw:
           - ../shell/logs-clear-credentials.sh
       - description-setter:
           regexp: '^Build logs: .*'
 
+- builder:
+    name: lf-infra-package-listing
+    builders:
+      - shell: !include-raw:
+          - ../shell/package-listing.sh
+
 - builder:
     name: lf-infra-packer-build
     builders:
+      - conditional-step:
+          condition-kind: boolean-expression
+          condition-expression: '{openstack}'
+          steps:
+            - config-file-provider:
+                files:
+                  - file-id: clouds-yaml
+                    target: '$HOME/.config/openstack/clouds.yaml'
+            - inject:
+                properties-content: OS_CLOUD={openstack-cloud}
       - config-file-provider:
           files:
             - file-id: '{packer-cloud-settings}'
       - shell: !include-raw:
           - ../shell/packer-clear-credentials.sh
 
+- builder:
+    name: lf-infra-push-gerrit-patch
+    builders:
+      - inject:
+          properties-content: |
+              PROJECT={project}
+              GERRIT_COMMIT_MESSAGE={gerrit-commit-message}
+              GERRIT_HOST={gerrit-host}
+              GERRIT_TOPIC={gerrit-topic}
+              GERRIT_USER={gerrit-user}
+              REVIEWERS_EMAIL={reviewers-email}
+      - shell: !include-raw-escape: ../shell/gerrit-push-patch.sh
+
 - builder:
     name: lf-infra-sysstat
     builders:
             - file-id: '{settings-file}'
               variable: 'SETTINGS_FILE'
 
-- builder:
-    name: lf-provide-sigul-configuration
-    # Push configuration files to interact with sigul
-    builders:
-      - config-file-provider:
-          files:
-            - file-id: sigul-config
-              variable: SIGUL_CONFIG
-            - file-id: sigul-password
-              variable: SIGUL_PASSWORD
-            - file-id: sigul-pki
-              variable: SIGUL_PKI
-      - shell: !include-raw-escape: ../shell/sigul-configuration.sh
-
 - builder:
     name: lf-pip-install
     builders:
           #!/bin/bash
           set +e  # DO NOT cause build failure if any of the rm calls fail.
 
-          rm "$GLOBAL_SETTINGS_FILE" "$SETTINGS_FILE"
+          rm -f "$GLOBAL_SETTINGS_FILE" "$SETTINGS_FILE"
 
           # In some cases we use the lf-provide-maven-settings macro to produce
           # a "$HOME/.netrc" file containing credentials. Remove that file here
           # too if it exists.
-          rm "$HOME/.netrc"
+          rm -f "$HOME/.netrc"
 
           # DO NOT fail build if any of the above lines fail.
           exit 0
 
-- builder:
-    name: lf-provide-sigul-configuration-cleanup
-    # Clear sigul configuration files after we're done using them
-    builders:
-      - shell: !include-raw-escape: ../shell/sigul-configuration-cleanup.sh
-
 - builder:
     name: lf-rtd-trigger-build
     builders:
       - inject:
-          properties-content: RTD_PROJECT={rtd-project}
+          properties-content: |
+            RTD_BUILD_URL={rtd-build-url}
+            RTD_TOKEN={rtd-token}
       - shell: !include-raw-escape: ../shell/rtd-trigger-build.sh
 
 - builder:
     builders:
       - inject:
           properties-content: DOC_DIR={doc-dir}
-      - shell: !include-raw-escape:
-          - ../shell/tox-install.sh
-          - ../shell/rtd-verify.sh
+      - shell: !include-raw-escape: ../shell/tox-install.sh
+      - shell: !include-raw-escape: ../shell/rtd-verify.sh
 
 - builder:
-    name: lf-sigul-install
+    name: lf-sigul-sign-dir
     # Requires that Jenkins be configured with SIGUL_BRIDGE_IP as a global
     # Environment variable
-    builder:
-      - shell: !include-raw-escape: ../shell/sigul-install.sh
+    builders:
+      - conditional-step:
+          condition-kind: boolean-expression
+          condition-expression: '{sign-artifacts}'
+          steps:
+            - config-file-provider:
+                files:
+                  - file-id: sigul-config
+                    variable: SIGUL_CONFIG
+                  - file-id: sigul-password
+                    variable: SIGUL_PASSWORD
+                  - file-id: sigul-pki
+                    variable: SIGUL_PKI
+            - shell: !include-raw-escape: ../shell/sigul-configuration.sh
+            - shell: !include-raw-escape: ../shell/sigul-install.sh
+            - inject:
+                properties-content: SIGN_DIR={sign-dir}
+            - shell: !include-raw-escape:
+                - ../shell/common-variables.sh
+                - ../shell/sigul-sign-dir.sh
+            - shell: !include-raw-escape: ../shell/sigul-configuration-cleanup.sh
+
+- builder:
+    name: lf-infra-provide-docker-cleanup
+    builders:
+      - shell: |
+          #!/bin/bash
+          set +e  # DO NOT cause build failure if docker rmi fails
+          docker rmi -f $(docker images -a -q)
+          exit 0
+
 
 ##############
 # PARAMETERS #
 ##############
 
+- parameter:
+    name: lf-clm-parameters
+    parameters:
+      - string:
+          name: NEXUS_IQ_STAGE
+          default: '{nexus-iq-stage}'
+          description: |
+              Stage the policy evaluation will be run against on the Nexus IQ Server.
+
+- parameter:
+    name: lf-cmake-parameters
+    # Parameters useful in CMake builds.
+    parameters:
+      - string:
+          name: BUILD_DIR
+          default: '{build-dir}'
+          description: 'Directory to build the project in.'
+      - string:
+          name: CMAKE_OPTS
+          default: '{cmake-opts}'
+          description: |
+              Options to pass to CMAKE.
+              Example: -DCMAKE_INSTALL_PREFIX=$WORKSPACE/target/output
+      - string:
+          name: INSTALL_PREFIX
+          default: '{install-prefix}'
+          description: 'Install prefix for C/C++ builds. Example: /usr/local'
+      - string:
+          name: MAKE_OPTS
+          default: '{make-opts}'
+          description: 'Options to pass to make. Example: -j8'
+
 - parameter:
     name: lf-infra-maven-parameters
     parameters:
           # yamllint disable-line rule:line-length
           default: '/w/tools/hudson.tasks.Maven_MavenInstallation/{mvn-version}/bin/mvn'
           description: 'Maven selector to be used by shell scripts'
-      - string:
-          name: STAGING_PROFILE_ID
-          default: '{staging-profile-id}'
-          description: |
-              Nexus staging profile ID.
-
 
 - parameter:
     name: lf-infra-openstack-parameters
           name: PROJECT
           default: '{project}'
           description: |
-              Parameter to identify a Gerrit project. This is typically the
-              project repo path as exists in Gerrit.
-              For example: ofextensions/circuitsw
+              Parameter to identify a SCM project to build. This is typically
+              the project repo path. For example: ofextensions/circuitsw
       - string:
           name: STREAM
           default: '{stream}'
           name: GERRIT_PROJECT
           default: '{project}'
           description: |
-              Parameter to identify Gerrit project. This is typically the
-              project repo path as exists in Gerrit.
-              For example: ofextensions/circuitsw
+              Gerrit Trigger provided parameter to identify Gerrit project that
+              triggered the build. This is typically the project repo path as
+              exists in Gerrit. For example: ofextensions/circuitsw
 
-              Note that Gerrit will override this parameter automatically if a
-              job is triggered by Gerrit.
+              If using Gerrit, in a manual build this should match the PROJECT
+              parameter above.
       - string:
           name: GERRIT_BRANCH
           default: '{branch}'
           description: |
-              Parameter to identify a Gerrit branch.
+              Gerrit Trigger provided parameter to identify a Gerrit branch.
 
-              Note that Gerrit will override this parameter automatically if a
-              job is triggered by Gerrit.
+              If using Gerrit, in a manual build override with the branch to
+              build against.
       - string:
           name: GERRIT_REFSPEC
           default: 'refs/heads/{branch}'
           description: |
-              Parameter to identify a refspec when pulling from Gerrit.
+              Gerrit Trigger provided parameter to identify a refspec to fetch
+              from Gerrit.
+
+              If using Gerrit, in a manual build override with a refspec.
+              https://git-scm.com/book/en/v2/Git-Internals-The-Refspec
+              For example: 'refs/heads/master'
+      - string:
+          name: sha1
+          default: 'origin/{branch}'
+          description: |
+              GitHub PR Trigger provided parameter for specifying the commit
+              to checkout.
 
-              Note that Gerrit will override this parameter automatically if a
-              job is triggered by Gerrit.
+              If using GitHub, in a manual build override with a branch path or
+              sha1 hash to a specific commit. For example: 'origin/master'
+      # Tools
       - string:
           name: LFTOOLS_VERSION
           default: '{lftools-version}'
                 - UNSTABLE
               build-steps:
                 - lf-infra-sysstat
+                - lf-infra-package-listing
                 - lf-infra-ship-logs
           mark-unstable-if-failed: true
       - workspace-cleanup:
             - '**/*.jenkins-trigger'
           fail-build: false
 
+- publisher:
+    name: lf-stack-delete
+    publishers:
+      - postbuildscript:
+          builders:
+            - role: BOTH
+              build-on:
+                - ABORTED
+                - FAILURE
+                - SUCCESS
+                - UNSTABLE
+              build-steps:
+                - shell: |
+                    #!/bin/bash -l
+                    echo "Deleting $STACK_NAME"
+                    lftools openstack stack delete "$STACK_NAME"
+          mark-unstable-if-failed: false
+
 #######
 # SCM #
 #######
             recursive: '{submodule-recursive}'
           choosing-strategy: '{choosing-strategy}'
 
-############
-# TRIGGERS #
-############
-
-- trigger:
-    name: lf-infra-github-pr-trigger
-    triggers:
-      - github-pull-request:
-          trigger-phrase: '{trigger-phrase}'
-          only-trigger-phrase: '{only-trigger-phrase}'
-          status-context: '{status-context}'
-          permit-all: '{permit-all}'
-          github-hooks: '{github-hooks}'
-          auto-close-on-fail: false
-          org-list:
-            - '{github-org}'
-          white-list: '{obj:github_pr_whitelist}'
-          admin-list: '{obj:github_pr_admin_list}'
-
 ############
 # WRAPPERS #
 ############
 
 - wrapper:
-    name: lf-infra-wrappers
+    name: lf-infra-wrappers-common
     wrappers:
       - mask-passwords
       - timeout:
           timeout-var: 'BUILD_TIMEOUT'
           fail: true
       - timestamps
-      - ssh-agent-credentials:
-          users:
-            - '{jenkins-ssh-credential}'
       - openstack:
           single-use: true
+
+- wrapper:
+    name: lf-infra-wrappers
+    wrappers:
+      - lf-infra-wrappers-common:
+          build-timeout: '{build-timeout}'
       - config-file-provider:
           files:
             - file-id: npmrc
               target: '$HOME/.npmrc'
             - file-id: pipconf
               target: '$HOME/.config/pip/pip.conf'
+      - ssh-agent-credentials:
+          users:
+            - '{jenkins-ssh-credential}'
+
+- wrapper:
+    name: lf-infra-wrappers-windows
+    wrappers:
+      - lf-infra-wrappers-common:
+          build-timeout: '{build-timeout}'