Skip to content

Merge pull request #16 from rayrayraykk/dev/1218/sandbox_ci #3

Merge pull request #16 from rayrayraykk/dev/1218/sandbox_ci

Merge pull request #16 from rayrayraykk/dev/1218/sandbox_ci #3

name: Manual Build Sandbox Image

Check failure on line 1 in .github/workflows/build_sandbox_image.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/build_sandbox_image.yml

Invalid workflow file

(Line: 43, Col: 13): Unrecognized named-value: 'secrets'. Located at position 1 within expression: secrets.DOCKER_USERNAME && secrets.DOCKER_PASSWORD, (Line: 52, Col: 13): Unrecognized named-value: 'secrets'. Located at position 1 within expression: secrets.ALIYUN_ACR_USERNAME && secrets.ALIYUN_ACR_PASSWORD, (Line: 115, Col: 13): Unrecognized named-value: 'secrets'. Located at position 47 within expression: github.event.inputs.single_arch == 'false' && secrets.DOCKER_USERNAME && secrets.DOCKER_PASSWORD, (Line: 132, Col: 13): Unrecognized named-value: 'secrets'. Located at position 47 within expression: github.event.inputs.single_arch == 'false' && secrets.ALIYUN_ACR_USERNAME && secrets.ALIYUN_ACR_PASSWORD
on:
workflow_dispatch:
inputs:
build_type:
description: "Image type, e.g., base or all"
required: true
default: "base"
platform:
description: "Docker architecture platform (used for multi-arch builds)"
required: true
default: "linux/amd64"
type: choice
options:
- linux/amd64
- linux/arm64
single_arch:
description: "Single architecture build (forces amd64, no multi-arch manifest merge)"
required: true
default: "false"
type: choice
options:
- "true"
- "false"
jobs:
build:
runs-on: ubuntu-latest
environment: prod
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
# Login to DockerHub (only if secrets are available)
- name: Log in to DockerHub
if: ${{ secrets.DOCKER_USERNAME && secrets.DOCKER_PASSWORD }}
uses: docker/login-action@v3
with:
registry: docker.io
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
# Login to Aliyun ACR (only if secrets are available)
- name: Log in to Aliyun ACR
if: ${{ secrets.ALIYUN_ACR_USERNAME && secrets.ALIYUN_ACR_PASSWORD }}
uses: docker/login-action@v3
with:
registry: agentscope-registry.ap-southeast-1.cr.aliyuncs.com
username: ${{ secrets.ALIYUN_ACR_USERNAME }}
password: ${{ secrets.ALIYUN_ACR_PASSWORD }}
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
run: |
pip install -r requirements.txt
pip install requests
- name: Run build script
env:
AUTO_BUILD: "true"
run: |
PLATFORM_INPUT="${{ github.event.inputs.platform }}"
SINGLE="${{ github.event.inputs.single_arch }}"
if [ "$SINGLE" = "true" ]; then
PLATFORM_INPUT="linux/amd64"
fi
python src/agentscope_runtime/sandbox/build_script.py \
"${{ github.event.inputs.build_type }}" \
--platform "$PLATFORM_INPUT"
- name: Tag & Push Images
run: |
DATE_TAG=$(date +%Y%m%d)
SINGLE="${{ github.event.inputs.single_arch }}"
ARCH_TAG="${{ github.event.inputs.platform }}"
if [ "$SINGLE" = "true" ]; then
ARCH_TAG="linux/amd64"
fi
IMAGE_BASE=$(python -c "from src.agentscope_runtime.sandbox.registry import SandboxRegistry; print(SandboxRegistry.get_image_by_type('${{ github.event.inputs.build_type }}'))")
if [ -n "${{ secrets.DOCKER_USERNAME }}" ] && [ -n "${{ secrets.DOCKER_PASSWORD }}" ]; then
if [ "$SINGLE" = "true" ]; then
docker tag $IMAGE_BASE docker.io/agentscope/${IMAGE_BASE}:${DATE_TAG}
docker push docker.io/agentscope/${IMAGE_BASE}:${DATE_TAG}
else
ARCH_SUFFIX=$(echo "$ARCH_TAG" | tr '/' '-')
docker tag $IMAGE_BASE docker.io/agentscope/${IMAGE_BASE}:${DATE_TAG}-${ARCH_SUFFIX}
docker push docker.io/agentscope/${IMAGE_BASE}:${DATE_TAG}-${ARCH_SUFFIX}
fi
fi
if [ -n "${{ secrets.ALIYUN_ACR_USERNAME }}" ] && [ -n "${{ secrets.ALIYUN_ACR_PASSWORD }}" ]; then
if [ "$SINGLE" = "true" ]; then
docker tag $IMAGE_BASE agentscope-registry.ap-southeast-1.cr.aliyuncs.com/agentscope/${IMAGE_BASE}:${DATE_TAG}
docker push agentscope-registry.ap-southeast-1.cr.aliyuncs.com/agentscope/${IMAGE_BASE}:${DATE_TAG}
else
ARCH_SUFFIX=$(echo "$ARCH_TAG" | tr '/' '-')
docker tag $IMAGE_BASE agentscope-registry.ap-southeast-1.cr.aliyuncs.com/agentscope/${IMAGE_BASE}:${DATE_TAG}-${ARCH_SUFFIX}
docker push agentscope-registry.ap-southeast-1.cr.aliyuncs.com/agentscope/${IMAGE_BASE}:${DATE_TAG}-${ARCH_SUFFIX}
fi
fi
# Create multi-arch manifest (only runs when single_arch=false)
- name: Create Multi-arch Manifest for DockerHub
if: ${{ github.event.inputs.single_arch == 'false' && secrets.DOCKER_USERNAME && secrets.DOCKER_PASSWORD }}
run: |
DATE_TAG=$(date +%Y%m%d)
IMAGE_BASE=$(python -c "from src.agentscope_runtime.sandbox.registry import SandboxRegistry; print(SandboxRegistry.get_image_by_type('${{ github.event.inputs.build_type }}'))")
AMD_TAG="docker.io/agentscope/${IMAGE_BASE}:${DATE_TAG}-linux-amd64"
ARM_TAG="docker.io/agentscope/${IMAGE_BASE}:${DATE_TAG}-linux-arm64"
COMMON_TAG="docker.io/agentscope/${IMAGE_BASE}:${DATE_TAG}"
if docker manifest inspect "$AMD_TAG" >/dev/null 2>&1 && docker manifest inspect "$ARM_TAG" >/dev/null 2>&1; then
echo "Creating multi-arch manifest for $COMMON_TAG"
docker manifest create "$COMMON_TAG" --amend "$AMD_TAG" --amend "$ARM_TAG"
docker manifest push "$COMMON_TAG"
else
echo "Missing architecture image in DockerHub, skipping manifest creation."
fi
- name: Create Multi-arch Manifest for Aliyun ACR
if: ${{ github.event.inputs.single_arch == 'false' && secrets.ALIYUN_ACR_USERNAME && secrets.ALIYUN_ACR_PASSWORD }}
run: |
DATE_TAG=$(date +%Y%m%d)
IMAGE_BASE=$(python -c "from src.agentscope_runtime.sandbox.registry import SandboxRegistry; print(SandboxRegistry.get_image_by_type('${{ github.event.inputs.build_type }}'))")
REG="agentscope-registry.ap-southeast-1.cr.aliyuncs.com/agentscope"
AMD_TAG="${REG}/${IMAGE_BASE}:${DATE_TAG}-linux-amd64"
ARM_TAG="${REG}/${IMAGE_BASE}:${DATE_TAG}-linux-arm64"
COMMON_TAG="${REG}/${IMAGE_BASE}:${DATE_TAG}"
if docker manifest inspect "$AMD_TAG" >/dev/null 2>&1 && docker manifest inspect "$ARM_TAG" >/dev/null 2>&1; then
echo "Creating multi-arch manifest for $COMMON_TAG"
docker manifest create "$COMMON_TAG" --amend "$AMD_TAG" --amend "$ARM_TAG"
docker manifest push "$COMMON_TAG"
else
echo "Missing architecture image in Aliyun ACR, skipping manifest creation."
fi