blob: afc955e396b06d76e363ab1b505a7a75e3105f1c [file] [log] [blame]
---
# ============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=========================================================
- project:
name: 'kubernetes-verify-deploy-test'
project: 'kubernetes-verify-deploy-test'
# NOTE (fdegir): dot is not an allowed character in groovy var names and also for
# naming openstack objects so stream is used for that purpose but branch points to
# actual branch name on gerrit
stream:
- 'master':
branch: 'master'
deploy-scenario: 'k8-multus-plugins'
- '1_18':
branch: '1.18'
deploy-scenario: 'k8-multus-plugins'
- '1_17':
branch: '1.17'
deploy-scenario: 'k8-multus-plugins'
- '1_16':
branch: '1.16'
deploy-scenario: 'k8-calico-nofeature'
- '1_15':
branch: '1.15'
deploy-scenario: 'k8-calico-nofeature'
environment-type:
- online:
disabled: false
execution-mode: online-deployment
successful: false
failed: false
unstable: false
notbuilt: false
- offline:
disabled: false
execution-mode: offline-deployment
successful: false
failed: false
unstable: false
notbuilt: false
phase:
- deploy
- functest
type:
- virtual:
provisioner-type: 'bifrost'
slave-type: 'vpod'
gated-projects: 'infra/stack/kubernetes|infra/installer/kubespray'
pdf: 'https://gerrit.nordix.org/gitweb?p=infra/hwconfig.git;a=blob_plain;f=pods/nordix-vpod1-pdf.yml'
idf: 'https://gerrit.nordix.org/gitweb?p=infra/hwconfig.git;a=blob_plain;f=pods/nordix-vpod1-idf.yml'
- cloud:
provisioner-type: 'heat'
slave-type: 'jumphost'
gated-projects: 'infra/stack/kubernetes|infra/installer/kubespray'
pdf: "https://gerrit.nordix.org/gitweb?p=infra/provisioner/heat.git;a=blob_plain;f=playbooks/roles/create-stack/files/heat-environment-ci-city-ubuntu1804.yaml"
idf: "https://gerrit.nordix.org/gitweb?p=infra/provisioner/heat.git;a=blob_plain;f=playbooks/roles/create-stack/files/heat-idf.yaml"
distro:
- ubuntu1804
cloud:
- city:
openrc-credentials-file: 'est-jenkins-openrcfile-city-frankfurt-cicd'
dependency-jobs: 'kubernetes-verify-package-{distro}-{stream}'
dependency-job-var: 'TRIGGER_kubernetes_verify_package_{distro}_{stream}_BUILD_RESULT'
jobs:
- 'kubernetes-verify-{environment-type}-deploy-test-{distro}-{cloud}-{type}-{stream}'
- 'kubernetes-verify-{environment-type}-{phase}-{distro}-{cloud}-{type}-{stream}'
- job-template:
name: 'kubernetes-verify-{environment-type}-deploy-test-{distro}-{cloud}-{type}-{stream}'
project-type: multijob
disabled: '{obj:disabled}'
concurrent: true
parameters:
- string:
name: DEPLOY_SCENARIO
default: '{deploy-scenario}'
description: 'Scenario to test change with. This depends on the branch of the stack'
- string:
name: DISTRO
default: '{distro}'
description: 'Distribution to use for configuring target nodes (networking etc.)'
- label:
name: SLAVE_LABEL
default: 'engine-{slave-type}-{environment-type}-{distro}-fra'
description: 'Slave label to schedule this job on.'
- string:
name: HW_TYPE
default: '{type}'
description: 'Hardware type - could be virtual, cloud, or baremetal'
- string:
name: EXECUTION_MODE
default: '{execution-mode}'
description: 'Execution mode to run in'
- string:
name: PDF
default: '{pdf}'
description: 'PDF file to use for deployment'
- string:
name: IDF
default: '{idf}'
description: 'IDF file to use for deployment'
- string:
name: HEAT_STACK_NAME
default: "nordix-cicd-verify-kubernetes-{environment-type}-{distro}-$GERRIT_CHANGE_NUMBER"
description: 'Name of the created stack'
- string:
name: KEYPAIR_NAME
default: "keypair-nordix-cicd-verify-kubernetes-{environment-type}-{distro}-$GERRIT_CHANGE_NUMBER"
description: 'Name of the created keypair'
- string:
name: USE_PREBUILT_DEPLOYMENT_IMAGE
default: 'true'
description: 'Use prebuilt deployment image while running as part of CI/CD'
- string:
name: TEST_REPO_URL
default: 'https://gerrit.nordix.org/infra/test.git'
description: 'URL to clone the test repo from'
- string:
name: TEST_FW
default: 'functest'
description: 'Test framework to use'
- string:
name: TEST_SUITE
default: 'healthcheck'
description: 'Test suite to run'
- string:
name: YARDSTICK_DISPATCHER
default: 'file'
description: 'Dispatcher to use for Yardstick reporting'
- string:
name: DELETE_STACK
default: 'true'
description: 'Delete the stack upon completion of the build'
- string:
name: VERBOSITY
default: 'true'
description: 'Verbosity setting for the engine - true or false - default is false'
- string:
name: CI_LOOP
default: "verify"
description: 'CI loop the job belongs to'
- string:
name: ROOK_FS
default: 'true'
description: 'Whether to deploy csi-cephfs storageclass.'
- project-parameters:
project: $GERRIT_PROJECT
branch: '{branch}'
description: 'The project and branch which the change is proposed for'
- nordix-gerrit-parameters
properties:
- logrotate
# NOTE (fdegir): throttle categories are controlled in jenkins global configuration
- throttle:
enabled: true
max-per-node: 1
max-total: 8
option: category
categories:
- engine-verify-deploy-test
scm:
- git-scm-gerrit:
ssh-credentials-id: nordixinfra-nordix-gerrit-ssh
branch: $GERRIT_BRANCH
refspec: $GERRIT_REFSPEC
wipe_workspace: true
clean_before: false
triggers:
- gerrit:
server-name: 'Nordix Gerrit'
trigger-on:
- patchset-created-event:
exclude-drafts: 'false'
exclude-trivial-rebase: 'false'
exclude-no-code-change: 'false'
- draft-published-event
- comment-added-contains-event:
comment-contains-value: 'recheck'
- comment-added-contains-event:
comment-contains-value: 'reverify'
projects:
- project-compare-type: 'REG_EXP'
project-pattern: '{gated-projects}'
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**/{branch}'
disable-strict-forbidden-file-verification: 'true'
forbidden-file-paths:
- compare-type: ANT
pattern: 'docs/**|releasenotes/**'
skip-vote:
successful: '{obj:successful}'
failed: '{obj:failed}'
unstable: '{obj:unstable}'
notbuilt: '{obj:notbuilt}'
custom-url: '* $JOB_NAME $BUILD_URL'
readable-message: 'true'
dependency-jobs: '{dependency-jobs}'
wrappers:
- build-timeout:
timeout: 180
- credentials-binding:
- file:
credential-id: '{openrc-credentials-file}'
variable: OPENRC_FILE
- username-password-separated:
credential-id: 'nordix-cicd-arm-credentials'
username: NORDIX_ARM_USERNAME
password: NORDIX_ARM_TOKEN
- mask-passwords
- openstack:
single-use: True
- pre-scm-buildstep:
failOnError: true
buildsteps:
- system-groovy:
command: |
def build = this.getProperty('binding').getVariable('build')
def listener = this.getProperty('binding').getVariable('listener')
if (build.getEnvironment(listener).{dependency-job-var} != "SUCCESS") {{
println "WARN : Aborting build since dependent job did not succeed!"
throw new InterruptedException()
}}
- shell: |
#!/bin/bash
sudo chown -R $USER:$USER $WORKSPACE || exit 1
# offline nodes can not resolve Nordix Artifactory and Gerrit
if [[ "$EXECUTION_MODE" == "offline-deployment" ]]; then
echo "Info : Offline deployment. Adding City OpenStack Endpoint, Nordix Artifactory and Gerrit Public IP to /etc/hosts"
sudo sed -i 's/^search/# search/' /etc/resolv.conf
sudo bash -c "cat << EOF >> /etc/hosts
# managed by engine
91.106.198.25 artifactory.nordix.org
91.106.198.142 gerrit.nordix.org
86.107.242.50 fra1.citycloud.com
# managed by engine
EOF"
# we need to get rid of search domain as well
sudo sed -i 's/^search/# search/' /etc/resolv.conf
fi
- ssh-agent-credentials:
users:
- 'nordixinfra-nordix-gerrit-ssh'
builders:
- 'generate-change-metadata-macro'
- multijob:
name: "{environment-type} deployment on {type} instances"
condition: SUCCESSFUL
execution-type: PARALLEL
projects:
- name: 'kubernetes-verify-{environment-type}-deploy-{distro}-city-{type}-{stream}'
current-parameters: true
git-revision: true
node-parameters: true
kill-phase-on: FAILURE
abort-all-job: false
property-file: $WORKSPACE/change.properties
- multijob:
name: "{environment-type} testing on {type} instances"
condition: SUCCESSFUL
execution-type: PARALLEL
projects:
- name: 'kubernetes-verify-{environment-type}-functest-{distro}-city-{type}-{stream}'
current-parameters: true
git-revision: false
node-parameters: true
kill-phase-on: FAILURE
abort-all-job: false
property-file: $WORKSPACE/change.properties
publishers:
- postbuildscript:
builders:
- role: SLAVE
build-on:
- SUCCESS
- FAILURE
- ABORTED
- NOT_BUILT
- UNSTABLE
build-steps:
- 'wait-pkg-mgr-macro'
- 'delete-stack-macro'
- job-template:
name: 'kubernetes-verify-{environment-type}-{phase}-{distro}-{cloud}-{type}-{stream}'
disabled: '{obj:disabled}'
concurrent: true
properties:
- logrotate
- throttle:
max-per-node: 1
max-total: 3
option: project
scm:
- git-scm-gerrit:
ssh-credentials-id: nordixinfra-nordix-gerrit-ssh
branch: $GERRIT_BRANCH
refspec: $GERRIT_REFSPEC
wipe_workspace: true
clean_before: false
wrappers:
- build-timeout:
timeout: 180
- credentials-binding:
- file:
credential-id: '{openrc-credentials-file}'
variable: OPENRC_FILE
- username-password-separated:
credential-id: 'nordix-cicd-arm-credentials'
username: NORDIX_ARM_USERNAME
password: NORDIX_ARM_TOKEN
- mask-passwords
- fix-workspace-permissions
builders:
- 'generate-ssh-keypair-macro'
- 'wait-pkg-mgr-macro'
- 'download-{phase}-artifact-macro'
- '{phase}-macro'