Revert "CI: Rename global-settings to mvn-glob..."
[ci-management.git] / jjb / akraino-templates / akraino-ta-common-macros.yaml
index 1f6bcb3..9ead2c4 100644 (file)
@@ -1,56 +1,36 @@
 ---
+# yamllint disable-file
 ##############
 # PARAMETERS #
 ##############
 - parameter:
-    name: ta-parameters-manifest
+    name: ta-parameters
     parameters:
-     - string:
-        default: refs/heads/master
-        description: ''
-        name: SCM_REFSPEC_MANIFEST
-        trim: 'false'
-
-- parameter:
-    name: ta-parameters-build-tools
-    parameters:
-     - string:
-        default: refs/heads/master
-        description: ''
-        name: SCM_REFSPEC_BUILD_TOOLS
-        trim: 'false'
-
-- parameter:
-    name: ta-parameters-rpmbuilder
-    parameters:
-     - string:
-        default: refs/heads/master
-        description: ''
-        name: SCM_REFSPEC_RPMBUILDER
-        trim: 'false'
-
-- parameter:
-    name: ta-parameters-ci
-    parameters:
-     - ta-parameters-manifest
-     - ta-parameters-build-tools
-     - ta-parameters-rpmbuilder
-
-- parameter:
-    name: ta-parameters-ci-ta/rpmbuilder
-    parameters:
-     - ta-parameters-manifest
-     - ta-parameters-build-tools
-     - string:
-        default: ta/yarf
-        description: ''
-        name: SCM_PROJECT_TO_BUILD
-        trim: 'false'
-     - string:
-        default: refs/heads/master
-        description: ''
-        name: SCM_PROJECT_TO_BUILD_REFSPEC
-        trim: 'false'
+      - string:
+          name: SCM_REFSPEC_MANIFEST
+          default: refs/heads/master
+          description: ""
+          trim: "false"
+      - string:
+          name: SCM_REFSPEC_BUILD_TOOLS
+          default: refs/heads/master
+          description: ""
+          trim: "false"
+      - string:
+          name: SCM_REFSPEC_RPMBUILDER
+          default: refs/heads/master
+          description: ""
+          trim: "false"
+      - string:
+          name: SCM_PROJECT_TO_BUILD
+          default: ta/yarf
+          description: ""
+          trim: "false"
+      - string:
+          name: SCM_PROJECT_TO_BUILD_REFSPEC
+          default: refs/heads/master
+          description: ""
+          trim: "false"
 
 #######
 # SCM #
     name: ta-lf-infra-gerrit-scm
     scm:
       - git:
-          credentials-id: '{jenkins-ssh-credential}'
-          url: '{git-url}'
-          refspec: '{refspec}'
+          credentials-id: "{jenkins-ssh-credential}"
+          url: "{git-url}"
+          refspec: "{refspec}"
           branches:
-            - 'refs/heads/{branch}'
+            - "refs/heads/{branch}"
           skip-tag: true
           wipe-workspace: true
           submodule:
-            recursive: '{submodule-recursive}'
-            timeout: '{submodule-timeout}'
-          choosing-strategy: '{choosing-strategy}'
-          basedir: '{basedir}'
+            recursive: "{submodule-recursive}"
+            timeout: "{submodule-timeout}"
+          choosing-strategy: "{choosing-strategy}"
+          basedir: "{basedir}"
 
 - scm:
     name: ta-lf-infra-gerrit-scm-merge
     scm:
       - ta-lf-infra-gerrit-scm:
-          jenkins-ssh-credential: '{jenkins-ssh-credential}'
-          git-url: '{git-url}'
-          refspec: '{refspec}'
-          branch: '{branch}'
-          submodule-recursive: '{submodule-recursive}'
-          submodule-timeout: '{submodule-timeout}'
-          basedir: '{basedir}'
+          jenkins-ssh-credential: "{jenkins-ssh-credential}"
+          git-url: "{git-url}"
+          refspec: "{refspec}"
+          branch: "{branch}"
+          submodule-recursive: "{submodule-recursive}"
+          submodule-timeout: "{submodule-timeout}"
+          basedir: "{basedir}"
           choosing-strategy: default
 
 - scm:
     name: ta-lf-infra-gerrit-scm-verify
     scm:
       - ta-lf-infra-gerrit-scm:
-          jenkins-ssh-credential: '{jenkins-ssh-credential}'
-          git-url: '{git-url}'
-          refspec: '{refspec}'
-          branch: '{branch}'
-          submodule-recursive: '{submodule-recursive}'
-          submodule-timeout: '{submodule-timeout}'
-          basedir: '{basedir}'
+          jenkins-ssh-credential: "{jenkins-ssh-credential}"
+          git-url: "{git-url}"
+          refspec: "{refspec}"
+          branch: "{branch}"
+          submodule-recursive: "{submodule-recursive}"
+          submodule-timeout: "{submodule-timeout}"
+          basedir: "{basedir}"
           choosing-strategy: gerrit
 
 ###########
 - builder:
     name: lf-display-node-uuid
     builders:
-        - shell: |2-
+      # yamllint disable rule:line-length
+      - shell: |2-
             echo "---> Node UUID:"
             curl -s http://169.254.169.254/openstack/latest/meta_data.json | python -c 'import sys, json; data = json.load(sys.stdin); print(data["uuid"])' || true
+      # yamllint enable rule:line-length
 
 - builder:
     name: ta-builder-tox
     builders:
-        - shell: |2-
-            #!/bin/bash -ex
-            source ~/lf-env.sh
+      - shell: |2-
+          #!/bin/bash -ex
+          source ~/lf-env.sh
 
-            lf-activate-venv tox
-            tox --version
-            for f in $(find $GERRIT_PROJECT -name tox.ini); do
-                pushd $(dirname $f)
-                tox
-                popd
-            done
+          lf-activate-venv tox
+          tox --version
+          for f in $(find $GERRIT_PROJECT -name tox.ini); do
+              pushd $(dirname $f)
+              tox
+              popd
+          done
 
 - builder:
     name: ta-builder-rpm
     builders:
-        - shell: |2-
-            #!/bin/bash -ex
-            #  Skip RPM build in case no *.spec file is found within the {project-to-build}
-            if [ -n "$(find {project-to-build} -name '*.spec')" ]
-            then
-                if apt --version 2>1 >/dev/null; then
-                    # We need a specific version of mock (1.4.14) and devtools
-                    # not available in Ubuntu/Debian repos, so fetch them from RHEL mirrors
-                    if [ "$(mock --version 2>/dev/null)" != '1.4.14' ]; then
-                        sudo groupadd mock || true
-                        sudo usermod -aG mock $USER
-                        sudo apt update
-                        # Explicitly install mock dependencies
-                        sudo apt install -y createrepo alien systemd-container python-pip \
-                                            python-decoratortools yum-utils usermode pigz
-                        wget http://vault.centos.org/centos/7.6.1810/os/x86_64/Packages/rpmdevtools-8.3-5.el7.noarch.rpm \
-                             https://kojipkgs.fedoraproject.org/packages/mock/1.4.14/2.el7/noarch/mock-1.4.14-2.el7.noarch.rpm
-                        sudo alien -d *.rpm
-                        sudo dpkg -i *.deb
-                        rm -rf *.rpm *.deb
-                        # RHEL tools hardcode the full path for certain distro tools
-                        sudo ln -sf /bin/tar /usr/bin/gtar
-                        sudo ln -sf /bin/machinectl /bin/df /usr/bin/
-                        # Some mock dependencies are only available via pip
-                        sudo pip install distro pyroute2
-                    fi
-                else
-                    sudo yum install -y createrepo
-                fi
-                ta/build-tools/build_rpms.sh \
-                 -m ta/manifest \
-                 -r ta/rpmbuilder \
-                 -w work \
-                 {project-to-build}
-                find work/
-            fi
+      - shell: |2-
+          #!/bin/bash -ex
+          #  Skip RPM build in case no *.spec file is found within the {project-to-build}
+          if [ -n "$(find {project-to-build} -name '*.spec')" ]; then
+              if apt --version >/dev/null 2>&1; then
+                  # We need a specific version of mock (1.4.14) and devtools
+                  # not available in Ubuntu/Debian repos, so fetch them from RHEL mirrors
+                  if [ "$(mock --version 2>/dev/null)" != '1.4.14' ]; then
+                      sudo groupadd mock || true
+                      sudo usermod -aG mock $USER
+                      sudo apt update
+                      # Explicitly install mock dependencies
+                      sudo apt install -y createrepo alien systemd-container python-pip \
+                                          python-peak.util.decorators yum-utils usermode pigz
+                      wget http://vault.centos.org/centos/7.6.1810/os/x86_64/Packages/rpmdevtools-8.3-5.el7.noarch.rpm \
+                           https://kojipkgs.fedoraproject.org/packages/mock/1.4.14/2.el7/noarch/mock-1.4.14-2.el7.noarch.rpm
+                      sudo alien -d *.rpm
+                      sudo dpkg --force-overwrite -i *.deb
+                      rm -rf *.rpm *.deb
+                      # RHEL tools hardcode the full path for certain distro tools
+                      sudo ln -sf /bin/tar /usr/bin/gtar
+                      sudo ln -sf /bin/machinectl /bin/df /usr/bin/
+                      # Some mock dependencies are only available via pip
+                      sudo pip install distro pyroute2 lxml urllib3
+                  fi
+              else
+                  sudo yum install -y createrepo
+              fi
+              ta/build-tools/build_rpms.sh \
+               -m ta/manifest \
+               -r ta/rpmbuilder \
+               -w work \
+               {project-to-build}
+              find work/
+          fi
 
 - builder:
     name: ta-builder-scm
     builders:
-        - shell: |2-
-            #!/bin/bash -ex
-            rm -rf {project}
-            git clone {git-url}/{project} {project}
-            pushd {project}
-            if echo {ref} | grep -q "refs/"; then
-                git fetch origin {ref}
-                git checkout FETCH_HEAD
-            else
-                git checkout {ref}
-            fi
-            popd
+      - shell: |2-
+          #!/bin/bash -ex
+          rm -rf {project}
+          git clone {git-url}/{project} {project}
+          pushd {project}
+          if echo {ref} | grep -q "refs/"; then
+              git fetch origin {ref}
+              git checkout FETCH_HEAD
+          else
+              git checkout {ref}
+          fi
+          popd
 
 - builder:
     name: ta-lf-infra-ship-rpms
       - lf-provide-maven-settings-cleanup
       - config-file-provider:
           files:
-            - file-id: 'ta-settings'
-              variable: 'SETTINGS_FILE'
+            - file-id: "ta-settings"
+              variable: "SETTINGS_FILE"
       - inject:
-          properties-content: 'ALT_NEXUS_URL=https://nexus3.akraino.org'
+          properties-content: "ALT_NEXUS_URL=https://nexus3.akraino.org"
       - lf-infra-create-netrc:
           server-id: rpm.snapshots
       - inject:
           properties-content: |
             ALT_NEXUS_URL=
             SERVER_ID=
-      - shell: !include-raw:
+      - shell: !include-raw-escape:
           # Ensure python-tools are installed in case job template does not
           # call the lf-infra-pre-build macro.
           - ../../global-jjb/shell/python-tools-install.sh
-      - shell: !include-raw:
+      - shell: !include-raw-escape:
           - ../shell/ta-rpm-deploy.sh
-      - shell: !include-raw:
+      - shell: !include-raw-escape:
           - ../../global-jjb/shell/logs-clear-credentials.sh
 
 - builder:
       - lf-provide-maven-settings-cleanup
       - config-file-provider:
           files:
-            - file-id: 'ta-settings'
-              variable: 'SETTINGS_FILE'
+            - file-id: "ta-settings"
+              variable: "SETTINGS_FILE"
       - lf-infra-create-netrc:
           server-id: images-snapshots
-      - shell: !include-raw:
+      - shell: !include-raw-escape:
           # Ensure python-tools are installed in case job template does not
           # call the lf-infra-pre-build macro.
           - ../../global-jjb/shell/python-tools-install.sh
-      - shell: !include-raw:
+      - shell: !include-raw-escape:
           - ../shell/ta-iso-deploy.sh
-      - shell: !include-raw:
+      - shell: !include-raw-escape:
           - ../../global-jjb/shell/logs-clear-credentials.sh
 
 - builder:
     name: ta-builder-job-verify
     builders:
-        - ta-builder-scm:
-              git-url: '{git-url}'
-              project: 'ta/manifest'
-              ref: '$SCM_REFSPEC_MANIFEST'
-        - ta-builder-scm:
-              git-url: '{git-url}'
-              project: 'ta/build-tools'
-              ref: '$SCM_REFSPEC_BUILD_TOOLS'
-        - ta-builder-scm:
-              git-url: '{git-url}'
-              project: 'ta/rpmbuilder'
-              ref: '$SCM_REFSPEC_RPMBUILDER'
-        - ta-builder-tox
-        - ta-builder-rpm:
-              project-to-build: '$GERRIT_PROJECT'
+      - ta-builder-scm:
+          git-url: "{git-url}"
+          project: "ta/manifest"
+          ref: "$SCM_REFSPEC_MANIFEST"
+      - ta-builder-scm:
+          git-url: "{git-url}"
+          project: "ta/build-tools"
+          ref: "$SCM_REFSPEC_BUILD_TOOLS"
+      - ta-builder-scm:
+          git-url: "{git-url}"
+          project: "ta/rpmbuilder"
+          ref: "$SCM_REFSPEC_RPMBUILDER"
+      - ta-builder-tox
+      - ta-builder-rpm:
+          project-to-build: "$GERRIT_PROJECT"
 
 - builder:
     name: ta-builder-job-verify-ta/rpmbuilder
     builders:
-        - ta-builder-scm:
-              git-url: '{git-url}'
-              project: 'ta/manifest'
-              ref: '$SCM_REFSPEC_MANIFEST'
-        - ta-builder-scm:
-              git-url: '{git-url}'
-              project: 'ta/build-tools'
-              ref: '$SCM_REFSPEC_BUILD_TOOLS'
-        - ta-builder-scm:
-              git-url: '{git-url}'
-              project: '$SCM_PROJECT_TO_BUILD'
-              ref: '$SCM_PROJECT_TO_BUILD_REFSPEC'
-        - ta-builder-tox
-        - ta-builder-rpm:
-              # Just package some random project to verify "rpmbuilder" changes
-              project-to-build: '$SCM_PROJECT_TO_BUILD'
+      - ta-builder-scm:
+          git-url: "{git-url}"
+          project: "ta/manifest"
+          ref: "$SCM_REFSPEC_MANIFEST"
+      - ta-builder-scm:
+          git-url: "{git-url}"
+          project: "ta/build-tools"
+          ref: "$SCM_REFSPEC_BUILD_TOOLS"
+      - ta-builder-scm:
+          git-url: "{git-url}"
+          project: "$SCM_PROJECT_TO_BUILD"
+          ref: "$SCM_PROJECT_TO_BUILD_REFSPEC"
+      - ta-builder-tox
+      - ta-builder-rpm:
+          # Just package some random project to verify "rpmbuilder" changes
+          project-to-build: "$SCM_PROJECT_TO_BUILD"
 
 - builder:
     name: ta-builder-job-merge
     builders:
-        - ta-builder-scm:
-              git-url: '{git-url}'
-              project: 'ta/manifest'
-              ref: '$SCM_REFSPEC_MANIFEST'
-        - ta-builder-scm:
-              git-url: '{git-url}'
-              project: 'ta/build-tools'
-              ref: '$SCM_REFSPEC_BUILD_TOOLS'
-        - ta-builder-scm:
-              git-url: '{git-url}'
-              project: 'ta/rpmbuilder'
-              ref: '$SCM_REFSPEC_RPMBUILDER'
-        - ta-builder-rpm:
-              project-to-build: '$GERRIT_PROJECT'
-        - ta-lf-infra-ship-rpms
+      - ta-builder-scm:
+          git-url: "{git-url}"
+          project: "ta/manifest"
+          ref: "$SCM_REFSPEC_MANIFEST"
+      - ta-builder-scm:
+          git-url: "{git-url}"
+          project: "ta/build-tools"
+          ref: "$SCM_REFSPEC_BUILD_TOOLS"
+      - ta-builder-scm:
+          git-url: "{git-url}"
+          project: "ta/rpmbuilder"
+          ref: "$SCM_REFSPEC_RPMBUILDER"
+      - ta-builder-rpm:
+          project-to-build: "$GERRIT_PROJECT"
+      - ta-lf-infra-ship-rpms
 
 - builder:
     name: ta-builder-install-docker
     builders:
-      - shell: |2-
-          #!/bin/bash -ex
-          if apt --version 2>1 >/dev/null; then
-              if ! docker --version 2>1 >/dev/null; then
-                  sudo apt update
-                  sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
-                  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
-                  sudo add-apt-repository -y "deb http://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
-                  sudo apt update
-                  sudo apt install -y docker-ce
-              fi
-          else
-              sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
-              sudo yum -y install docker-ce docker-ce-cli containerd.io
-          fi
-          sudo mkdir -p /etc/docker/
-          echo '{"experimental":true}' | sudo tee /etc/docker/daemon.json
-          sudo systemctl start docker
-          # Ugly hack to make docker usable for non-root
-          # (adding to the group would require re-login)
-          sudo chmod 777 /var/run/docker.sock
+      - shell: !include-raw-escape: ../shell/ta-install-docker.sh
 
 - builder:
     name: ta-builder-install-build-tools
     builders:
-      - shell: |2-
-          #!/bin/bash -ex
-          if apt --version 2>1 >/dev/null; then
-              if ! createrepo --version 2>1 >/dev/null; then
-                  sudo apt update
-                  sudo apt install -y createrepo libguestfs-tools jq
-              fi
-          else
-              sudo yum -y install createrepo libguestfs-tools-c jq
-          fi
-          sudo systemctl start libvirtd
-          systemctl status libvirtd
+      - shell: !include-raw-escape: ../shell/ta-install-build-tools.sh
 
 ###########
 # TRIGGER #
     name: ta-trigger-job-verify
     triggers:
       - gerrit:
-          server-name: '{gerrit-server-name}'
+          server-name: "{gerrit-server-name}"
           trigger-on:
             - patchset-created-event:
-                exclude-drafts: 'false'
-                exclude-trivial-rebase: 'false'
-                exclude-no-code-change: 'false'
+                exclude-drafts: "false"
+                exclude-trivial-rebase: "false"
+                exclude-no-code-change: "false"
             - draft-published-event
             - comment-added-contains-event:
-                comment-contains-value: 'recheck'
+                comment-contains-value: "recheck"
             - comment-added-contains-event:
-                comment-contains-value: 'reverify'
+                comment-contains-value: "reverify"
           projects:
-            - project-compare-type: 'ANT'
-              project-pattern: '{project}'
+            - project-compare-type: "ANT"
+              project-pattern: "{project}"
               branches:
-                - branch-compare-type: 'ANT'
-                  branch-pattern: '**/{branch}'
+                - branch-compare-type: "ANT"
+                  branch-pattern: "**/{branch}"
           readable-message: true
           skip-vote:
-            successful: '{gerrit-skip-vote}'
-            failed: '{gerrit-skip-vote}'
-            unstable: '{gerrit-skip-vote}'
-            notbuilt: '{gerrit-skip-vote}'
+            successful: "{gerrit-skip-vote}"
+            failed: "{gerrit-skip-vote}"
+            unstable: "{gerrit-skip-vote}"
+            notbuilt: "{gerrit-skip-vote}"
 
 - trigger:
     name: ta-trigger-job-merge
     triggers:
       - gerrit:
-          server-name: '{gerrit-server-name}'
+          server-name: "{gerrit-server-name}"
           trigger-on:
             # Not sure if it would be better to use "change-merged" here and just clone the master
             # branch. With the current approach the SCM can be identical in verify and merge jobs.
             - ref-updated-event
             - comment-added-contains-event:
-                comment-contains-value: 'remerge'
+                comment-contains-value: "remerge"
           projects:
-            - project-compare-type: 'ANT'
-              project-pattern: '{project}'
+            - project-compare-type: "ANT"
+              project-pattern: "{project}"
               branches:
-                - branch-compare-type: 'ANT'
-                  branch-pattern: '**/{branch}'
+                - branch-compare-type: "ANT"
+                  branch-pattern: "**/{branch}"
           readable-message: true
 
 #############
 - publisher:
     name: ta-publisher-job-merge
     publishers:
+      - lf-infra-publish
       - ta-publisher-ci-build:
-          arch: '{arch}'
+          arch: "{arch}"
       - trigger-parameterized-builds:
-          - project: 'ta-ci-build-{arch}'
+          - project: "ta-ci-build-{arch}"
             condition: UNSTABLE_OR_BETTER
             trigger-with-no-params: true