Create periodic jobs for scenarios
[infra/cicd.git] / jjb / cloud-infra / cloud-infra-periodic-scenario.yaml
diff --git a/jjb/cloud-infra/cloud-infra-periodic-scenario.yaml b/jjb/cloud-infra/cloud-infra-periodic-scenario.yaml
new file mode 100644 (file)
index 0000000..5bb871d
--- /dev/null
@@ -0,0 +1,344 @@
+---
+#
+# ============LICENSE_START=======================================================
+#  Copyright (C) 2019 Nordix Foundation.
+# ================================================================================
+# 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
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
+#--------------------------------------------------------------------------------------
+# The jobs declared in this JJB configuration file are used for verifying cloud-infra
+# engine from the tip of the master branch periodically to check the stability of it.
+#
+# These jobs are set to run on slaves with label vpod-deploy-ubuntu1604.
+# The slaves have
+#   - Ubuntu1604 as the base distro
+#   - nested virtualization
+#   - internet access
+#   - passwordless sudo
+#   - 16 CPUs/32GB RAM/200 GB Disk
+#   - docker, git vim curl wget zip unzip chrony apt-transport-https ca-certificates curl
+#     gnupg-agent software-properties-common docker-ce docker-ce-cli containerd.io openjdk-8-jre
+#
+# The slaves should not have a cloud infra scenario deployed on them.
+#--------------------------------------------------------------------------------------
+
+- project:
+    name: 'cloud-infra-periodic-scenario'
+
+    project: 'infra/engine'
+
+    stream:
+      - 'master':
+          branch: '{stream}'
+          disabled: 'false'
+
+    os:
+      - ubuntu1804:
+          disabled: 'false'
+          distribution: 'ubuntu18'
+          ipa_dib_os_element: 'coreos'
+          dib_os_release: 'bionic'
+          dib_os_element: 'ubuntu-minimal'
+      - centos7:
+          disabled: 'true'
+          distribution: 'centos7'
+          ipa_dib_os_element: 'coreos'
+          dib_os_release: '7'
+          dib_os_element: 'centos-minimal'
+
+    deploy-scenario:
+      - k8-calico-nofeature:
+          installer-type: kubespray
+      - k8-flannel-nofeature:
+          installer-type: kubespray
+      - k8-canal-nofeature:
+          installer-type: kubespray
+      - k8-cilium-nofeature:
+          installer-type: kubespray
+      - k8-weave-nofeature:
+          installer-type: kubespray
+
+    type:
+      - baremetal:
+          slave-label: 'baremetal-deploy'
+          yardstick-dispatcher: 'influxdb'
+
+    phase:
+      - deploy:
+          build-timeout: 60
+      - functest:
+          build-timeout: 120
+      - yardstick:
+          build-timeout: 30
+      - promote:
+          build-timeout: 5
+
+    jobs:
+      - '{deploy-scenario}-periodic-{os}-{type}-{stream}'
+      - '{deploy-scenario}-periodic-{os}-{phase}-{type}-{stream}'
+
+- job-template:
+    name: '{deploy-scenario}-periodic-{os}-{type}-{stream}'
+
+    project-type: multijob
+
+    disabled: '{obj:disabled}'
+
+    concurrent: true
+
+    parameters:
+      - project-parameters:
+          project: '{project}'
+          branch: '{branch}'
+      - nordix-gerrit-parameters
+      - label:
+          name: SLAVE_LABEL
+          default: '{slave-label}'
+          description: 'Slave label to schedule this job on. All slaves have Ubuntu1604 no matter what distro target nodes use'
+      - string:
+          name: DISTRIBUTION
+          default: '{distribution}'
+          description: 'Distribution to use for configuring target nodes (networking etc.)'
+      - string:
+          name: DEPLOY_TYPE
+          default: '{type}'
+          description: 'Type of the deployment'
+      - string:
+          name: USE_PREBUILT_DEPLOYMENT_IMAGE
+          default: 'true'
+          description: 'Use prebuilt deployment image while running as part of CI/CD'
+      - string:
+          name: IPA_DIB_OS_ELEMENT
+          default: '{ipa_dib_os_element}'
+          description: 'DIB OS Element to use for building the ramdisk image'
+      - string:
+          name: DIB_OS_RELEASE
+          default: '{dib_os_release}'
+          description: 'DIB OS Release to use for building the deployment image to provision target nodes with'
+      - string:
+          name: DIB_OS_ELEMENT
+          default: '{dib_os_element}'
+          description: 'DIB OS Element to use for building the deployment image to provision target nodes with'
+      - string:
+          name: INSTALLER_TYPE
+          default: '{installer-type}'
+          description: 'Installer to use for deploying the scenario'
+      - string:
+          name: DEPLOY_SCENARIO
+          default: '{deploy-scenario}'
+          description: 'Scenario to deploy and test'
+      - string:
+          name: TEST_SUITE
+          default: 'smoke'
+          description: 'Test suite to run'
+      - string:
+          name: YARDSTICK_DISPATCHER
+          default: '{yardstick-dispatcher}'
+          description: 'Dispatcher to use for Yardstick reporting'
+      - string:
+          name: CLEANUP
+          default: 'true'
+          description: 'Cleanup leftovers of the previous run'
+
+    properties:
+      - logrotate
+      - build-blocker:
+          use-build-blocker: true
+          blocking-jobs:
+            - 'cloud-infra-periodic-engine-{os}-.*'
+            - 'k8-.*?-periodic-.*'
+          block-level: 'NODE'
+      - throttle:
+          max-per-node: 1
+          max-total: 3
+          option: project
+
+    wrappers:
+      - build-timeout:
+          timeout: 210
+      - fix-workspace-permissions
+
+    scm:
+      - git-scm:
+          ssh-credentials-id: nordixinfra-nordix-gerrit-ssh
+          branch: '{branch}'
+          refspec: ''
+
+    triggers:
+      - timed: '@daily'
+
+    builders:
+      - description-setter:
+          description: $INSTALLER_TYPE
+      - multijob:
+          name: deploy
+          condition: SUCCESSFUL
+          projects:
+            - name: 'scenario-periodic-{os}-deploy-{type}-{stream}'
+              current-parameters: true
+              predefined-parameters: |
+                DISTRIBUTION=$DISTRIBUTION
+                DEPLOY_TYPE=$DEPLOY_TYPE
+                USE_PREBUILT_DEPLOYMENT_IMAGE=$USE_PREBUILT_DEPLOYMENT_IMAGE
+                IPA_DIB_OS_ELEMENT=$IPA_DIB_OS_ELEMENT
+                DIB_OS_RELEASE=$DIB_OS_RELEASE
+                DIB_OS_ELEMENT=$DIB_OS_ELEMENT
+                INSTALLER_TYPE=$INSTALLER_TYPE
+                DEPLOY_SCENARIO=$DEPLOY_SCENARIO
+                CLEANUP=$CLEANUP
+              git-revision: true
+              node-parameters: true
+              kill-phase-on: FAILURE
+              abort-all-job: true
+      - multijob:
+          name: functest
+          condition: ALWAYS
+          projects:
+            - name: 'scenario-periodic-{os}-functest-{type}-{stream}'
+              current-parameters: true
+              predefined-parameters: |
+                DISTRIBUTION=$DISTRIBUTION
+                DEPLOY_TYPE=$DEPLOY_TYPE
+                INSTALLER_TYPE=$INSTALLER_TYPE
+                DEPLOY_SCENARIO=$DEPLOY_SCENARIO
+                TEST_SUITE=$TEST_SUITE
+                YARDSTICK_DISPATCHER=$YARDSTICK_DISPATCHER
+                CLEANUP=$CLEANUP
+              node-parameters: true
+              kill-phase-on: FAILURE
+              abort-all-job: true
+      - multijob:
+          name: yardstick
+          condition: ALWAYS
+          projects:
+            - name: 'scenario-periodic-{os}-yardstick-{type}-{stream}'
+              current-parameters: true
+              predefined-parameters: |
+                DISTRIBUTION=$DISTRIBUTION
+                DEPLOY_TYPE=$DEPLOY_TYPE
+                INSTALLER_TYPE=$INSTALLER_TYPE
+                DEPLOY_SCENARIO=$DEPLOY_SCENARIO
+                TEST_SUITE=$TEST_SUITE
+                YARDSTICK_DISPATCHER=$YARDSTICK_DISPATCHER
+                CLEANUP=$CLEANUP
+              node-parameters: true
+              kill-phase-on: FAILURE
+              abort-all-job: true
+      - multijob:
+          name: promote
+          condition: ALWAYS
+          projects:
+            - name: 'scenario-periodic-{os}-promote-{type}-{stream}'
+              current-parameters: true
+              predefined-parameters: |
+                DISTRIBUTION=$DISTRIBUTION
+                DEPLOY_TYPE=$DEPLOY_TYPE
+                INSTALLER_TYPE=$INSTALLER_TYPE
+                DEPLOY_SCENARIO=$DEPLOY_SCENARIO
+                TEST_SUITE=$TEST_SUITE
+                YARDSTICK_DISPATCHER=$YARDSTICK_DISPATCHER
+                CLEANUP=$CLEANUP
+              node-parameters: true
+              kill-phase-on: FAILURE
+              abort-all-job: true
+
+- job-template:
+    name: '{deploy-scenario}-periodic-{os}-{phase}-{type}-{stream}'
+
+    disabled: false
+
+    concurrent: true
+
+    properties:
+      - logrotate
+
+    parameters:
+      - string:
+          name: PROJECT
+          default: $GERRIT_PROJECT
+      - string:
+          name: DISTRIBUTION
+          default: 'ubuntu18'
+          description: 'Distribution to use for configuring target nodes (networking etc.). Overriden by upstream job.'
+      - string:
+          name: DEPLOY_TYPE
+          default: 'virtual'
+          description: 'Type of the deployment. Overriden by upstream job.'
+      - string:
+          name: USE_PREBUILT_DEPLOYMENT_IMAGE
+          default: 'false'
+          description: 'Use prebuilt deployment image while running as part of CI/CD'
+      - string:
+          name: IPA_DIB_OS_ELEMENT
+          default: 'fedora'
+          description: 'DIB OS Element to use for building the ramdisk image. Overriden by upstream job.'
+      - string:
+          name: DIB_OS_RELEASE
+          default: 'bionic'
+          description: 'DIB OS Release to use for building the deployment image to provision target nodes with. Overriden by upstream job.'
+      - string:
+          name: DIB_OS_ELEMENT
+          default: 'ubuntu-minimal'
+          description: 'DIB OS Element to use for building the deployment image to provision target nodes with. Overriden by upstream job.'
+      - string:
+          name: ENGINE_ANSIBLE_PARAMS
+          default: ' -v '
+          description: 'Extra paramters that can be added when run the play books.'
+      - string:
+          name: DEPLOY_SCENARIO
+          default: 'k8-calico-nofeature'
+          description: 'Scenario to deploy and test'
+      - string:
+          name: INSTALLER_TYPE
+          default: 'kubespray'
+          description: 'Installer to use for deploying the scenario'
+      - string:
+          name: TEST_FW
+          default: '{phase}'
+          description: 'Test framework to use'
+      - string:
+          name: TEST_SUITE
+          default: 'smoke'
+          description: 'Test suite to run'
+      - string:
+          name: TEST_REPO_URL
+          default: 'https://gerrit.nordix.org/infra/test.git'
+          description: 'URL to Nordix Cloud Infra test repository'
+      - string:
+          name: YARDSTICK_DISPATCHER
+          default: 'file'
+          description: 'Dispatcher to use for Yardstick reporting'
+      - string:
+          name: CLEANUP
+          default: 'false'
+
+    wrappers:
+      - build-timeout:
+          timeout: '{build-timeout}'
+      - fix-workspace-permissions
+
+    scm:
+      - git-scm:
+          ssh-credentials-id: nordixinfra-nordix-gerrit-ssh
+          branch: '{branch}'
+          refspec: ''
+
+    builders:
+      - description-setter:
+          description: $INSTALLER_TYPE - $DEPLOY_SCENARIO
+      - 'scenario-{phase}-macro'
+
+# vim: set ts=2 sw=2 expandtab: