# Continuous Deployment Workflow # This workflow deploys your application to Kubernetes cluster # Trigger: After successful CI build or manual dispatch name: CD - Deploy to Kubernetes on: workflow_run: workflows: ["CI - Build and Push"] types: - completed branches: - master workflow_dispatch: env: # Kubernetes configuration KUBECONFIG_DATA: ${{ secrets.KUBECONFIG_DATA }} KUBERNETES_URL: ${{ secrets.KUBERNETES_URL }} KUBERNETES_NAMESPACE: ${{ secrets.KUBERNETES_NAMESPACE }} KUBERNETES_INGRESS_HOST: ${{ secrets.KUBERNETES_INGRESS_HOST }} KUBERNETES_DEPLOYMENT_REPLICAS: ${{ secrets.KUBERNETES_DEPLOYMENT_REPLICAS }} # Container registry configuration CONTAINER_REGISTRY_URL: ${{ secrets.CONTAINER_REGISTRY_URL }} CONTAINER_REGISTRY_USERNAME: ${{ secrets.CONTAINER_REGISTRY_USERNAME }} CONTAINER_REGISTRY_NAMESPACE: ${{ secrets.CONTAINER_REGISTRY_NAMESPACE }} CONTAINER_REGISTRY_PASSWORD: ${{ secrets.CONTAINER_REGISTRY_PASSWORD }} CONTAINER_IMAGE_NAME: ${{ secrets.CONTAINER_IMAGE_NAME }} CONTAINER_IMAGE_TAG: ${{ secrets.CONTAINER_IMAGE_TAG }} FORCE_RESTART: ${{ secrets.KUBERNETES_FORCE_RESTART }} # Application configuration DATABASE_DSN: ${{ secrets.DATABASE_DSN }} JWT_SECRET: ${{ secrets.JWT_SECRET }} JWT_ISSUER: ${{ secrets.JWT_ISSUER }} JWT_EXPIRES_IN: ${{ secrets.JWT_EXPIRES_IN }} STEAM_CALLBACK_URL: ${{ secrets.STEAM_CALLBACK_URL }} STEAM_FRONTEND_CALLBACK_URL: ${{ secrets.STEAM_FRONTEND_CALLBACK_URL }} REDIS_HOST: ${{ secrets.REDIS_HOST }} REDIS_TYPE: ${{ secrets.REDIS_TYPE }} REDIS_PASS: ${{ secrets.REDIS_PASS }} jobs: deploy: name: Deploy to Kubernetes runs-on: ubuntu-latest # Only run if CI workflow succeeded or manually dispatched if: ${{ github.event.workflow_run.conclusion == 'success' || github.event_name == 'workflow_dispatch' }} steps: - name: Checkout code uses: actions/checkout@v4 - name: Make CD script executable run: chmod +x script/cd.sh - name: Deploy to Kubernetes run: ./script/cd.sh deploy - name: Deployment Summary if: success() run: | echo "### :white_check_mark: Deployment Successful!" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "**Application:** \`${CONTAINER_IMAGE_NAME}\`" >> $GITHUB_STEP_SUMMARY echo "**Namespace:** \`${KUBERNETES_NAMESPACE}\`" >> $GITHUB_STEP_SUMMARY echo "**Image:** \`${CONTAINER_REGISTRY_URL}/${CONTAINER_REGISTRY_NAMESPACE}/${CONTAINER_IMAGE_NAME}:${CONTAINER_IMAGE_TAG}\`" >> $GITHUB_STEP_SUMMARY echo "**Database:** Connected" >> $GITHUB_STEP_SUMMARY echo "**Redis:** Connected" >> $GITHUB_STEP_SUMMARY echo "**URL:** http://${KUBERNETES_INGRESS_HOST}" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "---" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "**Deployment Time:** $(date -u +'%Y-%m-%d %H:%M:%S UTC')" >> $GITHUB_STEP_SUMMARY - name: Deployment Failed if: failure() run: | echo "### :x: Deployment Failed!" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "Please check the logs above for error details." >> $GITHUB_STEP_SUMMARY