Prepare 2023.2 release jobs
[releng.git] / jjb / releng / releng-jobs.yaml
index 1f255fc..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:
             -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-slave
+    name: releng-jjb-node
     parameters:
       - label:
-          name: slave
-          default: '{slave}'
+          name: node
+          default: '{node}'
 
 - job-template:
     name: releng-jjb-verify
@@ -80,8 +80,8 @@
       - releng-scm:
           ref: $GERRIT_REFSPEC
     parameters:
-      - releng-jjb-slave:
-          slave: opnfv-build
+      - releng-jjb-node:
+          node: opnfv-build
     builders:
       - releng-jjb-verify
 
@@ -98,8 +98,8 @@
       - releng-scm:
           ref: master
     parameters:
-      - releng-jjb-slave:
-          slave: opnfv-build
+      - releng-jjb-node:
+          node: opnfv-build
     builders:
       - releng-jjb-merge
 
     builders:
       - shell: |
           [ -f tox.ini ] || exit 0
-          [ -f /usr/bin/python ] || sudo ln -s /usr/bin/python3 /usr/bin/python
           sudo apt-get -o DPkg::Lock::Timeout=300 update && \
           sudo DEBIAN_FRONTEND=noninteractive apt-get \
             -o DPkg::Lock::Timeout=300 dist-upgrade -y
           tox --recreate
 
 - parameter:
-    name: releng-tox-slave
+    name: releng-tox-node
     parameters:
       - label:
-          name: slave
-          default: '{slave}'
+          name: node
+          default: '{node}'
 
 - job-template:
     name: releng-tox
           ref: $GERRIT_REFSPEC
           project: $GERRIT_PROJECT
     parameters:
-      - releng-tox-slave:
-          slave: opnfv-build
+      - releng-tox-node:
+          node: opnfv-build
     builders:
       - releng-tox
 
     name: releng-tox
     jobs:
       - releng-tox
+
+- project:
+    name: releng-release-jobs
+    stream:
+      - nile
+      - 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'
+
+- parameter:
+    name: stream-parameter
+    parameters:
+      - string:
+          name: STREAM
+          default: '{stream}'
+
+- job-template:
+    name: 'releng-release-{stream}-verify'
+    scm:
+      - releng-scm:
+          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:
+          server-name: 'gerrit.opnfv.org'
+          trigger-on:
+            - patchset-created-event:
+                exclude-drafts: 'false'
+                exclude-trivial-rebase: 'false'
+                exclude-no-code-change: 'false'
+            - 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: 'releases/{stream}/**'
+                - compare-type: ANT
+                  pattern: 'releases/schema.yaml'
+                - compare-type: ANT
+                  pattern: 'releases/scripts/verify_schema.py'
+    builders:
+      - shell: |
+          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 python3-pygerrit2 \
+            python3-ruamel.yaml  -y
+      - shell: !include-raw-escape:
+          - branch-or-tag.sh
+
+- job-template:
+    name: 'releng-release-{stream}-merge'
+    scm:
+      - releng-scm:
+          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:
+            - change-merged-event
+            - comment-added-contains-event:
+                comment-contains-value: 'remerge'
+          projects:
+            - project-compare-type: 'ANT'
+              project-pattern: 'releng'
+              branches:
+                - branch-compare-type: 'ANT'
+                  branch-pattern: 'master'
+              file-paths:
+                - compare-type: ANT
+                  pattern: 'releases/{stream}/**'
+    builders:
+      - shell: |
+          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 python3-pygerrit2 \
+            python3-ruamel.yaml  -y
+      - shell: !include-raw-escape:
+          - branch-or-tag.sh
+
+- 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: lint-yaml-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 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-lint-verify'
+    parameters:
+      - 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:
+      - lint-all-code
+
+- project:
+    name: releng-generate-artifacts-index-pages
+    jobs:
+      - 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