Skip to content
Snippets Groups Projects
.gitlab-ci.yml 3.5 KiB
Newer Older
Bo-Chun Chen's avatar
Bo-Chun Chen committed
image:
  name: docker:20.10.17
Bo-Chun Chen's avatar
Bo-Chun Chen committed

variables:
  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: "true"
Bo-Chun Chen's avatar
Bo-Chun Chen committed
  PKR_VAR_ssh_username: "centos"
  PKR_VAR_networks: '["ec11e2be-8fac-46cf-8fa2-9dffb74ba5df"]'
  GIT_AUTHOR_NAME: "Gitlab runner"
  GIT_AUTHOR_EMAIL: "gitlab@runner"
Bo-Chun Chen's avatar
Bo-Chun Chen committed

stages:
  - build
Bo-Chun Chen's avatar
Bo-Chun Chen committed
  - deploy
Bo-Chun Chen's avatar
Bo-Chun Chen committed

Bo-Chun Chen's avatar
Bo-Chun Chen committed
build_image:
  image: $CI_REGISTRY_IMAGE:latest
Bo-Chun Chen's avatar
Bo-Chun Chen committed
  stage: build
Bo-Chun Chen's avatar
Bo-Chun Chen committed
  environment:
    name: knightly
Bo-Chun Chen's avatar
Bo-Chun Chen committed
  tags:
    - build
  script:
Bo-Chun Chen's avatar
Bo-Chun Chen committed
    - |
      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
        cd ..
      fi
    - cd CRI_XCBC
    - 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
    - git checkout -b integration
    - git merge upstream/dev
    - cd ..
    - export CRI_XCBC_HEAD=$(cd CRI_XCBC; git rev-parse --short HEAD)
    - echo CRI_XCBC_HEAD=${CRI_XCBC_HEAD} | tee -a $CI_PROJECT_DIR/image.env
    - export BUILD_DATE=$(TZ=America/Chicago date +%Y%m%d)
    - echo BUILD_DATE=${BUILD_DATE} | tee -a $CI_PROJECT_DIR/image.env
    - s3cmd get --force --host=$AWS_HOST --host-bucket=$AWS_HOST s3://ood-config/group_vars/all CRI_XCBC/group_vars/prod
Bo-Chun Chen's avatar
Bo-Chun Chen committed
    - s3cmd get --force -r --host=$AWS_HOST --host-bucket=$AWS_HOST s3://cheaha-cloud-ansible-files/ ansible/files/
Bo-Chun Chen's avatar
Bo-Chun Chen committed
    - tail -n 10 CRI_XCBC/group_vars/prod
    - 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}"
      packer build -machine-readable openstack-ood | tee ood_build.log
    - echo BUILT_OOD_IMAGE_ID=$(grep 'Image:' ood_build.log | awk '{print $4}') | tee -a $CI_PROJECT_DIR/image.env
  artifacts:
    reports:
      dotenv: image.env
Bo-Chun Chen's avatar
Bo-Chun Chen committed
deploy_knightly:
  image: $CI_REGISTRY_IMAGE:latest
Bo-Chun Chen's avatar
Bo-Chun Chen committed
  stage: deploy
  environment:
    name: knightly
  tags:
    - build
  script:
Bo-Chun Chen's avatar
Bo-Chun Chen committed
    - 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
      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
Bo-Chun Chen's avatar
Bo-Chun Chen committed
  only:
    - schedules
Bo-Chun Chen's avatar
Bo-Chun Chen committed

deploy_cheaha:
  stage: deploy
  environment:
    name: cheaha
  tags:
    - build
  script:
    - echo "Job placeholder to deploy to Cheaha"
  when: manual
  only:
    - main