timeout: 30
builders:
+ - openrc-source-file-selector
- shell:
!include-raw: common/scripts/prepare_build_upload_image.sh
node: 'jenkins-master'
parameters:
+ - openstack-cloud-selector
- string:
name: STACK_NAME
default: ""
timeout: 30
builders:
+ - openrc-source-file-selector
- shell:
!include-raw: common/scripts/delete_heat_stack.sh
to: $CUSTOM_FLAVOR_NODE_COUNT
step: 1
predefined-parameters: |
+ OPENSTACK_ENVIRONMENT=${OPENSTACK_ENVIRONMENT}
HEAT_STACK_YAML=${CUSTOM_HEAT_STACK_YAML}
STACK_PREFIX=${STACK_PREFIX}
FLAVOR_NAME=${CUSTOM_FLAVOR_NAME}
to: $MOS_TEMPEST_NODE_COUNT
step: 1
predefined-parameters: |
+ OPENSTACK_ENVIRONMENT=${OPENSTACK_ENVIRONMENT}
HEAT_STACK_YAML=${HEAT_STACK_YAML}
STACK_PREFIX=${STACK_PREFIX}
FLAVOR_NAME=mos.tempest
to: $MOS_HUGE_NODE_COUNT
step: 1
predefined-parameters: |
+ OPENSTACK_ENVIRONMENT=${OPENSTACK_ENVIRONMENT}
HEAT_STACK_YAML=${HEAT_STACK_YAML}
STACK_PREFIX=${STACK_PREFIX}
FLAVOR_NAME=mos.fuel.huge
to: $MOS_BASE_NODE_COUNT
step: 1
predefined-parameters: |
+ OPENSTACK_ENVIRONMENT=${OPENSTACK_ENVIRONMENT}
HEAT_STACK_YAML=${HEAT_STACK_YAML}
STACK_PREFIX=${STACK_PREFIX}
FLAVOR_NAME=mos.fuel.base
node: 'jenkins-master'
parameters:
+ - openstack-cloud-selector
- choice:
name: HEAT_STACK_YAML
choices:
builders:
- gerrit-review-last-refspec
+ - openrc-source-file-selector
- shell:
!include-raw: common/scripts/deploy_heat_stack.sh
node: 'jenkins-master'
parameters:
- - bool:
- name: ARE_YOU_SURE
- default: false
- description: |
- Just stub for missclick protection
+ - openstack-cloud-selector
wrappers:
- timestamps
timeout: 30
builders:
+ - openrc-source-file-selector
- shell:
!include-raw: common/scripts/drop_create_failed.sh
concurrent: false
node: 'jenkins-master'
parameters:
+ - openstack-cloud-selector
- string:
name: BUILD_IMAGE_NAME
description: "Name of image to build - used for glance"
- trigger-builds:
- project: "deploy-heat-stack"
predefined-parameters: |
+ OPENSTACK_ENVIRONMENT=${OPENSTACK_ENVIRONMENT}
HEAT_STACK_YAML=maintenance-ci/common/data/jenkins-slave.yml
STACK_PREFIX=image-builder
FLAVOR_NAME=dev.cmn
- trigger-builds:
- project: "delete-heat-stack"
predefined-parameters: |
+ OPENSTACK_ENVIRONMENT=${OPENSTACK_ENVIRONMENT}
STACK_PREFIX=image-builder
block: true
node: 'jenkins-master'
parameters:
+ - openstack-cloud-selector
- string:
name: IMAGE_NAME
description: "Name of image WITHOUT 'staging' - used for glance"
timeout: 30
builders:
+ - openrc-source-file-selector
- shell:
!include-raw: common/scripts/promote_staging_image.sh
--- /dev/null
+- parameter:
+ name: openstack-cloud-selector
+ parameters:
+ - choice:
+ name: OPENSTACK_ENVIRONMENT
+ choices:
+ - US
+ - EU
+
+- wrapper:
+ name: openstack-creds
+ wrappers:
+ - credentials-binding:
+ - file:
+ credential-id: maintenance-ci-openrc-password-free
+ variable: OPENRC_FILE
+ - file:
+ credential-id: maintenance-team-openrc-eu-robot-no-password
+ variable: EU_OPENRC_FILE
+ - file:
+ credential-id: maintenance-team-openrc-us-robot-no-password
+ variable: US_OPENRC_FILE
+ - username-password-separated:
+ credential-id: maintenance-ci-robot-password
+ username: OS_USERNAME
+ password: OS_PASSWORD
+
+- builder:
+ name: openrc-source-file-selector
+ builders:
+ - conditional-step:
+ condition-kind: strings-match
+ condition-string1: $OPENSTACK_ENVIRONMENT
+ condition-string2: EU
+ condition-case-insensitive: true
+ steps:
+ - inject:
+ properties-file: ${EU_OPENRC_FILE}
+ - conditional-step:
+ condition-kind: strings-match
+ condition-string1: $OPENSTACK_ENVIRONMENT
+ condition-string2: US
+ condition-case-insensitive: true
+ steps:
+ - inject:
+ properties-file: ${US_OPENRC_FILE}
name: mos-jenkins-swarm-params
parameters:
+ - openstack-cloud-selector
- string:
name: HEAT_STACK_YAML
description: "Stack yaml file"
+++ /dev/null
-- wrapper:
- name: openstack-creds
- wrappers:
- - credentials-binding:
- - file:
- credential-id: maintenance-ci-openrc-password-free
- variable: OPENRC_FILE
- - username-password-separated:
- credential-id: maintenance-ci-robot-password
- username: OS_USERNAME
- password: OS_PASSWORD
\ No newline at end of file
function delete_stack() {
if [[ -z "${VIRTUAL_ENV}" ]]; then
source "${OPENSTACK_CLIENTS_VENV}"/bin/activate
- source "${OPENRC_FILE?}"
+ echo "Using ${OS_AUTH_URL?} endpoint"
fi
set +e
eval $(openstack stack output show $1 floating_ip -f shell)
}
source "${OPENSTACK_CLIENTS_VENV}"/bin/activate
- source "${OPENRC_FILE?}"
+ echo "Using ${OS_AUTH_URL?} endpoint"
if [[ ! -z "${STACK_NAME}" ]] ; then
delete_stack ${STACK_NAME}
set +x
source "${OPENSTACK_CLIENTS_VENV}"/bin/activate
set -x
- source "${OPENRC_FILE?}"
+ echo "Using ${OS_AUTH_URL?} endpoint"
openstack stack create --wait -t ${HEAT_STACK_YAML} --parameter "${parameter_string}" ${STACK_NAME}
openstack stack output show "${STACK_NAME}" --all
cat >stack_data.sh <<EOF
+++ /dev/null
-#!/bin/bash
-
-set -ex
-
-if [ ! -z ${GERRIT_REVIEW} ] ; then
-refspec=$(curl "https://review.fuel-infra.org/changes/?q=${GERRIT_REVIEW}&o=CURRENT_REVISION" | grep '"ref":' | awk -F ": " '{print $2}' | tr -d '"')
-git fetch https://review.fuel-infra.org/tools/sustaining "${refspec}" && git cherry-pick -n FETCH_HEAD
-fi
-
-OPENSTACK_CLIENTS_VENV="${OPENSTACK_CLIENTS_VENV:-/home/jenkins/venv-openstack-clients}"
-
-if [[ ! -d "${OPENSTACK_CLIENTS_VENV}" ]] ; then
- virtualenv "${OPENSTACK_CLIENTS_VENV}"
- source "${OPENSTACK_CLIENTS_VENV}"/bin/activate
- pip install openstackclient
- deactivate
-fi
-
-function deploy_stacks() {
- FLAVOR_NAME=$1
- IMAGE_NAME=$2
- JENKINS_LABELS=$3
- parameter_string=""
- if [[ ! -z "${FLAVOR_NAME}" ]] ; then
- parameter_string="$parameter_string --parameter \"flavor=${FLAVOR_NAME}\""
- fi
- if [[ ! -z "${IMAGE_NAME}" ]] ; then
- parameter_string="$parameter_string --parameter \"image=${IMAGE_NAME}\""
- fi
- if [[ ! -z "${JENKINS_LABELS}" ]] ; then
- parameter_string="$parameter_string --parameter \"jenkins_labels=${JENKINS_LABELS}\""
- fi
-
- # MAC OS compatibility, for manual usage
- if command -v md5sum ; then
- md5_cmd="md5sum"
- else
- md5_cmd="md5"
- fi
-
- STACK_NAME="${STACK_PREFIX:-swarm_slave}_$(date +%s | "${md5_cmd}" | head -c 4)"
-
- set +x
- source "${OPENSTACK_CLIENTS_VENV}"/bin/activate
- set -x
- source "${OPENRC_FILE?}"
- echo "openstack stack create --wait -t ${HEAT_STACK_YAML} ${parameter_string} ${STACK_NAME}" | bash -
- openstack stack output show "${STACK_NAME}" --all
- deactivate
-}
-
-for (( node = 0; node < ${CUSTOM_FLAVOR_NODE_COUNT}; ++node )); do
- deploy_stacks "${CUSTOM_FLAVOR_NAME}" "${IMAGE_NAME}" "${CUSTOM_FLAVOR_JENKINS_LABELS}"
-done
-for (( node = 0; node < ${MOS_TEMPEST_NODE_COUNT}; ++node )); do
- deploy_stacks mos.tempest "${IMAGE_NAME}" "${JENKINS_LABELS}"
-done
-for (( node = 0; node < ${MOS_HUGE_NODE_COUNT}; ++node )); do
- deploy_stacks mos.fuel.huge "${IMAGE_NAME}" "${JENKINS_LABELS}"
-done
-for (( node = 0; node < ${MOS_BASE_NODE_COUNT}; ++node )); do
- deploy_stacks mos.fuel.base "${IMAGE_NAME}" "${JENKINS_LABELS}"
-done
fi
source "${OPENSTACK_CLIENTS_VENV}"/bin/activate
- source "${OPENRC_FILE?}"
+ echo "Using ${OS_AUTH_URL?} endpoint"
for stack in $(openstack stack list --property "stack_status=CREATE_FAILED" -c 'Stack Name' -f value) ; do
openstack stack delete -y "${stack}"
fi
set +x
-source "${OPENRC_FILE?}"
OPENSTACK_CLIENTS_VENV="${OPENSTACK_CLIENTS_VENV:-/home/jenkins/venv-openstack-clients}"
if [[ ! -d "${OPENSTACK_CLIENTS_VENV}" ]] ; then
pip install virtualenv
source "${OPENSTACK_CLIENTS_VENV}"/bin/activate
set -x
+echo "Using ${OS_AUTH_URL?} endpoint"
openstack image delete "${GLANCE_IMAGE_NAME}" || true
openstack image create --min-disk 6 --disk-format qcow2 --container-format bare --file xenial-server-cloudimg-amd64-disk1.img "${GLANCE_IMAGE_NAME}"
deactivate
\ No newline at end of file
GLANCE_IMAGE_NAME="${IMAGE_NAME?}"
set +x
-source "${OPENRC_FILE?}"
+echo "Using ${OS_AUTH_URL?} endpoint"
+
OPENSTACK_CLIENTS_VENV="${OPENSTACK_CLIENTS_VENV:-/home/jenkins/venv-openstack-clients}"
if [[ ! -d "${OPENSTACK_CLIENTS_VENV}" ]] ; then
pip install virtualenv