Clear ALT_NEXUS_URL and SERVER_ID after netrc
[ci-management.git] / jjb / akraino-templates / akraino-ta-common-macros.yaml
index 874d166..14d6403 100644 (file)
 ###########
 # BUILDER #
 ###########
+- builder:
+    name: lf-display-node-uuid
+    builders:
+        - 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"])'
+
 - builder:
     name: ta-builder-tox
     builders:
         - lf-pip-install:
             pip-packages: tox
         - shell: |2-
+            #!/bin/bash -ex
             source /tmp/v/tox/bin/activate
             for f in $(find $GERRIT_PROJECT -name tox.ini); do
                 pushd $(dirname $f)
     name: ta-builder-rpm
     builders:
         - shell: |2-
-            sudo yum install -y createrepo
-            ta/build-tools/build_rpms.sh \
-              -m ta/manifest \
-              -r ta/rpmbuilder \
-              -w work \
-              {project-to-build}
-            find work/
+            #!/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
+                    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
+                    # We need a specific version of mock (1.4.14) and devtools
+                    # not available in Ubuntu/Debian repos, so fetch them from RHEL mirrors
+                    wget http://mirror.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
+                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
       - lf-provide-maven-settings-cleanup
       - config-file-provider:
           files:
-            - file-id: 'images-snapshots-settings'
+            - file-id: 'ta-settings'
               variable: 'SETTINGS_FILE'
+      - inject:
+          properties-content: 'ALT_NEXUS_URL=https://nexus3.akraino.org'
       - lf-infra-create-netrc:
-          server-id: images-snapshots
+          server-id: rpm.snapshots
+      - inject:
+          properties-content: |
+            ALT_NEXUS_URL=
+            SERVER_ID=
       - shell: !include-raw:
           # Ensure python-tools are installed in case job template does not
           # call the lf-infra-pre-build macro.
       - lf-provide-maven-settings-cleanup
       - config-file-provider:
           files:
-            - file-id: 'images-snapshots-settings'
+            - file-id: 'ta-settings'
               variable: 'SETTINGS_FILE'
       - lf-infra-create-netrc:
           server-id: images-snapshots
     name: ta-builder-install-docker
     builders:
       - shell: |2-
-          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
+          #!/bin/bash -ex
+          if apt --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
+          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
 
+- builder:
+    name: ta-builder-install-build-tools
+    builders:
+      - shell: |2-
+          #!/bin/bash -ex
+          if apt --version 2>1 >/dev/null; then
+              sudo apt update
+              sudo apt install -y createrepo libguestfs-tools jq
+          else
+              sudo yum -y install createrepo libguestfs-tools-c jq
+          fi
+          sudo systemctl start libvirtd
+          systemctl status libvirtd
+
 ###########
 # TRIGGER #
 ###########
             # 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'
           projects:
             - project-compare-type: 'ANT'
               project-pattern: '{project}'
 - publisher:
     name: ta-publisher-job-verify
     publishers:
-        - lf-infra-publish
+      - lf-infra-publish
 
 - publisher:
     name: ta-publisher-job-merge
     publishers:
-        - lf-infra-publish
+      - lf-infra-publish
+      - trigger-parameterized-builds:
+          - project: 'ta-ci-build-{arch}'
+            condition: UNSTABLE_OR_BETTER
+            trigger-with-no-params: true