Skip to content
Snippets Groups Projects
.gitlab-ci.yml 2.51 KiB
Newer Older
Bo-Chun Chen's avatar
Bo-Chun Chen committed
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: '["ssh-secgrp"]'
  PKR_VAR_skip_create_image: "false"
  PKR_VAR_ssh_username: "centos"
  PKR_VAR_networks: '["7ac7d980-20bc-4e53-8528-6809e139fdcc"]'
  PKR_VAR_build_instance_name: "ood-${CI_COMMIT_SHORT_SHA}"

cache:
  paths:
    - bin/
    - .cache/pip
    - venv/
    - CRI_XCBC/

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

setup_environment:
  stage: build
  tags:
    - build
  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
    - >
      if cd CRI_XCBC; then
        git checkout uab-prod; git pull;
        git fetch origin '+refs/pull/*/head:refs/remotes/origin/pr/*';
      else
        git clone https://github.com/uabrc/CRI_XCBC.git;
        cd CRI_XCBC;
Bo-Chun Chen's avatar
Bo-Chun Chen committed
        git remote add upstream https://github.com/jprorama/CRI_XCBC.git
Bo-Chun Chen's avatar
Bo-Chun Chen committed
      fi
Bo-Chun Chen's avatar
Bo-Chun Chen committed
      git fetch upstream;
      git checkout -b integration;
Bo-Chun Chen's avatar
Bo-Chun Chen committed
      git merge upstream/uab-dev;
Bo-Chun Chen's avatar
Bo-Chun Chen committed
    - s3cmd get --force --host=$AWS_HOST --host-bucket=$AWS_HOST s3://ood-config/group_vars/all CRI_XCBC/group_vars/all
    - s3cmd get --force -r --host=$AWS_HOST --host-bucket=$AWS_HOST s3://cheaha-cloud-ansible-files/ ansible/files/

validate:
  stage: build
  needs:
    - setup_environment
  tags:
    - build
  script:
    - source venv/bin/activate
    - $CI_PROJECT_DIR/bin/packer validate openstack

build_image:
  stage: build
  needs:
    - validate
  tags:
    - build
  script:
    - "sed -i 's/hosts:.*$/hosts: default/' CRI_XCBC/ood-packer.yaml"
    - cat CRI_XCBC/ood-packer.yaml
    - source venv/bin/activate
    - sed -i 's/\(\"--extra-vars\)/\"-vvv\", \1/' openstack/nodeimage.pkr.hcl
    - sed -i 's/inventory_file.*/extra_arguments=[\"-vvv\"]/' openstack/nodeimage.pkr.hcl
    - cat openstack/nodeimage.pkr.hcl
    - $CI_PROJECT_DIR/bin/packer build openstack

cleanup:
  when: always
  stage: cleanup
  tags:
    - build
  script:
    - >
      cd CRI_XCBC;
      git checkout uab-prod;
      git reset --hard;
      git branch -D integration;