Pass multiple pattern args in logs-deploy.sh
[releng/global-jjb.git] / jjb / lf-macros.yaml
index 3f14dd7..e393393 100644 (file)
@@ -3,6 +3,14 @@
 # BUILDERS #
 ############
 
+# To take advantage of this macro, have your build write
+# out the file 'gerrit_comment.txt' with information to post
+# back to gerrit and include this macro in the list of builders.
+- builder:
+    name: comment-to-gerrit
+    builders:
+      - shell: !include-raw: ../shell/comment-to-gerrit.sh
+
 - builder:
     name: lf-fetch-dependent-patches
     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:
+      # Ensure no pre-existing .netrc files are overriding logs config
+      - lf-provide-maven-settings-cleanup
       - config-file-provider:
           files:
             - file-id: 'jenkins-log-archives-settings'
       - 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: !include-raw:
           - ../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}'
 - builder:
     name: lf-infra-packer-validate
     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}'
-              variable: 'CLOUDENV'
+              variable: CLOUDENV
       - inject:
           properties-content: |
               PACKER_VERSION={packer-version}
               GROUP_ID={group-id}
               UPLOAD_FILES_PATH={upload-files-dir}
       - shell: !include-raw-escape:
-          - ../shell/lftools-install.sh
           - ../shell/common-variables.sh
           - ../shell/deploy-maven-file.sh
       - lf-provide-maven-settings-cleanup
 
+- builder:
+    name: lf-maven-central
+    builders:
+      - conditional-step:
+          condition-kind: boolean-expression
+          condition-expression: '{mvn-central}'
+          steps:
+            - lf-provide-maven-settings:
+                global-settings-file: '{mvn-global-settings}'
+                settings-file: '{mvn-settings}'
+            - lf-infra-create-netrc:
+                server-id: 'ossrh'
+            - inject:
+                properties-content: 'OSSRH_PROFILE_ID={ossrh-profile-id}'
+            - shell: !include-raw-escape: ../shell/maven-central.sh
+            - lf-provide-maven-settings-cleanup
+
 - builder:
     name: lf-maven-install
     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:
           # 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: check-info-votes
+    builders:
+      - inject:
+          properties-content: JENKINS_SSH_CREDENTIAL={jenkins-ssh-credential}
+      - shell: !include-raw-escape: ../shell/check-info-votes.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
     builders:
-      - shell: !include-raw-escape: ../shell/sigul-install.sh
+      - 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}
+                    SIGN_MODE={sign-mode}
+            - shell: !include-raw-escape:
+                - ../shell/sigul-sign-dir.sh
+            - shell: !include-raw-escape: ../shell/sigul-configuration-cleanup.sh
 
 - builder:
     name: lf-infra-provide-docker-cleanup
           # 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
 
               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}'
-          description: |
-              Version of lftools to install. Can be a specific version like
-              '0.6.0' or a PEP-440 definition.
-              https://www.python.org/dev/peps/pep-0440/
-              For example '<1.0.0' or '>=1.0.0,<2.0.0'.
 
 - parameter:
     name: lf-infra-node-parameters
             - '**/*.jenkins-trigger'
           fail-build: false
 
+- publisher:
+    name: lf-infra-publish-windows
+    # lf-infra macro to finish up a build.
+    #
+    # Handles the following:
+    #   - Shipping logs to Nexus logs site repository
+    #   - Cleanup workspace
+    publishers:
+      # TODO: RELENG-1228 Develop log shipping script for Windows systems
+      # - postbuildscript:
+      #     builders:
+      #       - role: BOTH
+      #         build-on:
+      #           - ABORTED
+      #           - FAILURE
+      #           - NOT_BUILT
+      #           - SUCCESS
+      #           - UNSTABLE
+      #         build-steps:
+      #           - lf-infra-ship-logs-windows
+      #     mark-unstable-if-failed: true
+      - workspace-cleanup:
+          exclude:
+            # Do not clean up *.jenkins-trigger files for jobs that use a
+            # properties file as input for triggering another build.
+            - '**/*.jenkins-trigger'
+          fail-build: false
+
 #######
 # SCM #
 #######
           wipe-workspace: true
           submodule:
             recursive: '{submodule-recursive}'
+            timeout: '{submodule-timeout}'
           choosing-strategy: '{choosing-strategy}'
 
 - scm:
           wipe-workspace: true
           submodule:
             recursive: '{submodule-recursive}'
+            timeout: '{submodule-timeout}'
           choosing-strategy: '{choosing-strategy}'
 
 ############
 ############
 
 - 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}'