Fix github-maven-merge scm config
[releng/global-jjb.git] / jjb / lf-macros.yaml
index 3db4c2b..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:
@@ -45,7 +63,9 @@
       - 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
 - 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}'
             - 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:
           # 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:
     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
 # 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
             - '**/*.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 #
 #######
 ############
 
 - 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}'