| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- name: Build and Push Docker Image
- on:
- push:
- branches:
- - main
- tags:
- - 'v*'
- workflow_dispatch:
- env:
- DOCKER_REPO: t0ngyu/new-api-alpha
- jobs:
- build-and-push:
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout code
- uses: actions/checkout@v5
- - name: Save version info
- run: |
- if [[ "${{ github.ref }}" == refs/tags/* ]]; then
- # For tags, use the tag name
- echo "${GITHUB_REF#refs/tags/}" > VERSION
- else
- # For branches, use date and commit hash
- echo "$(date +'%Y%m%d')-$(git rev-parse --short HEAD)" > VERSION
- fi
- cat VERSION
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v4
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v4
- with:
- driver-opts: |
- image=moby/buildkit:latest
- network=host
- - name: Login to Docker Hub
- uses: docker/login-action@v4
- with:
- username: ${{ secrets.DOCKER_USERNAME }}
- password: ${{ secrets.DOCKER_PASSWORD }}
- - name: Extract metadata
- id: meta
- uses: docker/metadata-action@v6
- with:
- images: ${{ env.DOCKER_REPO }}
- tags: |
- type=ref,event=branch
- type=ref,event=pr
- type=semver,pattern={{version}}
- type=semver,pattern={{major}}.{{minor}}
- type=semver,pattern={{major}}
- type=sha,prefix={{branch}}-
- type=raw,value=latest,enable={{is_default_branch}}
- - name: Build and push Docker image
- id: build
- uses: docker/build-push-action@v7
- with:
- context: .
- file: ./Dockerfile
- platforms: linux/amd64
- push: true
- tags: ${{ steps.meta.outputs.tags }}
- labels: ${{ steps.meta.outputs.labels }}
- # Enable BuildKit cache mounts and GHA cache
- cache-from: type=gha
- cache-to: type=gha,mode=max
- build-args: |
- BUILDKIT_INLINE_CACHE=1
- - name: Image summary
- run: |
- echo "### Docker Image Built Successfully! 🚀" >> $GITHUB_STEP_SUMMARY
- echo "" >> $GITHUB_STEP_SUMMARY
- echo "**Tags:**" >> $GITHUB_STEP_SUMMARY
- echo '```' >> $GITHUB_STEP_SUMMARY
- echo "${{ steps.meta.outputs.tags }}" >> $GITHUB_STEP_SUMMARY
- echo '```' >> $GITHUB_STEP_SUMMARY
- echo "" >> $GITHUB_STEP_SUMMARY
- echo "**Digest:** \`${{ steps.build.outputs.digest }}\`" >> $GITHUB_STEP_SUMMARY
|