today_ai_weather/.github/workflows/docker.yml
songtianlun c9aef3ddfe build: update Docker workflow for versioning
- Add checkout step to retrieve full git history
- Introduce a step to get the current version of the project
- Modify login step to use the actor's username instead of a constant
- Update the tags to use dynamic versioning in Docker image push

These changes improve the Docker workflow by ensuring that the
correct version tag is used when building and pushing Docker
images. The modified steps enhance traceability and allow
the workflow to handle versioning accurately based on current
git tags, addressing the need for specific version control in
the images produced.
2025-01-22 09:23:59 +08:00

50 lines
1.4 KiB
YAML

name: Build and Publish Docker Image
on:
push:
branches:
- main
env:
# Use docker.io for Docker Hub if empty
REGISTRY: docker.io
IMAGE_NAME: ${{ github.event.repository.name }}
jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # 获取完整的 git history 以便生成正确的 tag
-
name: Get Version
id: get_version
run: |
echo "VERSION=$(git describe --dirty --always --tags --abbrev=7)" >> $GITHUB_OUTPUT
-
name: Login to ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{github.actor}}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Set up QEMU
uses: docker/setup-qemu-action@v3
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
-
name: Build and push
uses: docker/build-push-action@v6
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
tags: |
${{ env.REGISTRY }}/${{github.actor}}/${{ github.event.repository.name }}:latest
${{ env.REGISTRY }}/${{github.actor}}/${{ github.event.repository.name }}:${{ steps.get_version.outputs.VERSION }}