From 35f0fde06969ab599379b8f1f5af657be2828dc0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 7 Feb 2025 17:53:06 +0900 Subject: [PATCH] `ultralytics 8.3.73` GitHub Container Registry Images at `ghcr.io` (#19114) Signed-off-by: Glenn Jocher Co-authored-by: UltralyticsAssistant --- .github/workflows/ci.yml | 2 +- .github/workflows/docker.yml | 61 ++++++++++++++++++++++++++---------- ultralytics/__init__.py | 2 +- 3 files changed, 47 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b351e450..68a623ac 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -160,7 +160,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-15, windows-latest, ubuntu-24.04-arm] + os: [ubuntu-latest, macos-15, windows-latest] python-version: ["3.11"] torch: [latest] include: diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index b5bdabb2..8bdd61d8 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -46,7 +46,7 @@ on: default: true push: type: boolean - description: Publish all Images to Docker Hub + description: Publish all Images jobs: docker: @@ -105,6 +105,13 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Login to GHCR + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Retrieve Ultralytics version id: get_version run: | @@ -141,12 +148,17 @@ jobs: retry_delay_seconds: 60 retries: 2 run: | - docker build \ - --platform ${{ matrix.platforms }} \ - -f docker/${{ matrix.dockerfile }} \ - -t ultralytics/ultralytics:${{ matrix.tags }} \ - -t ultralytics/ultralytics:${{ steps.get_version.outputs.version_tag }} \ - . + docker buildx build \ + --platform ${{ matrix.platforms }} \ + --label "org.opencontainers.image.source=https://github.com/ultralytics/ultralytics" \ + --label "org.opencontainers.image.description=Ultralytics image" \ + --label "org.opencontainers.image.licenses=AGPL-3.0-or-later" \ + -f docker/${{ matrix.dockerfile }} \ + -t ultralytics/ultralytics:${{ matrix.tags }} \ + -t ultralytics/ultralytics:${{ steps.get_version.outputs.version_tag }} \ + -t ghcr.io/ultralytics/ultralytics:${{ matrix.tags }} \ + -t ghcr.io/ultralytics/ultralytics:${{ steps.get_version.outputs.version_tag }} \ + . - name: Run Tests if: (github.event_name == 'push' || github.event.inputs[matrix.dockerfile] == 'true') && matrix.platforms == 'linux/amd64' && matrix.dockerfile != 'Dockerfile-conda' # arm64 images not supported on GitHub CI runners @@ -165,9 +177,11 @@ jobs: retry_delay_seconds: 300 retries: 2 run: | - docker push ultralytics/ultralytics:${{ steps.get_version.outputs.version_tag }} + t="ultralytics/ultralytics:${{ steps.get_version.outputs.version_tag }}" + docker push $t + docker push ghcr.io/$t - - name: Push Docker Image with latest tag + - name: Build and Push Additional Images (latest-runner and latest-jupyter) if: github.event_name == 'push' || (github.event.inputs[matrix.dockerfile] == 'true' && github.event.inputs.push == 'true') uses: ultralytics/actions/retry@main with: @@ -175,19 +189,34 @@ jobs: retry_delay_seconds: 300 retries: 2 run: | - docker push ultralytics/ultralytics:${{ matrix.tags }} + t="ultralytics/ultralytics:${{ matrix.tags }}" + docker push $t + docker push ghcr.io/$t + if [[ "${{ matrix.tags }}" == "latest" ]]; then - t=ultralytics/ultralytics:latest-runner - docker build -f docker/Dockerfile-runner -t $t . + t="ultralytics/ultralytics:latest-runner" + docker build -f docker/Dockerfile-runner -t $t -t ghcr.io/$t \ + --label "org.opencontainers.image.source=https://github.com/ultralytics/ultralytics" \ + --label "org.opencontainers.image.description=Ultralytics runner image" \ + --label "org.opencontainers.image.licenses=AGPL-3.0-or-later" \ + . docker push $t + docker push ghcr.io/$t fi + if [[ "${{ matrix.tags }}" == "latest-python" ]]; then - t=ultralytics/ultralytics:latest-jupyter - v=ultralytics/ultralytics:${{ steps.get_version.outputs.version }}-jupyter - docker build -f docker/Dockerfile-jupyter -t $t -t $v . + t="ultralytics/ultralytics:latest-jupyter" + v="ultralytics/ultralytics:${{ steps.get_version.outputs.version }}-jupyter" + docker build -f docker/Dockerfile-jupyter -t $t -t ghcr.io/$t -t $v -t ghcr.io/$v \ + --label "org.opencontainers.image.source=https://github.com/ultralytics/ultralytics" \ + --label "org.opencontainers.image.description=Ultralytics Jupyter image" \ + --label "org.opencontainers.image.licenses=AGPL-3.0-or-later" \ + . docker push $t - if [[ "${{ steps.check_tag.outputs.new_release }}" == "true" ]]; then + docker push ghcr.io/$t + if [[ "${{ steps.check_tag_dockerhub.outputs.new_release }}" == "true" ]]; then docker push $v + docker push ghcr.io/$v fi fi diff --git a/ultralytics/__init__.py b/ultralytics/__init__.py index c8862c3d..2b6471dc 100644 --- a/ultralytics/__init__.py +++ b/ultralytics/__init__.py @@ -1,6 +1,6 @@ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license -__version__ = "8.3.72" +__version__ = "8.3.73" import os