name: Update Docker Hub images on: release: types: - published jobs: build: name: Update Docker Hub images runs-on: ubuntu-22.04 steps: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to DockerHub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Login to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Clone pmmp/PocketMine-Docker repository uses: actions/checkout@v4 with: repository: pmmp/PocketMine-Docker fetch-depth: 1 - name: Get tag names id: tag-name run: | VERSION=$(echo "${{ github.ref }}" | sed 's{^refs/tags/{{') echo TAG_NAME=$VERSION >> $GITHUB_OUTPUT echo MAJOR=$(echo $VERSION | cut -d. -f1) >> $GITHUB_OUTPUT echo MINOR=$(echo $VERSION | cut -d. -f1-2) >> $GITHUB_OUTPUT - name: Download new release information run: curl -f -L ${{ github.server_url }}/${{ github.repository }}/releases/download/${{ steps.tag-name.outputs.TAG_NAME }}/build_info.json -o new_build_info.json - name: Detect channel id: channel run: echo CHANNEL=$(jq -r '.channel' new_build_info.json) >> $GITHUB_OUTPUT - name: Get name of Docker repository name id: docker-repo-name run: echo NAME=$(echo "${GITHUB_REPOSITORY,,}") >> $GITHUB_OUTPUT - name: Build image for tag uses: docker/build-push-action@v6.15.0 with: push: true context: ./pocketmine-mp tags: | ${{ steps.docker-repo-name.outputs.NAME }}:${{ steps.tag-name.outputs.TAG_NAME }} ghcr.io/${{ steps.docker-repo-name.outputs.NAME }}:${{ steps.tag-name.outputs.TAG_NAME }} build-args: | PMMP_TAG=${{ steps.tag-name.outputs.TAG_NAME }} PMMP_REPO=${{ github.repository }} - name: Build image for major tag if: steps.channel.outputs.CHANNEL == 'stable' uses: docker/build-push-action@v6.15.0 with: push: true context: ./pocketmine-mp tags: | ${{ steps.docker-repo-name.outputs.NAME }}:${{ steps.tag-name.outputs.MAJOR }} ghcr.io/${{ steps.docker-repo-name.outputs.NAME }}:${{ steps.tag-name.outputs.MAJOR }} build-args: | PMMP_TAG=${{ steps.tag-name.outputs.TAG_NAME }} PMMP_REPO=${{ github.repository }} - name: Build image for minor tag if: steps.channel.outputs.CHANNEL == 'stable' uses: docker/build-push-action@v6.15.0 with: push: true context: ./pocketmine-mp tags: | ${{ steps.docker-repo-name.outputs.NAME }}:${{ steps.tag-name.outputs.MINOR }} ghcr.io/${{ steps.docker-repo-name.outputs.NAME }}:${{ steps.tag-name.outputs.MINOR }} build-args: | PMMP_TAG=${{ steps.tag-name.outputs.TAG_NAME }} PMMP_REPO=${{ github.repository }} - name: Build image for latest tag if: steps.channel.outputs.CHANNEL == 'stable' uses: docker/build-push-action@v6.15.0 with: push: true context: ./pocketmine-mp tags: | ${{ steps.docker-repo-name.outputs.NAME }}:latest ghcr.io/${{ steps.docker-repo-name.outputs.NAME }}:latest build-args: | PMMP_TAG=${{ steps.tag-name.outputs.TAG_NAME }} PMMP_REPO=${{ github.repository }}