Newer
Older
image:
name: python:3.6
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
ANSIBLE_REMOTE_TMP: "/tmp"
PKR_VAR_flavor: "m1.small"
PKR_VAR_source_image: "CentOS-7-x86_64-GenericCloud-2009"
PKR_VAR_floating_ip_network: "uab-campus"
PKR_VAR_security_groups: '["allow-ssh"]'
PKR_VAR_skip_create_image: "false"
PKR_VAR_ssh_username: "centos"
PKR_VAR_networks: '["ec11e2be-8fac-46cf-8fa2-9dffb74ba5df"]'
GIT_AUTHOR_NAME: "Gitlab runner"
GIT_AUTHOR_EMAIL: "gitlab@runner"
cache:
paths:
- bin/
- .cache/pip
- venv/
- CRI_XCBC/
before_script:
- |
if [ ! -f $CI_PROJECT_DIR/bin/packer ]; then
wget https://releases.hashicorp.com/packer/1.8.3/packer_1.8.3_linux_amd64.zip
unzip packer_1.8.3_linux_amd64.zip -d bin
rm -vf *.zip
fi
- $CI_PROJECT_DIR/bin/packer --version
- python --version
- python3 -m venv venv
- source venv/bin/activate
- pip install --upgrade pip
- pip install s3cmd ansible python-openstackclient
setup_environment:
stage: build
tags:
- build
script:
if [ ! -d $CI_PROJECT_DIR/CRI_XCBC ]; then
git clone https://github.com/uabrc/CRI_XCBC.git
cd CRI_XCBC
git remote add upstream https://github.com/jprorama/CRI_XCBC.git
- git config user.name "${GIT_AUTHOR_NAME}"
- git config user.email "${GIT_AUTHOR_EMAIL}"
- git fetch --all
- git fetch origin '+refs/pull/*/head:refs/remotes/origin/pr/*'
- git fetch upstream '+refs/pull/*/head:refs/remotes/upstream/pr/*'
- git checkout uab-prod
- git merge origin/uab-prod
- echo "CRI_XCBC_HEAD=$(git rev-parse --short HEAD)" >> $CI_PROJECT_DIR/build.env
- echo "BUILD_DATE=$(TZ=America/Chicago date +%Y%m%d)" >> $CI_PROJECT_DIR/build.env
- echo 'Build date:' $(TZ=America/Chicago date)
- s3cmd get --force --host=$AWS_HOST --host-bucket=$AWS_HOST s3://ood-config/group_vars/all CRI_XCBC/group_vars/prod
- s3cmd get --force -r --host=$AWS_HOST --host-bucket=$AWS_HOST s3://cheaha-cloud-ansible-files/ ansible/files/
artifacts:
reports:
dotenv: build.env
needs:
- setup_environment
tags:
- build
script:
- source venv/bin/activate
- $CI_PROJECT_DIR/bin/packer validate openstack-ood
- >
PKR_VAR_build_instance_name="ood-${CRI_XCBC_HEAD}"
PKR_VAR_image_date_suffix=false
PKR_VAR_image_name="ood-${BUILD_DATE}"
$CI_PROJECT_DIR/bin/packer build -machine-readable openstack-ood | tee ood_build.log
- echo BUILT_OOD_IMAGE_ID=$(grep 'Image:' ood_build.log | awk '{print $4}') | tee image.env
artifacts:
reports:
dotenv: image.env
deploy_knightly:
stage: deploy
environment:
name: knightly
tags:
- build
script:
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
- source venv/bin/activate
- OLD_INSTANCE_ID=$(openstack server list --name ood-knightly -c ID -f value)
- if [ ! -z $OLD_INSTANCE_ID ]; then openstack server delete $OLD_INSTANCE_ID; fi
- |
cat > user_data.txt << OEOF
#!/bin/bash
cat > /etc/resolv.conf << EOF
search openstack.internal cm.cluster rc.uab.edu ib.cluster drac.cluster eth.cluster ib-hdr.cluster
nameserver 172.20.0.25
EOF
ip route replace default via 10.250.0.3 dev eth0
ip route add 172.20.0.0/16 via 10.250.0.1 dev eth0
mount -a
OEOF
- >
NEW_INSTANCE_ID=$(openstack server create
-c id -f value --image $BUILT_OOD_IMAGE_ID
--network openstack-cheaha-internal
--security-group ood-https-ports
--security-group allow-ssh
--user-data user_data.txt
--flavor m1.medium
ood-knightly)
- |
if [ ! -z $NEW_INSTANCE_ID ]; then
openstack server add floating ip $NEW_INSTANCE_ID $CAMPUS_IP
openstack server add floating ip $NEW_INSTANCE_ID $CHEAHA_IP
fi
stage: cleanup
tags:
- build
script:
- cd CRI_XCBC
- git reset --hard
- git checkout uab-prod
- git branch -D integration || true