Employee-app/.gitlab-ci.yml

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