48 lines
1.4 KiB
YAML
48 lines
1.4 KiB
YAML
name: Build and Push to ACR
|
||
|
||
on:
|
||
push:
|
||
branches: [ main ]
|
||
release:
|
||
types: [ published ]
|
||
workflow_dispatch: # 手动触发
|
||
inputs:
|
||
image_tag: # 手动运行时可指定 TAG(留空则自动判断)
|
||
description: "Tag to push (default: branch/release name, else latest)"
|
||
required: false
|
||
default: ""
|
||
|
||
jobs:
|
||
docker:
|
||
runs-on: [buildx]
|
||
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"
|