diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 49dc933..c69ca77 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -1,9 +1,19 @@ +# 复制到 itfx 仓库 .gitea/workflows/deploy.yml +# push master/main → prod;push test → test name: Build and Deploy on: push: - branches: [master, main] + branches: [master, main, test] workflow_dispatch: + inputs: + target: + description: Deploy target (仅手动;push 时由分支决定) + type: choice + options: + - prod + - test + default: prod env: CSPROJ: src/InterfaceForward.Api/InterfaceForward.Api.csproj @@ -20,15 +30,48 @@ jobs: - name: Build and deploy run: | set -euxo pipefail - export KUBECONFIG=/etc/rancher/k3s/k3s.yaml - TAG="${{ gitea.sha }}" - IMG="${{ env.TCR_REGISTRY }}/${{ env.TCR_NAMESPACE }}/${{ env.IMAGE_NAME }}:${TAG}" + REF="${{ gitea.ref_name }}" + + if [[ "${{ gitea.event_name }}" == "workflow_dispatch" ]]; then + TARGET="${{ inputs.target }}" + TARGET="${TARGET:-prod}" + else + case "$REF" in + test) TARGET=test ;; + *) TARGET=prod ;; + esac + fi + + SHA="${{ gitea.sha }}" REPO="${{ gitea.repository }}" - REPO="${REPO:-${{ github.repository }}}" test -n "$REPO" && [[ "$REPO" == */* ]] - echo "REPO=$REPO TAG=$TAG host=$(hostname)" + + case "$TARGET" in + test) TAG="test-${SHA}" ;; + *) TAG="${SHA}" ;; + esac + + IMG="${{ env.TCR_REGISTRY }}/${{ env.TCR_NAMESPACE }}/${{ env.IMAGE_NAME }}:${TAG}" + echo "TARGET=$TARGET REF=$REF REPO=$REPO TAG=$TAG host=$(hostname)" + + export KUBECONFIG=/etc/rancher/k3s/k3s.yaml + unset NAMESPACE cd /data/k3s ./scripts/ci-publish-container.sh "$REPO" "${{ env.CSPROJ }}" \ - "${{ env.IMAGE_NAME }}" "$TAG" "$TAG" + "${{ env.IMAGE_NAME }}" "$TAG" "$SHA" + + case "$TARGET" in + test) + export KUBECONFIG=/root/.kube/k3s-test.yaml + export NAMESPACE=test + export MANIFEST_ROOT=/data/k3s-test + ;; + *) + export KUBECONFIG=/etc/rancher/k3s/k3s.yaml + export NAMESPACE=prod + export MANIFEST_ROOT=/data/k3s + ;; + esac + test -f "$KUBECONFIG" ./scripts/ci-deploy-api.sh "${{ env.DEPLOY_NAME }}" \ "${{ env.CONTAINER_NAME }}" "$IMG"