Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions .github/workflows/cleanup-old-docker.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Cleanup Old Development Docker Images

on:
workflow_dispatch:
schedule:
- cron: "0 2 * * *" # Run daily at 2 AM

jobs:
cleanup:
if: ${{ github.repository == 'sgl-project/sglang' }}
runs-on: ubuntu-22.04
steps:
- name: Cleanup old dev images
env:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
run: |
# Get auth token
TOKEN=$(curl -s -H "Content-Type: application/json" -X POST \
-d '{"username": "'${DOCKERHUB_USERNAME}'", "password": "'${DOCKERHUB_TOKEN}'"}' \
https://hub.docker.com/v2/users/login/ | jq -r .token)

# Calculate cutoff date (2 weeks ago)
CUTOFF_DATE=$(date -u -d '14 days ago' +%s)

# Tags to clean up
for TAG_PREFIX in "dev-x86" "dev-arm64" "dev"; do
echo "Checking ${TAG_PREFIX}-* tags..."

# Get all tags
TAGS=$(curl -s -H "Authorization: JWT ${TOKEN}" \
"https://hub.docker.com/v2/repositories/lmsysorg/sglang/tags/?page_size=100" \
| jq -r '.results[] | select(.name | startswith("'${TAG_PREFIX}'-")) | select(.name != "'${TAG_PREFIX}'") | "\(.name)|\(.last_updated)"')

# Process each tag
echo "$TAGS" | while IFS='|' read -r TAG_NAME LAST_UPDATED; do
if [ -z "$TAG_NAME" ]; then
continue
fi

# Convert last_updated to epoch
TAG_DATE=$(date -u -d "$LAST_UPDATED" +%s)

# Check if older than 2 weeks
if [ "$TAG_DATE" -lt "$CUTOFF_DATE" ]; then
echo "Deleting old tag: $TAG_NAME (last updated: $LAST_UPDATED)"
curl -X DELETE \
-H "Authorization: JWT ${TOKEN}" \
"https://hub.docker.com/v2/repositories/lmsysorg/sglang/tags/${TAG_NAME}/"
else
echo "Keeping tag: $TAG_NAME (last updated: $LAST_UPDATED)"
fi
done
done
29 changes: 27 additions & 2 deletions .github/workflows/release-docker-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,14 @@ jobs:

- name: Build and Push Dev Image (x86)
run: |
docker buildx build --platform linux/amd64 --push -f docker/Dockerfile --build-arg CUDA_VERSION=${{ matrix.variant.version }} --build-arg BUILD_TYPE=${{ matrix.variant.type }} --build-arg CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) -t lmsysorg/sglang:${{ matrix.variant.tag }} --no-cache .
COMMIT_SHA=$(git rev-parse --short HEAD)
docker buildx build --platform linux/amd64 --push -f docker/Dockerfile \
--build-arg CUDA_VERSION=${{ matrix.variant.version }} \
--build-arg BUILD_TYPE=${{ matrix.variant.type }} \
--build-arg CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) \
-t lmsysorg/sglang:${{ matrix.variant.tag }} \
-t lmsysorg/sglang:${{ matrix.variant.tag }}-${COMMIT_SHA} \
--no-cache .

build-dev-arm:
if: ${{ github.repository == 'sgl-project/sglang' }}
Expand Down Expand Up @@ -84,7 +91,14 @@ jobs:

- name: Build and Push Blackwell Image (ARM)
run: |
docker buildx build --platform linux/arm64 --push -f docker/Dockerfile --build-arg CUDA_VERSION=${{ matrix.variant.version }} --build-arg BUILD_TYPE=${{ matrix.variant.type }} --build-arg CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) -t lmsysorg/sglang:${{ matrix.variant.tag }} --no-cache .
COMMIT_SHA=$(git rev-parse --short HEAD)
docker buildx build --platform linux/arm64 --push -f docker/Dockerfile \
--build-arg CUDA_VERSION=${{ matrix.variant.version }} \
--build-arg BUILD_TYPE=${{ matrix.variant.type }} \
--build-arg CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) \
-t lmsysorg/sglang:${{ matrix.variant.tag }} \
-t lmsysorg/sglang:${{ matrix.variant.tag }}-${COMMIT_SHA} \
--no-cache .

create-manifests:
runs-on: ubuntu-22.04
Expand All @@ -97,13 +111,24 @@ jobs:
x86_tag: dev-x86
arm64_tag: dev-arm64
steps:
- name: Checkout repository
uses: actions/checkout@v4

- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- run: |
COMMIT_SHA=$(git rev-parse --short HEAD)
# Create regular dev manifest (latest)
docker buildx imagetools create \
-t lmsysorg/sglang:${{ matrix.variant.tag }} \
lmsysorg/sglang:${{ matrix.variant.x86_tag }} \
lmsysorg/sglang:${{ matrix.variant.arm64_tag }}

# Create commit-specific manifest
docker buildx imagetools create \
-t lmsysorg/sglang:${{ matrix.variant.tag }}-${COMMIT_SHA} \
lmsysorg/sglang:${{ matrix.variant.x86_tag }}-${COMMIT_SHA} \
lmsysorg/sglang:${{ matrix.variant.arm64_tag }}-${COMMIT_SHA}
Loading