73 lines
1.9 KiB
YAML
73 lines
1.9 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 && $DOCKER_IMAGE_NAME != null'
|
|
|
|
"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 && $DOCKER_IMAGE_NAME != null'
|
|
|
|
"Deploy to Production":
|
|
image:
|
|
name: bitnami/kubectl:1.23
|
|
entrypoint: ["sh"]
|
|
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 && $K8S_NAMESPACE != null && $K8S_DEPLOYMENT_TARGET != null && $K8S_DEPLOYMENT_CONTAINER != null && $REGISTRY_BASE_URL != null && $DOCKER_IMAGE_NAME != null'
|