Prepare 2023.2 release jobs
[releng.git] / jjb / releng / releng-jobs.yaml
index 685eb18..f36ace7 100644 (file)
@@ -3,7 +3,7 @@
     name: releng-scm
     scm:
       - git:
-          url: 'https://gerrit.opnfv.org/gerrit/releng'
+          url: 'ssh://fbot@gerrit.opnfv.org:29418/releng'
           refspec: '+refs/heads/*:refs/remotes/origin/* +refs/changes/*:refs/changes/*'
           submodule:
             recursive: true
@@ -51,7 +51,7 @@
             -o DPkg::Lock::Timeout=300 dist-upgrade -y
           sudo DEBIAN_FRONTEND=noninteractive \
           apt-get -o DPkg::Lock::Timeout=300 install jenkins-job-builder -y
-          jenkins-jobs test --recursive -o tmp jjb/
+          jenkins-jobs test --recursive -o tmp jjb
           rm -rf tmp
 
 - builder:
@@ -63,7 +63,7 @@
             -o DPkg::Lock::Timeout=300 dist-upgrade -y
           sudo DEBIAN_FRONTEND=noninteractive \
           apt-get -o DPkg::Lock::Timeout=300 install jenkins-job-builder -y
-          jenkins-jobs update --recursive --delete-old jjb/
+          jenkins-jobs update --recursive --delete-old jjb
 
 - parameter:
     name: releng-jjb-node
 - project:
     name: releng-release-jobs
     stream:
-      - fraser
-      - gambia
-      - hunter
-      - iruya
-      - jerma
-      - kali
-      - leguer
-      - lakelse
-      - moselle
       - nile
-      - v1.21
+      - orinoco
       - v1.22
       - v1.23
       - v1.24
       - v1.25
+      - v1.26
+      - v1.27
+      - v1.28
       - xena
       - wallaby
       - yoga
       - zed
+      - '2023.1'
+      - '2023.2'
     jobs:
       - 'releng-release-{stream}-verify'
       - 'releng-release-{stream}-merge'
           node: opnfv-build
       - stream-parameter:
           stream: '{stream}'
+      - string:
+          name: GIT_URL
+          default: ssh://fbot@gerrit.opnfv.org:29418/
     triggers:
       - gerrit:
           server-name: 'gerrit.opnfv.org'
 
 - job-template:
     name: 'releng-release-{stream}-merge'
-    triggers:
-      - releng-patchset-merged
     scm:
       - releng-scm:
-          ref: master
+          ref: $GERRIT_REFSPEC
     parameters:
       - releng-jjb-node:
           node: opnfv-build
       - stream-parameter:
           stream: '{stream}'
+      - string:
+          name: GIT_URL
+          default: ssh://fbot@gerrit.opnfv.org:29418/
     triggers:
       - gerrit:
           trigger-on:
       - shell: !include-raw-escape:
           - branch-or-tag.sh
 
-- parameter:
-    name: releng-debug-slave
-    parameters:
-      - label:
-          name: slave
-          default: '{slave}'
+- builder:
+    name: lint-init
+    builders:
+      - shell: |
+          #!/bin/bash
+          # Ensure we start with a clean environment
+          rm -f bash-violation.log python-violation.log yaml-violation.log violation.log
+          git --no-pager diff --diff-filter=MCRAT --name-only HEAD^1 > modified_files
+
+- builder:
+    name: lint-report
+    builders:
+      - shell: |
+          #!/bin/bash
+          if [[ -s violation.log ]]; then
+              cat violation.log
+              echo "Reporting lint result...."
+              set -x
+              msg="Found syntax error and/or coding style violation(s) in the files modified by your patchset."
+              sed -i -e "1s#^#${msg}\n\n#" violation.log
+              cmd="gerrit review -p $GERRIT_PROJECT -m \"$(cat violation.log)\" $GERRIT_PATCHSET_REVISION --notify NONE"
+              ssh -o 'PubkeyAcceptedKeyTypes +ssh-rsa' -p 29418 fbot@gerrit.opnfv.org "$cmd"
+
+              # Make sure the caller job failed
+              exit 1
+          fi
+
+- builder:
+    name: lint-bash-code
+    builders:
+      - shell: |
+          #!/bin/bash
+          echo "Checking bash code..."
+          for f in $(egrep '\.sh$' modified_files)
+          do
+              bash -n "$f" 2>> bash-violation.log
+          done
+          if [[ -s bash-violation.log ]]; then
+              echo -e "Bash syntax error(s)\n---" >> violation.log
+              sed -e 's/^/ /g' bash-violation.log >> violation.log
+          fi
+
+- builder:
+    name: lint-python-code
+    builders:
+      - shell: |
+          #!/bin/bash
+
+          sudo apt-get -o DPkg::Lock::Timeout=300 update && \
+          sudo DEBIAN_FRONTEND=noninteractive apt-get \
+            -o DPkg::Lock::Timeout=300 dist-upgrade -y
+          sudo DEBIAN_FRONTEND=noninteractive \
+          apt-get -o DPkg::Lock::Timeout=300 install flake8 -y
+
+          echo "Checking python code..."
+          for f in $(egrep '\.py$' modified_files)
+          do
+              flake8 "$f" >> python-violation.log
+          done
+          if [[ -s python-violation.log ]]; then
+              echo -e "Python violation(s)\n---" >> violation.log
+              sed -e 's/^/ /g' python-violation.log >> violation.log
+          fi
 
 - builder:
-    name: releng-debug
+    name: lint-yaml-code
     builders:
       - shell: |
-          ls -l ~/.ssh
-          cat ~/.ssh/id_rsa
-          cat ~/.ssh/id_rsa.pub
+          #!/bin/bash
+
+          sudo apt-get -o DPkg::Lock::Timeout=300 update && \
+          sudo DEBIAN_FRONTEND=noninteractive apt-get \
+            -o DPkg::Lock::Timeout=300 dist-upgrade -y
+          sudo DEBIAN_FRONTEND=noninteractive \
+          apt-get -o DPkg::Lock::Timeout=300 install yamllint -y
+
+          echo "Checking yaml file..."
+          for f in $(egrep '\.ya?ml$' modified_files)
+          do
+              yamllint "$f" >> yaml-violation.log
+          done
+          if [[ -s yaml-violation.log ]]; then
+              echo -e "YAML violation(s)\n---" >> violation.log
+              sed -e 's/^/ /g' yaml-violation.log >> violation.log
+          fi
+
+- builder:
+    name: lint-all-code
+    builders:
+      - lint-init
+      - lint-bash-code
+      - lint-python-code
+      - lint-yaml-code
+      - lint-report
+
+- project:
+    name: releng-lint
+    jobs:
+      - 'releng-lint-verify'
 
 - job-template:
-    name: releng-debug
+    name: 'releng-lint-verify'
     parameters:
-      - releng-debug-slave:
-          slave: lf-build6
+      - releng-jjb-node:
+          node: opnfv-build
+    scm:
+      - releng-scm:
+          ref: $GERRIT_REFSPEC
+    triggers:
+      - gerrit:
+          server-name: 'gerrit.opnfv.org'
+          trigger-on:
+            - patchset-created-event
+            - comment-added-contains-event:
+                comment-contains-value: recheck
+            - comment-added-contains-event:
+                comment-contains-value: reverify
+          projects:
+            - project-compare-type: 'ANT'
+              project-pattern: 'releng'
+              branches:
+                - branch-compare-type: 'ANT'
+                  branch-pattern: 'master'
+              file-paths:
+                - compare-type: ANT
+                  pattern: '**/*.py'
+                - compare-type: ANT
+                  pattern: '**/*.sh'
+                - compare-type: ANT
+                  pattern: '**/*.yml'
+                - compare-type: ANT
+                  pattern: '**/*.yaml'
     builders:
-      - releng-debug
+      - lint-all-code
 
 - project:
-    name: 'releng-debug'
+    name: releng-generate-artifacts-index-pages
     jobs:
-      - 'releng-debug'
\ No newline at end of file
+      - releng-generate-artifacts-index-pages
+
+- job-template:
+    name: releng-generate-artifacts-index-pages
+    scm:
+      - releng-scm:
+          ref: master
+    parameters:
+      - releng-jjb-node:
+          node: opnfv-build
+    triggers:
+      - timed: '@daily'
+    builders:
+      - generate-artifact-html
+
+- builder:
+    name: generate-artifact-html
+    builders:
+      - shell: |
+          curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
+          echo "deb https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee \
+            /etc/apt/sources.list.d/google-cloud-sdk.list
+          sudo apt-get -o DPkg::Lock::Timeout=300 update && \
+          sudo DEBIAN_FRONTEND=noninteractive apt-get \
+            -o DPkg::Lock::Timeout=300 install \
+            google-cloud-sdk -y
+          cd $WORKSPACE/utils/
+          ./artifacts.opnfv.org.sh
+
+- project:
+    name: releng-artifact-cleanup
+    jobs:
+      - releng-artifact-cleanup
+
+- job-template:
+    name: releng-artifact-cleanup
+    scm:
+      - releng-scm:
+          ref: master
+    parameters:
+      - releng-jjb-node:
+          node: opnfv-build
+    triggers:
+      - timed: '@daily'
+    builders:
+      - releng-artifact-cleanup
+
+- builder:
+    name: releng-artifact-cleanup
+    builders:
+      - shell: |
+          curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
+          echo "deb https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee \
+            /etc/apt/sources.list.d/google-cloud-sdk.list
+          sudo apt-get -o DPkg::Lock::Timeout=300 update && \
+          sudo DEBIAN_FRONTEND=noninteractive apt-get \
+            -o DPkg::Lock::Timeout=300 install \
+            google-cloud-sdk -y
+          $WORKSPACE/utils/retention_script.sh