Skip to content
Snippets Groups Projects
.gitlab-ci.yml 1.94 KiB
Newer Older
Athanasios Karmas's avatar
Athanasios Karmas committed
stages:
  - upload
  - deploy
Athanasios Karmas's avatar
Athanasios Karmas committed

variables:
  OPENSHIFT_SERVER: https://okd-dev.hbp.eu
  BUILD_ENV: test-build
  OP: update
  #SWIFT_FILE: ebrains-spack-builds${CI_PIPELINE_ID}.tar.gz
  SWIFT_FILE: ebrains-spack-builds.tar.gz
copy-files-to-swift:
  stage: upload
  script:
    - 'curl -H "X-Auth-Token: ${OS_TOKEN}" -X DELETE ${OBJSTORE}ebrains-spack-builds.tar.gz > curl_log.txt'
    - if [ $(cat curl_log.txt | grep "Unauthorized" |wc -l) -gt 0 ]; then echo "You need to refresh OpenStack token"; exit 1;fi;
    - tar czf ${SWIFT_FILE} packages/ repo.yaml spack.yaml
    - 'curl -H "X-Auth-Token: ${OS_TOKEN}" -i ${OBJSTORE} -X PUT -T ${SWIFT_FILE}'
  tags:
    - shell-runner
deploy-build-environment:
  stage: deploy
  before_script:
    - oc login "$OPENSHIFT_SERVER" --token="$OPENSHIFT_TOKEN"
  script:
    # create job description file
    - chmod a+x create_job.sh
    - ./create_job.sh $BUILD_ENV $OP $SWIFT_FILE $CI_PIPELINE_ID
Athanasios Karmas's avatar
Athanasios Karmas committed
    - cat simplejob.yml
    # select the project in openshift
    - oc project jupyterhub-int
    # start the deploy job
Athanasios Karmas's avatar
Athanasios Karmas committed
    - oc create -f simplejob.yml
    # wait for job to finish https://stackoverflow.com/questions/5073453wait-for-kubernetes-job-to-complete-on-either-failure-success-using-command-line
Athanasios Karmas's avatar
Athanasios Karmas committed
    - oc get job/simplejob${CI_PIPELINE_ID} -o=jsonpath='{.status}' -w && oc get job/simplejob${CI_PIPELINE_ID -o=jsonpath='{.status.conditions[*].type}' | grep -i -E 'failed|complete' || echo 'Failed'
    - while true; do x=$(oc get pods |grep simplejob${CI_PIPELINE_ID}|awk '{ print $3}');if [ $x != "Running" ]; then break; fi;done 
    # when build job finishes get the logs
    - oc logs jobs/simplejob${CI_PIPELINE_ID} | tee log.txt
    # if spack install has failed, fail the pipeline
Athanasios Karmas's avatar
Athanasios Karmas committed
    - if [ $(cat log.txt |grep ""|wc -l) -gt 1 ]; then exit 1;fi;
    # delete the job from OpenShift as we have the logs here
    #- oc delete job simplejob${CI_PIPELINE_ID} || true
  tags:
    - shell-runner