diff --git a/.gitea/workflows/build-and-push.yml b/.gitea/workflows/build-and-push.yml new file mode 100644 index 0000000..772d2f7 --- /dev/null +++ b/.gitea/workflows/build-and-push.yml @@ -0,0 +1,47 @@ +name: Build and Push to ACR + +on: + push: + branches: [ main ] + release: + types: [ published ] + workflow_dispatch: # ← 手动触发 + inputs: + image_tag: # 可选输入:手动运行时指定 TAG + description: "Tag to push (default: latest or branch/tag name)" + required: false + default: "" + +jobs: + docker: + runs-on: [docker] + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Login to ACR + run: | + echo "${{ secrets.ACR_PASSWORD }}" | docker login \ + ${{ secrets.ACR_REGISTRY }} \ + -u "${{ secrets.ACR_USERNAME }}" \ + --password-stdin + + - name: Build Docker Image + run: | + IMAGE=${{ secrets.ACR_REGISTRY }}/${{ secrets.ACR_NAMESPACE }}/myapp + + # 优先用手动输入的 image_tag;否则用分支/发布名;再否则用 latest + TAG="${{ github.event.inputs.image_tag }}" + if [ -z "$TAG" ]; then TAG="${GITHUB_REF_NAME:-latest}"; fi + + echo "Building $IMAGE:$TAG" + docker build -t "$IMAGE:$TAG" -f docker/Dockerfile . + + - name: Push Docker Image + run: | + IMAGE=${{ secrets.ACR_REGISTRY }}/${{ secrets.ACR_NAMESPACE }}/myapp + TAG="${{ github.event.inputs.image_tag }}" + if [ -z "$TAG" ]; then TAG="${GITHUB_REF_NAME:-latest}"; fi + + echo "Pushing $IMAGE:$TAG" + docker push "$IMAGE:$TAG"