name: Mindforge Web Build and Deploy on: push: branches: - main paths: - "Mindforge.Web/**" - ".gitea/workflows/**" workflow_dispatch: {} env: REGISTRY_HOST: git.ivanch.me REGISTRY_USERNAME: ivanch IMAGE_WEB: ${{ env.REGISTRY_HOST }}/ivanch/mindforge-web KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }} jobs: build_mindforge_web: name: Build Mindforge Web Image runs-on: ubuntu-22.04 steps: - name: Check out repository uses: actions/checkout@v2 - name: Log in to Container Registry run: | echo "${{ secrets.REGISTRY_PASSWORD }}" \ | docker login "${{ env.REGISTRY_HOST }}" \ -u "${{ env.REGISTRY_USERNAME }}" \ --password-stdin - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build and Push Multi-Arch Image uses: docker/build-push-action@v6 with: push: true context: Mindforge.Web platforms: linux/amd64,linux/arm64 build-args: | VITE_API_BASE_URL=${{ secrets.VITE_API_BASE_URL }} tags: | ${{ env.IMAGE_WEB }}:latest deploy_mindforge_web: name: Deploy Mindforge Web (internal) runs-on: ubuntu-amd64 needs: build_mindforge_web steps: - name: Check KUBE_CONFIG validity run: | if [ -z "${KUBE_CONFIG}" ] || [ "${KUBE_CONFIG}" = "" ] || [ "${KUBE_CONFIG// }" = "" ]; then echo "KUBE_CONFIG is not set or is empty." exit 1 fi - name: Check out repository uses: actions/checkout@v2 - name: Download and install dependencies run: | apt-get update -y apt-get install -y curl curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" install -m 0755 kubectl /usr/local/bin/kubectl kubectl version --client - name: Set up kubeconfig run: | cd Mindforge.Web/deploy echo "$KUBE_CONFIG" > kubeconfig.yaml env: KUBE_CONFIG: ${{ env.KUBE_CONFIG }} - name: Check connection to cluster run: | cd Mindforge.Web/deploy kubectl --kubeconfig=kubeconfig.yaml cluster-info - name: Apply mindforge-web deployment run: | cd Mindforge.Web/deploy kubectl --kubeconfig=kubeconfig.yaml apply -f mindforge-web.yaml