name: Docker Build and Publish Docker Image on: push: branches: - main paths: - VERSION - main.py - utils.py - models.py - request.py - Dockerfile - response.py - .dockerignore - requirements.txt - docker-compose.yml - .github/workflows/main.yml workflow_dispatch: jobs: build-and-push: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1.6.0 - name: Login to Docker Hub uses: docker/login-action@v3.0.0 with: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} - name: Login to GitHub Container Registry uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.PACK_TOKEN }} - name: Get current version id: get_version run: | VERSION=$(cat VERSION || echo "0.0.0") echo "Current version: $VERSION" echo "version=$VERSION" >> $GITHUB_OUTPUT - name: Bump version id: bump_version run: | IFS='.' read -ra VERSION_PARTS <<< "${{ steps.get_version.outputs.version }}" PATCH=$((VERSION_PARTS[2] + 1)) NEW_VERSION="${VERSION_PARTS[0]}.${VERSION_PARTS[1]}.$PATCH" echo $NEW_VERSION > VERSION echo "New version: $NEW_VERSION" echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT - name: Commit version bump env: GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }} run: | git config --global user.name 'github-actions[bot]' git config --global user.email 'github-actions[bot]@users.noreply.github.com' git add VERSION git commit -m "📖 Bump version to ${{ steps.bump_version.outputs.new_version }}" git push - name: Build and push Docker image uses: docker/build-push-action@v2.7.0 with: context: . file: Dockerfile platforms: linux/amd64,linux/arm64 push: true tags: | yym68686/uni-api:latest yym68686/uni-api:${{ steps.bump_version.outputs.new_version }} ghcr.io/${{ github.repository }}:latest ghcr.io/${{ github.repository }}:${{ steps.bump_version.outputs.new_version }}