remove unnecessary headers #5
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 }}" | |