# 构建并推送 Docker 镜像到 Docker Hub # 前置条件:在 GitHub 仓库 Secrets 中配置 # DOCKERHUB_USERNAME — Docker Hub 用户名 # DOCKERHUB_TOKEN — Docker Hub Access Token(需 Read & Write 权限) name: Docker on: push: branches: - main tags: - 'v*' env: IMAGE_NAME: hangzhang714128/jiang13-forum jobs: docker: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: 计算镜像标签与版本 id: meta run: | IMAGE="${{ env.IMAGE_NAME }}" TAGS="${IMAGE}:latest" if [[ "${{ github.ref_type }}" == "tag" ]]; then RAW="${GITHUB_REF#refs/tags/}" VER="${RAW#v}" TAGS="${TAGS},${IMAGE}:${VER},${IMAGE}:${RAW}" echo "version=${VER}" >> "$GITHUB_OUTPUT" else SHA="${GITHUB_SHA::7}" TAGS="${TAGS},${IMAGE}:sha-${SHA}" echo "version=dev" >> "$GITHUB_OUTPUT" fi echo "tags=${TAGS}" >> "$GITHUB_OUTPUT" - name: 登录 Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: 构建并推送镜像 uses: docker/build-push-action@v6 with: context: . push: true platforms: linux/amd64 build-args: | VERSION=${{ steps.meta.outputs.version }} IMAGE_PREFIX= tags: ${{ steps.meta.outputs.tags }}