diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 343a0d6d955dbc36ed4e82fb5591fb2d7cc1d97c..0251ff926d4f492e45f6ec0ae2bacb9a75e3785b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -18,7 +18,7 @@ variables: - oc project $OC_PROJECT # create job description file - chmod a+x create_job.sh - - ./create_job.sh $CI_PIPELINE_ID $BUILD_ENV_DOCKER_IMAGE update $INSTALLATION_ROOT $SPACK_VERSION $SPACK_ENV $CI_COMMIT_BRANCH $RELEASE_NAME $LAB_KERNEL_ROOT + - ./create_job.sh $CI_PIPELINE_ID $BUILD_ENV_DOCKER_IMAGE $INSTALLATION_ROOT $SPACK_VERSION $SPACK_ENV $CI_COMMIT_BRANCH $RELEASE_NAME $LAB_KERNEL_ROOT - cat simplejob.yml # start the deploy job - oc create -f simplejob.yml diff --git a/create_job.sh b/create_job.sh index dffe9131df8b0c817004541dbc5669f60699d374..9768515866c0cd588f5ea241d57d9cbb29993b9c 100644 --- a/create_job.sh +++ b/create_job.sh @@ -2,20 +2,19 @@ # =========================================================================================================== # title : create_job.sh -# usage : ./create_job.sh $OC_JOB_ID $BUILD_ENV_DOCKER_IMAGE $OP $INSTALLATION_ROOT $SPACK_VERSION +# usage : ./create_job.sh $OC_JOB_ID $BUILD_ENV_DOCKER_IMAGE $INSTALLATION_ROOT $SPACK_VERSION # $SPACK_ENV $BRANCH $RELEASE_NAME $LAB_KERNEL_ROOT # description : creates OKD job yaml file that builds/updates spack environment and creates Lab kernel # =========================================================================================================== OC_JOB_ID=$1 BUILD_ENV_DOCKER_IMAGE=$2 -OP=$3 -INSTALLATION_ROOT=$4 -SPACK_VERSION=$5 -SPACK_ENV=$6 -BRANCH=$7 -RELEASE_NAME=$8 -LAB_KERNEL_ROOT=$9 +INSTALLATION_ROOT=$3 +SPACK_VERSION=$4 +EBRAINS_SPACK_ENV=$5 +BRANCH=$6 +RELEASE_NAME=$7 +LAB_KERNEL_ROOT=$8 cat <<EOT >> simplejob.yml apiVersion: batch/v1 @@ -37,20 +36,54 @@ spec: volumeMounts: - name: sharedbin mountPath: /srv - command: ["/usr/local/bin/deploy-build-env.sh", "$OP", "$INSTALLATION_ROOT", "$SPACK_VERSION", "$SPACK_ENV", "$BRANCH", "$RELEASE_NAME", "$LAB_KERNEL_ROOT"] + command: + - /bin/bash + - -c + - | + # create root dir if it doesn't exist + mkdir -p \$INSTALLATION_ROOT + + # reset build error log dir (delete previous logs to save space) + rm -rf \$BUILD_LOGS_DIR + mkdir -p \$BUILD_LOGS_DIR + + # reset spack repository dir by cloning the selected version + rm -rf \$EBRAINS_REPO_PATH + git clone https://gitlab.ebrains.eu/technical-coordination/project-internal/devops/platform/ebrains-spack-builds.git --branch \$BRANCH \$EBRAINS_REPO_PATH + + # run installation script + . \$EBRAINS_REPO_PATH/install_spack_env.sh \$INSTALLATION_ROOT \$SPACK_VERSION \$EBRAINS_REPO_PATH \$EBRAINS_SPACK_ENV + + if [ \$? -eq 0 ] + then + # build process succeeded - create or update kernel on the NFS based on the current spack environment + chmod +x \$EBRAINS_REPO_PATH/create_JupyterLab_kernel.sh + \$EBRAINS_REPO_PATH/create_JupyterLab_kernel.sh \$INSTALLATION_ROOT \$EBRAINS_SPACK_ENV \$RELEASE_NAME \$LAB_KERNEL_ROOT + exit 0 + else + # build process failed - keep spack build logs and fail the pipeline + cp -r /tmp/spack/spack-stage/* \$SPACK_BUILD_LOGS + exit + fi env: - name: SYSTEMNAME value: ebrainslab - - name: GITLAB_USER - valueFrom: - secretKeyRef: - name: spack-repo-gitlab-token - key: username - - name: GITLAB_TOKEN - valueFrom: - secretKeyRef: - name: spack-repo-gitlab-token - key: password + - name: INSTALLATION_ROOT + value: $INSTALLATION_ROOT + - name: SPACK_VERSION + value: $SPACK_VERSION + - name: EBRAINS_SPACK_ENV + value: $EBRAINS_SPACK_ENV + - name: BRANCH + value: $BRANCH + - name: RELEASE_NAME + value: $RELEASE_NAME + - name: LAB_KERNEL_ROOT + value: $LAB_KERNEL_ROOT + - name: BUILD_LOGS_DIR + value: /srv/build_logs/$EBRAINS_SPACK_ENV + - name: EBRAINS_REPO_PATH + value: $INSTALLATION_ROOT/ebrains-spack-builds volumes: - name: sharedbin persistentVolumeClaim: