Personal_Website/.gitlab-ci.yml

88 lines
2.1 KiB
YAML

stages:
- "Install Dependencies"
- "Lint Code"
- "Build Docker Image"
- "Publish Docker Image"
- "Deploy"
"Install node_modules":
image: node:16
stage: "Install Dependencies"
script:
- yarn --frozen-lockfile
artifacts:
paths:
- node_modules/
"Lint JS":
image: node:16
stage: "Lint Code"
dependencies:
- "Install node_modules"
script:
- yarn lint --no-fix
"Build docker image":
image: docker:stable
stage: "Build Docker Image"
tags:
- docker
- hawkeye
dependencies:
- "Install node_modules"
- "Lint JS"
script:
# Add make support
- 'apk add --no-cache make'
# Build the image
- 'make build-container DOCKER_REPOSITORY=$REGISTRY_BASE_URL/$DOCKER_IMAGE_NAME DOCKER_TAG=$CI_COMMIT_SHA'
rules:
- if: '$REGISTRY_BASE_URL == null'
when: never
- if: '$DOCKER_IMAGE_NAME == null'
when: never
"Publish Docker Image":
image: docker:stable
stage: "Publish Docker Image"
tags:
- docker
- hawkeye
dependencies:
- "Build docker image"
script:
# Log in to the registry
- 'docker login -u=$REGISTRY_USER -p=$REGISTRY_PASSWORD $REGISTRY_BASE_URL'
# Push the registry images
- 'docker image push $REGISTRY_BASE_URL/$DOCKER_IMAGE_NAME:$CI_COMMIT_SHA'
# Clean local image
- 'docker image rm $REGISTRY_BASE_URL/$DOCKER_IMAGE_NAME:$CI_COMMIT_SHA'
rules:
- if: '$REGISTRY_BASE_URL == null'
when: never
- if: '$DOCKER_IMAGE_NAME == null'
when: never
"Deploy to Production":
image: bitnami/kubectl:1.23
stage: "Deploy"
when: manual
allow_failure: true
dependencies:
- "Publish Docker Image"
script:
- 'kubectl --kubeconfig=$K8S_CONFIG -n $K8S_NAMESPACE set image $K8S_DEPLOYMENT_TARGET $K8S_DEPLOYMENT_CONTAINER=$REGISTRY_BASE_URL/$DOCKER_IMAGE_NAME:$CI_COMMIT_SHA'
rules:
- if: '$K8S_CONFIG == null'
when: never
- if: '$K8S_NAMESPACE == null'
when: never
- if: '$K8S_DEPLOYMENT_TARGET == null'
when: never
- if: '$K8S_DEPLOYMENT_CONTAINER == null'
when: never
- if: '$REGISTRY_BASE_URL == null'
when: never
- if: '$DOCKER_IMAGE_NAME == null'
when: never