poire.dev/.gitlab-ci.yml
2020-12-20 17:37:49 -05:00

192 lines
6 KiB
YAML

variables:
WEBSITE_SRC: ${CI_PROJECT_DIR}/website
INFRA_SRC: ${CI_PROJECT_DIR}/infra
TEAMSPEAK_SRC: ${CI_PROJECT_DIR}/teamspeak
DEFIANT_SRC: ${CI_PROJECT_DIR}/defiant
CHARTMUSEUM_SRC: ${CI_PROJECT_DIR}/chartmuseum
ABITIBI_SRC: ${CI_PROJECT_DIR}/abitibi
IMAGE_PREFIX: registry.gitlab.com/momothereal/momoperes.ca
WEBSITE_IMAGE: ${IMAGE_PREFIX}/website
DEFIANT_IMAGE: ${IMAGE_PREFIX}/defiant
ABITIBI_IMAGE: ${IMAGE_PREFIX}/abitibi
KUBECONFIG_PARENT: /etc/deploy
KUBECONFIG: ${KUBECONFIG_PARENT}/config
DEPLOY_NAMESPACE: public
stages:
- build
- release
- deploy
### WEBSITE ###
website:release:
stage: release
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
script:
- echo "Building to ${WEBSITE_IMAGE}:${CI_COMMIT_TAG}"
- echo "{\"auths\":{\"${CI_REGISTRY}\":{\"username\":\"${CI_REGISTRY_USER}\",\"password\":\"${CI_REGISTRY_PASSWORD}\"}}}" > /kaniko/.docker/config.json
- /kaniko/executor --context ${WEBSITE_SRC} --dockerfile ${WEBSITE_SRC}/docker/Dockerfile --destination ${WEBSITE_IMAGE}:${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA} --destination ${WEBSITE_IMAGE}:${CI_COMMIT_REF_SLUG}
only:
changes:
- website/**/*
website:deploy:
stage: deploy
image: wavyfm/helm-kubectl-docker:v1.18.8-v3.4.2
script:
- mkdir -p ${KUBECONFIG_PARENT}
- echo ${K8S_CLUSTER_CONFIG} | base64 -d > ${KUBECONFIG}
# Deploy using helm chart
- cd ${WEBSITE_SRC}
- helm upgrade --install --namespace ${DEPLOY_NAMESPACE} --set image.name=${WEBSITE_IMAGE},image.tag=${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA} website ./chart/website
only:
refs:
- master
changes:
- website/**/*
### ABITIBI ###
abitibi:release:
stage: release
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
script:
- echo "Building to ${ABITIBI_IMAGE}:${CI_COMMIT_TAG}"
- echo "{\"auths\":{\"${CI_REGISTRY}\":{\"username\":\"${CI_REGISTRY_USER}\",\"password\":\"${CI_REGISTRY_PASSWORD}\"}}}" > /kaniko/.docker/config.json
- /kaniko/executor --context ${ABITIBI_SRC} --dockerfile ${ABITIBI_SRC}/docker/Dockerfile --destination ${ABITIBI_IMAGE}:${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA} --destination ${ABITIBI_IMAGE}:${CI_COMMIT_REF_SLUG}
only:
changes:
- abitibi/**/*
abitibi:deploy:
stage: deploy
image: wavyfm/helm-kubectl-docker:v1.18.8-v3.4.2
script:
- mkdir -p ${KUBECONFIG_PARENT}
- echo ${K8S_CLUSTER_CONFIG} | base64 -d > ${KUBECONFIG}
# Deploy using helm chart
- cd ${ABITIBI_SRC}
- helm upgrade --install --namespace ${DEPLOY_NAMESPACE} --set image.name=${ABITIBI_IMAGE},image.tag=${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA} abitibi ./chart/abitibi
only:
refs:
- master
changes:
- abitibi/**/*
# INFRA #
infra:deploy:
stage: deploy
image: wavyfm/helm-kubectl-docker:v1.18.8-v3.4.2
script:
- mkdir -p ${KUBECONFIG_PARENT}
- echo ${K8S_CLUSTER_CONFIG} | base64 -d > ${KUBECONFIG}
# Deploy nginx ingress
# Note: Temporarily disabled due to issue with nginx-ingress and helm3 upgrades.
# - helm init --client-only && helm repo update
# - helm upgrade nginx-ingress stable/nginx-ingress --install --namespace ${DEPLOY_NAMESPACE} --set controller.publishService.enabled=true
# Deploy infra manifests directly
- cd ${INFRA_SRC}/
- kubectl apply --namespace ${DEPLOY_NAMESPACE} -R -f manifests/
only:
refs:
- master
changes:
- infra/**/*
# TEAMSPEAK #
teamspeak:deploy:
stage: deploy
image: wavyfm/helm-kubectl-docker:v1.18.8-v3.4.2
script:
- mkdir -p ${KUBECONFIG_PARENT}
- echo ${K8S_CLUSTER_CONFIG} | base64 -d > ${KUBECONFIG}
# Deploy using helm chart
- cd ${TEAMSPEAK_SRC}/chart
- mkdir -p manifests/
- helm template teamspeak ./teamspeak/ --output-dir manifests/ -f ./teamspeak/values.yaml
- kubectl apply --namespace ${DEPLOY_NAMESPACE} -R -f manifests/
only:
refs:
- master
changes:
- teamspeak/**/*
# DEFIANT #
#defiant:build:
# stage: build
# image: debian
# script:
# - apt-get update && apt-get install -y git
# - cd ${DEFIANT_SRC}/src
# - git clone https://github.com/momothereal/code-jam-2.git defiant
# - cp main_config.yaml defiant/config/main_config.yaml
# artifacts:
# paths:
# - ${DEFIANT_SRC}/src
# only:
# changes:
# - defiant/**/*
#defiant:release:
# stage: release
# image:
# name: gcr.io/kaniko-project/executor:debug
# entrypoint: [""]
# script:
# - echo "Building to ${DEFIANT_IMAGE}:${CI_COMMIT_TAG}"
# - echo "{\"auths\":{\"${CI_REGISTRY}\":{\"username\":\"${CI_REGISTRY_USER}\",\"password\":\"${CI_REGISTRY_PASSWORD}\"}}}" > /kaniko/.docker/config.json
# - /kaniko/executor --context ${DEFIANT_SRC}/src/defiant --dockerfile ${DEFIANT_SRC}/src/defiant/Dockerfile --destination ${DEFIANT_IMAGE}:${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA} --destination ${DEFIANT_IMAGE}:${CI_COMMIT_REF_SLUG}
# only:
# changes:
# - defiant/**/*
#defiant:deploy:
# stage: deploy
# image: wavyfm/helm-kubectl-docker:v1.18.8-v3.4.2
# script:
# - mkdir -p ${KUBECONFIG_PARENT}
# - echo ${K8S_CLUSTER_CONFIG} | base64 -d > ${KUBECONFIG}
#
# # Deploy using helm chart
# - cd ${DEFIANT_SRC}
# - helm init --client-only && helm repo update
# - helm upgrade --install --force --namespace ${DEPLOY_NAMESPACE} --set image.name=${DEFIANT_IMAGE},image.tag=${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA} defiant ./chart/defiant
# only:
# refs:
# - master
# changes:
# - defiant/**/*
# CHART MUSEUM #
chartmuseum:deploy:
stage: deploy
image: wavyfm/helm-kubectl-docker:v1.18.8-v3.4.2
script:
- mkdir -p ${KUBECONFIG_PARENT}
- echo ${K8S_CLUSTER_CONFIG} | base64 -d > ${KUBECONFIG}
# Deploy using helm chart
- cd ${CHARTMUSEUM_SRC}
- helm init --client-only && helm repo update
- helm upgrade --install --namespace ${DEPLOY_NAMESPACE} -f values.yaml chartmuseum stable/chartmuseum
only:
refs:
- master
changes:
- chartmuseum/**/*