Newer
Older
variables:
DOCKER_TLS_CERTDIR: "" # HACK: see https://gitlab.com/gitlab-org/gitlab-runner/issues/4501
stages:
# TODO: maybe stup some notifications as a last stage?
#==[ JOB TEMPLATES ]============================================================
cache:
key:
files:
- frontend/package-lock.json
paths:
- frontend/.npm/
- npm ci --cache .npm --prefer-offline --production=false
#==[ SETUP STAGE ]==============================================================
#--[ Frontend ]-----------------------------------------------------------------
#--[ Backend ]------------------------------------------------------------------
#--[ Cetera ]-------------------------------------------------------------------
- GIT_DESCRIPTOR=$(git describe --tags --always)
- echo Detected app version ${GIT_DESCRIPTOR}
- echo "APP_VERSION=${GIT_DESCRIPTOR#v}" >> build.env
artifacts:
reports:
dotenv: build.env
only:
#==[ CHECK STAGE ]==============================================================
#--[ Frontend ]-----------------------------------------------------------------
#--[ Backend ]------------------------------------------------------------------
#==[ BUILD STAGE ]==============================================================
#--[ Frontend ]-----------------------------------------------------------------
ROLLBAR_ACCESS_TOKEN: $POST_CLIENT_ITEM_ROLLBAR_ACCESS_TOKEN
- npm run build -- --dist-dir dist/prd
extends: .fe-node-job
stage: build
variables:
NODE_ENV: staging
ROLLBAR_ACCESS_TOKEN: $POST_CLIENT_ITEM_ROLLBAR_ACCESS_TOKEN
- npm run build -- --dist-dir dist/stg
artifacts:
paths:
- frontend/dist/stg
expire_in: 1 week
only:
#--[ Backend ]------------------------------------------------------------------
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
variables:
IMAGE_NAME: $CI_REGISTRY_IMAGE/backend
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"${CI_REGISTRY}\":{\"auth\":\"$(printf "%s:%s" "${CI_REGISTRY_USER}" "${CI_REGISTRY_PASSWORD}" | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.json
prd-be-build-job:
extends: .be-build-job
stage: build
script: >-
/kaniko/executor
--context "${CI_PROJECT_DIR}/backend"
--dockerfile "${CI_PROJECT_DIR}/backend/Dockerfile"
--target production
--destination ${CI_REGISTRY_IMAGE}/backend:latest
--destination ${CI_REGISTRY_IMAGE}/backend:${APP_VERSION}
--destination ${CI_REGISTRY_IMAGE}/backend:${APP_VERSION%.*}
--destination ${CI_REGISTRY_IMAGE}/backend:${APP_VERSION%%.*}
--destination ${CI_REGISTRY_IMAGE}/backend:${CI_COMMIT_SHA}
--build-arg APP_VERSION=$APP_VERSION
--build-arg ROLLBAR_ACCESS_TOKEN=$POST_SERVER_ITEM_ROLLBAR_ACCESS_TOKEN
stg-be-build-job:
extends: .be-build-job
stage: build
script: >-
/kaniko/executor
--context "${CI_PROJECT_DIR}/backend"
--dockerfile "${CI_PROJECT_DIR}/backend/Dockerfile"
--target production
--destination ${CI_REGISTRY_IMAGE}/backend:${CI_COMMIT_REF_NAME}
--destination ${CI_REGISTRY_IMAGE}/backend:${APP_VERSION}
--destination ${CI_REGISTRY_IMAGE}/backend:${CI_COMMIT_SHA}
--build-arg APP_VERSION=$APP_VERSION
--build-arg ROLLBAR_ACCESS_TOKEN=$POST_SERVER_ITEM_ROLLBAR_ACCESS_TOKEN
only:
#==[ DEPLOY STAGE ]=============================================================
#--[ Frontend ]-----------------------------------------------------------------
.fe-deploy-job:
# tags:
# - shared
# - commul # NOTE: we used to require commul because extended seccomp policies are needed
url: https://eurac.itch.io/oetzit-staging
#--[ Backend ]------------------------------------------------------------------
- kubectl set image deployment/${K8S_DEPLOYMENT} oetzit=${IMAGE_NAME}:${APP_VERSION} --namespace=${K8S_NAMESPACE}
needs:
- app-tagger-job
- job: prd-be-build-job
artifacts: false
K8S_DEPLOYMENT: oetzit-webserver-deployment
needs:
- app-tagger-job
- job: stg-be-build-job
artifacts: false
K8S_DEPLOYMENT: oetzit-webserver-deployment