Skip to content

remove unnecessary headers #5

remove unnecessary headers

remove unnecessary headers #5

Workflow file for this run

name: Core Dev
on:
push:
branches:
- dev
- feat/*
- hotfix/*
env:
APP: core
API_URL: https://dev.datedata.dev/api
jobs:
setup:
runs-on: self-hosted
steps:
- name: Actions checkout
uses: actions/checkout@v5
- name: Setup Docker Buildx Action
uses: docker/setup-buildx-action@v3
- name: Setup kubectl
uses: azure/setup-kubectl@v4
setup-env:
runs-on: self-hosted
needs: setup
outputs:
release_name: ${{ steps.branch-env.outputs.release_name }}
host: ${{ steps.branch-env.outputs.host }}
namespace: ${{ steps.branch-env.outputs.namespace }}
steps:
- name: Setup branch environment
id: branch-env
run: |
PREFIX=""
BRANCH_NAME=""
if [[ "${GITHUB_REF}" == refs/heads/feat/* ]]; then
PREFIX="feat"
BRANCH_NAME="${GITHUB_REF#refs/heads/feat/}"
elif [[ "${GITHUB_REF}" == refs/heads/hotfix/* ]]; then
PREFIX="hotfix"
BRANCH_NAME="${GITHUB_REF#refs/heads/hotfix/}"
elif [[ "${GITHUB_REF}" == refs/heads/dev ]]; then
PREFIX="core"
fi
if [[ -n "$BRANCH_NAME" ]]; then
SAFE_NAME=$(echo "$BRANCH_NAME" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9-]/-/g')
RELEASE_NAME="${PREFIX}-${SAFE_NAME}"
HOST="${PREFIX}-${SAFE_NAME}.datedata.dev"
NAMESPACE="${PREFIX}-${SAFE_NAME}"
else
RELEASE_NAME="${PREFIX}"
HOST="dev.datedata.dev"
NAMESPACE="dev"
fi
echo "release_name=${RELEASE_NAME}" >> "$GITHUB_OUTPUT"
echo "host=${HOST}" >> "$GITHUB_OUTPUT"
echo "namespace=${NAMESPACE}" >> "$GITHUB_OUTPUT"
build:
runs-on: self-hosted
needs: setup-env
steps:
- name: Docker build & push
run: |
if [[ -z "${{ secrets.DOCKER_USERNAME }}" ]]; then
echo "Error: DOCKER_USERNAME is not set"
exit 1
fi
docker build -t ${{ secrets.DOCKER_USERNAME }}/datedata-front:${GITHUB_SHA} --build-arg APP=${{ env.APP }} --build-arg API_URL=${{ env.API_URL }} .
docker push ${{ secrets.DOCKER_USERNAME }}/datedata-front:${GITHUB_SHA}
deploy:
runs-on: self-hosted
needs: [setup-env, build]
steps:
- name: Configure kubectl
run: |
if [[ -z "${{ secrets.KUBE_CONFIG_DATA }}" ]]; then
echo "Error: KUBE_CONFIG_DATA secret is not set"
exit 1
fi
mkdir -p $HOME/.kube
echo "${{ secrets.KUBE_CONFIG_DATA }}" | base64 -d > $HOME/.kube/config
if [[ $? -ne 0 ]]; then
echo "Error: Failed to decode the kubeconfig"
exit 1
fi
chmod 600 $HOME/.kube/config
kubectl config current-context
- name: Helm Deploy
run: |
if [[ -z "${{ needs.setup-env.outputs.namespace }}" ]]; then
echo "Error: namespace is not set"
exit 1
fi
if [[ -z "${{ needs.setup-env.outputs.release_name }}" ]]; then
echo "Error: release_name is not set"
exit 1
fi
if [[ -z "${{ needs.setup-env.outputs.host }}" ]]; then
echo "Error: host is not set"
exit 1
fi
kubectl create namespace ${{ needs.setup-env.outputs.namespace }} --dry-run=client -o yaml | kubectl apply -f -
helm upgrade --install ${{ needs.setup-env.outputs.release_name }} ./.helm/core \
-f ./.helm/core/envs/dev/values.yaml \
--kubeconfig $HOME/.kube/config \
--namespace ${{ needs.setup-env.outputs.namespace }} \
--set image.repository=${{ secrets.DOCKER_USERNAME }}/datedata-front \
--set image.tag=${GITHUB_SHA} \
--set ingress.host=${{ needs.setup-env.outputs.host }} \
--wait --timeout=300s
post-deploy:
runs-on: self-hosted
needs: [setup-env, deploy]
steps:
- name: Verify deployment
run: |
if [[ -z "${{ needs.setup-env.outputs.namespace }}" ]]; then
echo "Error: namespace is not set"
exit 1
fi
if [[ -z "${{ needs.setup-env.outputs.release_name }}" ]]; then
echo "Error: release_name is not set"
exit 1
fi
kubectl rollout status deployment/${{ needs.setup-env.outputs.release_name }} -n ${{ needs.setup-env.outputs.namespace }} --timeout=300s
if [[ $? -ne 0 ]]; then
echo "Error: Deployment failed"
exit 1
fi
echo "📆 Deployment successful! https://${{ needs.setup-env.outputs.host }}"