103 lines
2.4 KiB
YAML
103 lines
2.4 KiB
YAML
stages:
|
|
- build
|
|
- push
|
|
- deploy
|
|
|
|
variables:
|
|
DOCKER_DRIVER: overlay2
|
|
IMAGE_BACKEND: $CI_REGISTRY/$CI_PROJECT_PATH/backend
|
|
IMAGE_FRONTEND: $CI_REGISTRY/$CI_PROJECT_PATH/frontend
|
|
|
|
before_script:
|
|
- echo "Logging in to GitLab Container Registry..."
|
|
- echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER $CI_REGISTRY --password-stdin
|
|
|
|
# BUILD BACKEND
|
|
build-backend:
|
|
stage: build
|
|
script:
|
|
- |
|
|
if [[ "$CI_COMMIT_BRANCH" == "main" ]]; then
|
|
TAG="prod-latest"
|
|
ENVIRONMENT="prod"
|
|
elif [[ "$CI_COMMIT_BRANCH" == "staging" ]]; then
|
|
TAG="staging-latest"
|
|
ENVIRONMENT="stag"
|
|
else
|
|
TAG="dev-latest"
|
|
ENVIRONMENT="dev"
|
|
fi
|
|
- echo "Building backend image for $ENVIRONMENT"
|
|
- docker build -t $IMAGE_BACKEND:$TAG employee-be
|
|
only:
|
|
- main
|
|
- staging
|
|
- dev
|
|
|
|
# BUILD FRONTEND
|
|
build-frontend:
|
|
stage: build
|
|
script:
|
|
- |
|
|
if [[ "$CI_COMMIT_BRANCH" == "main" ]]; then
|
|
TAG="prod-latest"
|
|
ENVIRONMENT="prod"
|
|
elif [[ "$CI_COMMIT_BRANCH" == "staging" ]]; then
|
|
TAG="staging-latest"
|
|
ENVIRONMENT="stag"
|
|
else
|
|
TAG="dev-latest"
|
|
ENVIRONMENT="dev"
|
|
fi
|
|
- echo "Building frontend image for $ENVIRONMENT"
|
|
- docker build -t $IMAGE_FRONTEND:$TAG employee-fe
|
|
only:
|
|
- main
|
|
- staging
|
|
- dev
|
|
|
|
# PUSH IMAGES TO REGISTRY
|
|
push-images:
|
|
stage: push
|
|
script:
|
|
- |
|
|
if [[ "$CI_COMMIT_BRANCH" == "main" ]]; then
|
|
TAG="prod-latest"
|
|
elif [[ "$CI_COMMIT_BRANCH" == "staging" ]]; then
|
|
TAG="staging-latest"
|
|
else
|
|
TAG="dev-latest"
|
|
fi
|
|
- echo "Pushing images with tag $TAG..."
|
|
- docker push $IMAGE_BACKEND:$TAG
|
|
- docker push $IMAGE_FRONTEND:$TAG
|
|
only:
|
|
- main
|
|
- staging
|
|
- dev
|
|
|
|
# DEPLOY USING KUSTOMIZE
|
|
|
|
deploy:
|
|
stage: deploy
|
|
image:
|
|
name: bitnami/kubectl:latest
|
|
entrypoint: [""]
|
|
script:
|
|
- echo "$KUBECONFIG_DATA" | base64 -d > kubeconfig.yaml
|
|
- export KUBECONFIG=$(pwd)/kubeconfig.yaml
|
|
- |
|
|
if [[ "$CI_COMMIT_BRANCH" == "main" ]]; then
|
|
ENVIRONMENT="prod"
|
|
elif [[ "$CI_COMMIT_BRANCH" == "staging" ]]; then
|
|
ENVIRONMENT="stag"
|
|
else
|
|
ENVIRONMENT="dev"
|
|
fi
|
|
- echo "Deploying to $ENVIRONMENT environment..."
|
|
- kubectl apply -k employee-manifest/overlays/$ENVIRONMENT
|
|
only:
|
|
- main
|
|
- staging
|
|
- dev
|