Add VPP 24.06 branch
[ci-management.git] / jjb / global-macros.yaml
index f4b009a..2de57c7 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2020 Cisco and/or its affiliates.
+# Copyright (c) 2021 Cisco and/or its affiliates.
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at:
           default: '{arch}'
           description: "Architecture parameter"
 
-- parameter:
-    name: archive-artifacts-parameter
-    parameters:
-      - string:
-          name: ARCHIVE_ARTIFACTS
-          default: '{artifacts}'
-          description: "Artifacts to archive on the log server."
-
 - parameter:
     name: compiler-parameter
     parameters:
           default: '{make-parallel-jobs}'
           description: "The number of cores to use for builds."
 
+- parameter:
+    name: make-test-os-parameter
+    parameters:
+      - string:
+          name: MAKE_TEST_OS
+          default: '{make-test-os}'
+          description: "The OS on which 'make test' is run."
+
+- parameter:
+    name: make-test-multiworker-os-parameter
+    parameters:
+      - string:
+          name: MAKE_TEST_MULTIWORKER_OS
+          default: '{make-test-multiworker-os}'
+          description: "The OS on which 'make test' is run with multiple VPP workers."
+
 - parameter:
     name: csit-fail-on-crc-mismatch-parameter
     parameters:
           # yamllint disable-line rule:line-length
           description: "JJB configured PROJECT parameter to identify a Gerrit project"
 
-- parameter:
-    name: repo-name-parameter
-    parameters:
-      - string:
-          name: REPO_NAME
-          default: '{repo-name}'
-          description: 'Name of repo to which to publish packaging'
-
 - parameter:
     name: stream-parameter
     parameters:
           name: TOPO
           default: '{topo}'
           description: "Topology parameter"
-
-- parameter:
-    name: workspace-archive-artifacts-parameter
-    parameters:
-      - string:
-          name: WS_ARCHIVE_ARTIFACTS
-          default: '{artifacts}'
-          description: "Artifacts to archive in $WORKSPACE/archives."
 # [end] Keep 'parameter' entries ordered alphabetically, please.
 
 #### SCMS
 
 #### TRIGGERS
 # Keep 'trigger' entries ordered alphabetically, please.
+- trigger:
+    name: gerrit-trigger-build
+    # Comes from hicn, some verify jobs wait for build to pass.
+    triggers:
+      - gerrit:
+          server-name: 'Primary'
+          trigger-on:
+            - comment-added-contains-event:
+                comment-contains-value: 'build_success-{stream}-{os}-{executor-arch}'
+          projects:
+            - project-compare-type: 'ANT'
+              project-pattern: '{name}'
+              branches:
+                - branch-compare-type: 'ANT'
+                  branch-pattern: '**/{branch}'
+
 - trigger:
     name: gerrit-trigger-checkstyle
     # Comes from VPP, some verify jobs wait for checkstyle to pass.
             unstable: '{skip-vote}'
             notbuilt: '{skip-vote}'
 
+- trigger:
+    name: gerrit-trigger-csit-terraform
+    # Manual trigger common for csit-terraform jobs.
+    triggers:
+      - gerrit:
+          server-name: 'Primary'
+          trigger-on:
+            - comment-added-contains-event:
+                comment-contains-value: '{trigger-word}'
+          projects:
+            - project-compare-type: 'ANT'
+              project-pattern: '{project}'
+              branches:
+                - branch-compare-type: 'ANT'
+                  branch-pattern: '**/{branch}'
+          skip-vote:
+            successful: '{skip-vote}'
+            failed: '{skip-vote}'
+            unstable: '{skip-vote}'
+            notbuilt: '{skip-vote}'
+
 - trigger:
     name: gerrit-trigger-csit-vpp-devicetest-full
-    # Comes from CSIT, for automatic jobs running "device" tests with VPP builds.
+    # Comes from CSIT, for automatic jobs running device tests with VPP builds.
     # The job acts as an automatic verify job for CSIT contributions.
     triggers:
       - gerrit:
           server-name: 'Primary'
           trigger-on:
-            - patchset-created-event:
-                exclude-drafts: 'true'
-                exclude-trivial-rebase: 'false'
-                exclude-no-code-change: 'false'
-            - draft-published-event
+            # The main way the job is triggered automatically on patch upload.
+            # Gated by tox job, so we do not spend resources on WiP changes.
             - comment-added-contains-event:
-                comment-contains-value: 'recheck'
-            - comment-added-contains-event:
-                comment-contains-value: 'reverify'
+                comment-contains-value: 'tox_success'
+            # Manual trigger to allow testing WiP changes with selected tags.
             - comment-added-contains-event:
                 comment-contains-value: 'csit-devicetest'
+            # A comment with "recheck" restarts tox job, so no condition here.
           projects:
             - project-compare-type: 'ANT'
               project-pattern: '{project}'
           fingerprint: true
           latest-only: true
 
+- publisher:
+    name: csit-trending-failed
+    publishers:
+      - email-ext:
+          # yamllint disable-line rule:line-length
+          recipients: 'tifrank@cisco.com, csit-report+int+616+181919729795594561@lists.fd.io'
+          reply-to: ''
+          content-type: 'text'
+          subject: '{branch}: Failed tests as of $BUILD_TIMESTAMP'
+          # yamllint disable-line rule:line-length
+          body: |
+              Following tests failed in the last trending job runs, listed per testbed type.
+
+              ${{FILE,path="resources/tools/presentation/_build/_static/vpp/trending-failed-tests.txt"}}
+          failure: false
+          success: true
+
+- publisher:
+    name: csit-trending-failed-job
+    publishers:
+      - email-ext:
+          # yamllint disable-line rule:line-length
+          recipients: 'tifrank@cisco.com, csit-report+int+616+181919729795594561@lists.fd.io'
+          reply-to: ''
+          content-type: 'text'
+          subject: '{branch}: The build number $BUILD_NUMBER of the job $JOB_NAME failed'
+          # yamllint disable-line rule:line-length
+          body: |
+              For more information see $BUILD_URL.
+          failure: true
+          success: false
+
+- publisher:
+    name: csit-trending-progressions
+    publishers:
+      - email-ext:
+          # yamllint disable-line rule:line-length
+          recipients: 'tifrank@cisco.com, csit-report+int+616+181919729795594561@lists.fd.io'
+          reply-to: ''
+          content-type: 'text'
+          subject: '{branch}: Progressions as of $BUILD_TIMESTAMP'
+          # yamllint disable-line rule:line-length
+          body: |
+              Following progressions occured in the last trending job runs, listed per testbed type.
+
+              ${{FILE,path="resources/tools/presentation/_build/_static/vpp/trending-progressions.txt"}}
+          failure: false
+          success: true
+
+- publisher:
+    name: csit-trending-regressions
+    publishers:
+      - email-ext:
+          # yamllint disable-line rule:line-length
+          recipients: 'tifrank@cisco.com, csit-report+int+616+181919729795594561@lists.fd.io'
+          reply-to: ''
+          content-type: 'text'
+          subject: '{branch}: Regressions as of $BUILD_TIMESTAMP'
+          # yamllint disable-line rule:line-length
+          body: |
+              Following regressions occured in the last trending job runs, listed per testbed type.
+
+              ${{FILE,path="resources/tools/presentation/_build/_static/vpp/trending-regressions.txt"}}
+          failure: false
+          success: true
+
+- publisher:
+    name: vpp-dpdk-rdma-version-mismatch
+    publishers:
+      - email-ext:
+          # NOTE: noreply@jenkins.fd.io must be a member of vpp-build@lists.fd.io
+          #       for the email to be distributed to the group members.
+          # yamllint disable-line rule:line-length
+          recipients: 'vpp-build@lists.fd.io'
+          reply-to: ''
+          content-type: 'text'
+          subject: '{branch}: vpp-dpdk-rdma-version-mismatch job failed!'
+          # yamllint disable-line rule:line-length
+          body: |
+              Build $BUILD_NUMBER of $JOB_NAME failed.
+              Check $BUILD_URL
+              console log to see if the job failed due to a package version mismatch or
+              a CI infra issue. If the failure was due to a CI infra issue, then
+              there is nothing else to be done.
+
+              However, if there was a package version mismatch, then the MLX driver
+              is NOT being built in the VPP DPDK library. Please push a gerrit change
+              with the updated package version(s) in the version matrix file, resolve
+              any build issues, and merge the change to re-enable the building of the
+              MLX DPDK driver in the VPP DPDK library.
+
+              Thanks,
+              The VPP Build Maintainers
+
+          failure: true
+          success: false
+
 - publisher:
     name: email-notification
     publishers:
             - recipients
 
 - publisher:
-    name: fdio-infra-publish
-    # macro to finish up a build.
+    name: fdio-infra-publish-docs
+    # macro to finish up a docs build.
     #
     # Handles the following:
-    #   - Shipping logs to Nexus or S3 logs repository
+    #   - Mapping docs S3 bucket credentials for merge job docs upload
     #   - Cleanup workspace
     publishers:
       - postbuildscript:
                 - SUCCESS
                 - UNSTABLE
               build-steps:
-                - shell: !include-raw: scripts/post_build_deploy_archives.sh
-                - fdio-infra-ship-logs
+                - fdio-infra-ship-docs
+          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
+
+- publisher:
+    name: fdio-infra-publish-cov-7day
+    # macro to finish up a verify docs build.
+    #
+    # Handles the following:
+    #   - Mapping 7-day retention S3 bucket credentials for verify job docs upload
+    #   - Cleanup workspace
+    publishers:
+      - postbuildscript:
+          builders:
+            - role: BOTH
+              build-on:
+                - ABORTED
+                - FAILURE
+                - NOT_BUILT
+                - SUCCESS
+                - UNSTABLE
+              build-steps:
+                - fdio-infra-ship-cov-7day
           mark-unstable-if-failed: true
       - workspace-cleanup:
           exclude:
           fail-build: false
 
 - publisher:
-    name: fdio-infra-shiplogs
-    # To archive things, the job will need to create an "archives" directory in
-    # the workspace and this macro will handle copying the contents of the
-    # archives directory.
+    name: fdio-infra-publish-docs-7day
+    # macro to finish up a verify docs build.
     #
-    # Uses the build parameter ARCHIVE_ARTIFACTS if not empty to find files to
-    # archive. You can pass globstar patterns for example "**/*.xml **/*.log" as
-    # the archive pattern. This is a space separated list of files to archive.
+    # Handles the following:
+    #   - Mapping 7-day retention S3 bucket credentials for verify job docs upload
+    #   - Cleanup workspace
+    publishers:
+      - postbuildscript:
+          builders:
+            - role: BOTH
+              build-on:
+                - ABORTED
+                - FAILURE
+                - NOT_BUILT
+                - SUCCESS
+                - UNSTABLE
+              build-steps:
+                - fdio-infra-ship-docs-7day
+          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
+
+- publisher:
+    name: fdio-infra-publish
+    # macro to finish up a build.
     #
-    # Also ensure that the workspace is cleaned up at the end of the build.
+    # Handles the following:
+    #   - Shipping logs to S3 logs repository
+    #   - Cleanup workspace
     publishers:
       - postbuildscript:
           builders:
                 - SUCCESS
                 - UNSTABLE
               build-steps:
-                - shell: !include-raw: include-raw-deploy-archives.sh
-                - maven-target:
-                    maven-version: '{maven-version}'
-                    pom: '.archives/deploy-archives.xml'
-                    goals: 'clean deploy -V -B -q -Dmaven.repo.local=/tmp/r'
-                    settings: 'jenkins-log-archives-settings'
-                    settings-type: cfp
-                    global-settings: 'global-settings'
-                    global-settings-type: cfp
-                - description-setter:
-                    regexp: '^Build logs: .*'
+                - shell: !include-raw-escape: scripts/post_build_executor_info.sh
+                - shell: !include-raw-escape: scripts/post_build_deploy_archives.sh
+                - fdio-infra-ship-logs
           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
 
 - publisher:
       - robot:
           output-path: '{output-path}'
           other-files: ''
+
 # [end] Keep 'publisher' entries ordered alphabetically, please.
 
 #### BUILDERS
       - shell: |
           $WORKSPACE/scripts/check-unicode.sh jjb/
 
-- property:
-    name: fdio-infra-properties
-    properties:
-      - build-discarder:
-          days-to-keep: '{build-days-to-keep}'
-          num-to-keep: '{build-num-to-keep}'
+- builder:
+    name: fdio-infra-ship-docs
+    builders:
+      - config-file-provider:
+          files:
+            - file-id: "jenkins-s3-docs-ship"
+              target: $HOME/.aws/credentials
+      - shell: !include-raw-escape:
+          - scripts/terraform_s3_docs_ship.sh
+      - shell: !include-raw-escape:
+          - scripts/publish_docs.sh
+      - shell: !include-raw:
+          - ../global-jjb/shell/logs-clear-credentials.sh
+
+- builder:
+    name: fdio-infra-ship-cov-7day
+    builders:
+      - config-file-provider:
+          files:
+            - file-id: "jenkins-s3-vpp-docs-ship"
+              target: $HOME/.aws/credentials
+      - shell: !include-raw-escape:
+          - scripts/terraform_s3_docs_ship.sh
+      - shell: !include-raw-escape:
+          - scripts/publish_cov.sh
+      - shell: !include-raw:
+          - ../global-jjb/shell/logs-clear-credentials.sh
+
+- builder:
+    name: fdio-infra-ship-docs-7day
+    builders:
+      - config-file-provider:
+          files:
+            - file-id: "jenkins-s3-vpp-docs-ship"
+              target: $HOME/.aws/credentials
+      - shell: !include-raw-escape:
+          - scripts/terraform_s3_docs_ship.sh
+      - shell: !include-raw-escape:
+          - scripts/publish_docs.sh
+      - shell: !include-raw:
+          - ../global-jjb/shell/logs-clear-credentials.sh
 
 - builder:
     name: fdio-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"
-              variable: "SETTINGS_FILE"
-      - conditional-step:
-          condition-kind: regex-match
-          regex: "^.*logs-s3.*"
-          label: $S3_BUCKET
-          on-evaluation-failure: dont-run
-          steps:
-            - config-file-provider:
-                files:
-                  - file-id: "jenkins-s3-log-ship"
-                    target: $HOME/.aws/credentials
-      - lf-infra-create-netrc:
-          server-id: logs
+            - file-id: "jenkins-s3-log-ship"
+              target: $HOME/.aws/credentials
+      - shell: !include-raw-escape:
+          - scripts/publish_library_py.sh
       - shell: !include-raw:
-          - ../global-jjb/shell/logs-deploy.sh
+          - scripts/publish_logs.sh
       - shell: !include-raw:
           - ../global-jjb/shell/logs-clear-credentials.sh
       - description-setter:
-          regexp: "(^(Nexus|S3) build logs: .*)"
+          regexp: "(^S3 build logs: .*)"
 
 - builder:
     name: packer-validate