blob: 91d5efff40e17d12130417b3ad01013ef3ff00d6 [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: 'ironic-verify-provision'
project: 'ironic-verify-provision'
stream:
- 'master':
branch: '{stream}'
deploy-scenario: 'k8-multus-plugins'
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
type:
- virtual:
provisioner-type: 'bifrost'
slave-type: 'vpod'
gated-projects: 'infra/stack/ironic|infra/provisioner/bifrost'
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'
distro:
- ubuntu1804
- centos7
cloud:
- city:
openrc-credentials-file: 'est-jenkins-openrcfile-city-frankfurt-cicd'
dependency-jobs: 'ironic-verify-package-{distro}-{stream}'
dependency-job-var: 'TRIGGER_ironic_verify_package_{distro}_{stream}_BUILD_RESULT'
jobs:
- 'ironic-verify-{environment-type}-provision-{distro}-{cloud}-{type}-{stream}'
- job-template:
name: 'ironic-verify-{environment-type}-provision-{distro}-{cloud}-{type}-{stream}'
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}-ubuntu1804-fra'
description: 'Slave label to schedule this job on.'
- string:
name: STACK_TYPE
default: 'ironic'
description: 'Stack type to verify change with'
- 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-ironic-{environment-type}-{distro}-$GERRIT_CHANGE_NUMBER"
description: 'Name of the created stack'
- string:
name: KEYPAIR_NAME
default: "keypair-nordix-cicd-verify-ironic-{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'
- 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:
- fix-workspace-permissions
- 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
builders:
- 'generate-change-metadata-macro'
- inject:
properties-file: "$WORKSPACE/change.properties"
- 'generate-ssh-keypair-macro'
- 'download-deploy-artifact-macro'
- 'wait-pkg-mgr-macro'
- 'deploy-macro'
publishers:
- postbuildscript:
builders:
- role: SLAVE
build-on:
- SUCCESS
- FAILURE
- ABORTED
- NOT_BUILT
- UNSTABLE
build-steps:
- 'wait-pkg-mgr-macro'
- 'delete-stack-macro'