Skip to content
Snippets Groups Projects
Commit 19e5a790 authored by Bo-Chun Chen's avatar Bo-Chun Chen
Browse files

Merge branch 'feat-PR-image-instance' into 'main'

Keep PR images and instances

Closes #62

See merge request rc/packer-openstack-hpc-image!40
parents 42f5fb2f 2e258047
No related branches found
No related tags found
1 merge request!40Keep PR images and instances
Pipeline #7682 passed with stages
in 20 minutes and 20 seconds
...@@ -32,6 +32,11 @@ stages: ...@@ -32,6 +32,11 @@ stages:
- test - test
- deploy - deploy
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
- if: $CI_PIPELINE_SOURCE == 'schedule'
build_image: build_image:
image: $CI_REGISTRY_IMAGE:latest image: $CI_REGISTRY_IMAGE:latest
stage: build stage: build
...@@ -76,10 +81,21 @@ build_image: ...@@ -76,10 +81,21 @@ build_image:
- 'sed -i -E "s/(lts_access_key: ).*/\1\"${AWS_ACCESS_KEY_ID}\"/" CRI_XCBC/group_vars/knightly' - 'sed -i -E "s/(lts_access_key: ).*/\1\"${AWS_ACCESS_KEY_ID}\"/" CRI_XCBC/group_vars/knightly'
- 'sed -i -E "s/(lts_secret_key: ).*/\1\"${AWS_SECRET_ACCESS_KEY}\"/" CRI_XCBC/group_vars/knightly' - 'sed -i -E "s/(lts_secret_key: ).*/\1\"${AWS_SECRET_ACCESS_KEY}\"/" CRI_XCBC/group_vars/knightly'
- packer validate openstack-ood - packer validate openstack-ood
- |
if [ $CI_PIPELINE_SOURCE == 'merge_request_event' ]; then
export PKR_VAR_image_name="ood-PR-${CI_MERGE_REQUEST_IID}"
echo OOD_INSTANCE_NAME="ood-PR-${CI_MERGE_REQUEST_IID}" | tee -a $CI_PROJECT_DIR/image.env
export FLOATING_IP=$(openstack floating ip create uab-campus -f value -c floating_ip_address)
echo FLOATING_IP=$FLOATING_IP | tee -a $CI_PROJECT_DIR/image.env
sed -i -E "s/(ood_servername: ).*/\1\"$CI_COMMIT_REF_SLUG.$FLOATING_IP.nip.io\"/" CRI_XCBC/group_vars/knightly
elif [ $CI_PIPELINE_SOURCE == 'schedule' ]; then
export PKR_VAR_image_name="ood-${BUILD_DATE}"
echo OOD_INSTANCE_NAME="ood-knightly" | tee -a $CI_PROJECT_DIR/image.env
echo FLOATING_IP=$TEST_IP | tee -a $CI_PROJECT_DIR/image.env
fi
- > - >
PKR_VAR_build_instance_name="ood-${CRI_XCBC_HEAD}" PKR_VAR_build_instance_name="ood-${CRI_XCBC_HEAD}"
PKR_VAR_image_date_suffix=false PKR_VAR_image_date_suffix=false
PKR_VAR_image_name="ood-${BUILD_DATE}"
packer build -machine-readable openstack-ood | tee ood_build.log packer build -machine-readable openstack-ood | tee ood_build.log
- export BUILT_OOD_IMAGE_ID=$(grep 'Image:' ood_build.log | awk '{print $4}') - export BUILT_OOD_IMAGE_ID=$(grep 'Image:' ood_build.log | awk '{print $4}')
- echo BUILT_OOD_IMAGE_ID=${BUILT_OOD_IMAGE_ID} | tee -a $CI_PROJECT_DIR/image.env - echo BUILT_OOD_IMAGE_ID=${BUILT_OOD_IMAGE_ID} | tee -a $CI_PROJECT_DIR/image.env
...@@ -100,7 +116,7 @@ test: ...@@ -100,7 +116,7 @@ test:
- echo $OLD_INSTANCE_IP - echo $OLD_INSTANCE_IP
- | - |
if [ ! -z $OLD_INSTANCE_IP ]; then if [ ! -z $OLD_INSTANCE_IP ]; then
export OLD_INSTANCE_ID=$(openstack server list --name ood-knightly --ip $OLD_INSTANCE_IP -c ID -f value) export OLD_INSTANCE_ID=$(openstack server list --name $OOD_INSTANCE_NAME --ip $OLD_INSTANCE_IP -c ID -f value)
fi fi
- echo OLD_INSTANCE_ID=$OLD_INSTANCE_ID | tee -a instance.env - echo OLD_INSTANCE_ID=$OLD_INSTANCE_ID | tee -a instance.env
- | - |
...@@ -127,23 +143,51 @@ test: ...@@ -127,23 +143,51 @@ test:
--user-data user_data.txt --user-data user_data.txt
--flavor m1.medium --flavor m1.medium
--wait --wait
ood-knightly) $OOD_INSTANCE_NAME)
- echo NEW_INSTANCE_ID=$NEW_INSTANCE_ID | tee -a instance.env - echo NEW_INSTANCE_ID=$NEW_INSTANCE_ID | tee -a instance.env
- openstack server add floating ip $NEW_INSTANCE_ID $TEST_IP - openstack server add floating ip $NEW_INSTANCE_ID $FLOATING_IP
- > - >
curl --retry 10 --retry-delay 20 --retry-connrefused https://knightly.rc.uab.edu/Shibboleth.sso/Metadata --resolve knightly.rc.uab.edu:443:$TEST_IP -kf curl --retry 10 --retry-delay 20 --retry-connrefused https://knightly.rc.uab.edu/Shibboleth.sso/Metadata --resolve knightly.rc.uab.edu:443:$FLOATING_IP -kf
|| (openstack server delete $NEW_INSTANCE_ID && openstack image delete $BUILT_OOD_IMAGE_ID && false) || (openstack server delete $NEW_INSTANCE_ID && openstack image delete $BUILT_OOD_IMAGE_ID && false)
- | - |
if [ $CI_PIPELINE_SOURCE = "schedule" ]; then if [ $CI_PIPELINE_SOURCE = "schedule" ]; then
openstack server remove floating ip $NEW_INSTANCE_ID $TEST_IP openstack server remove floating ip $NEW_INSTANCE_ID $FLOATING_IP
else
openstack server delete $NEW_INSTANCE_ID
openstack image delete $BUILT_OOD_IMAGE_ID
fi fi
artifacts: artifacts:
reports: reports:
dotenv: instance.env dotenv: instance.env
deploy_review:
image: $CI_REGISTRY_IMAGE:latest
stage: deploy
script:
- echo "Deploy Review App"
environment:
name: review/$CI_COMMIT_REF_SLUG
url: https://$CI_COMMIT_REF_SLUG.$FLOATING_IP.nip.io
on_stop: stop_review
auto_stop_in: 2 days
tags:
- build
rules:
- if: $CI_MERGE_REQUEST_ID
stop_review:
image: $CI_REGISTRY_IMAGE:latest
stage: deploy
script:
- openstack server delete $NEW_INSTANCE_ID
- openstack image delete $BUILT_OOD_IMAGE_ID
- openstack floating ip delete $FLOATING_IP
environment:
name: review/$CI_COMMIT_REF_SLUG
action: stop
tags:
- build
rules:
- if: $CI_MERGE_REQUEST_ID
when: manual
deploy_knightly: deploy_knightly:
image: $CI_REGISTRY_IMAGE:latest image: $CI_REGISTRY_IMAGE:latest
stage: deploy stage: deploy
...@@ -163,7 +207,7 @@ deploy_knightly: ...@@ -163,7 +207,7 @@ deploy_knightly:
openstack server add floating ip $NEW_INSTANCE_ID $CHEAHA_IP openstack server add floating ip $NEW_INSTANCE_ID $CHEAHA_IP
fi fi
- | - |
SERVER_TO_BE_DELETE=($(openstack server list --name ood-knightly --sort-column Image --sort-descending -f value -c ID | sed -n $(($NUM_SERVER_TO_KEEP+1))',$p')) SERVER_TO_BE_DELETE=($(openstack server list --name $OOD_INSTANCE_NAME --sort-column Image --sort-descending -f value -c ID | sed -n $(($NUM_SERVER_TO_KEEP+1))',$p'))
IMAGE_TO_BE_DELETE=($(openstack image list --sort-column Name --sort-descending -f value -c Name | grep -P '^ood-\d{8}$' | sed -n $(($NUM_IMAGE_TO_KEEP+1))',$p')) IMAGE_TO_BE_DELETE=($(openstack image list --sort-column Name --sort-descending -f value -c Name | grep -P '^ood-\d{8}$' | sed -n $(($NUM_IMAGE_TO_KEEP+1))',$p'))
for svr in ${SERVER_TO_BE_DELETE[@]}; do for svr in ${SERVER_TO_BE_DELETE[@]}; do
openstack server delete ${svr} openstack server delete ${svr}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment