55d3348085
Run Tests / Backend Tests (push) Has been cancelled
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 15m27s
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Has started running
- Remove container blocks causing Docker-in-Docker permission issues - Use actions/checkout@v4 instead of manual git cloning - Use actions/setup-python@v5 and actions/setup-node@v4 for clean environments - Remove nsenter workarounds and mount complexity - Fix volume paths to use /volume1/docker/* directly - Add /volume1/docker/claude-dev to runner valid_volumes config This eliminates 20+ commits of permission/namespace hacks by letting workflows run directly in the runner's environment which already has Docker access and proper volume mounts configured.
112 lines
3.9 KiB
YAML
112 lines
3.9 KiB
YAML
name: Deploy Claude Dev (Dev)
|
|
on:
|
|
push:
|
|
branches: [dev]
|
|
paths:
|
|
- 'claude-dev/**'
|
|
- '.gitea/workflows/deploy-claude-dev-dev.yml'
|
|
workflow_dispatch:
|
|
inputs:
|
|
rollback_image:
|
|
description: 'Optional full image ref (for rollback), e.g. claude-dev:dev-abc123'
|
|
required: false
|
|
|
|
concurrency:
|
|
group: deploy-claude-dev-dev
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
deploy-claude-dev-dev:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Resolve image tags
|
|
run: |
|
|
set -euo pipefail
|
|
if [ -n "${{ inputs.rollback_image }}" ]; then
|
|
image_ref="${{ inputs.rollback_image }}"
|
|
image_tag="${image_ref#claude-dev:}"
|
|
if [ "$image_ref" = "$image_tag" ]; then
|
|
echo "rollback_image must be in claude-dev:<tag> format" >&2
|
|
exit 1
|
|
fi
|
|
echo "ROLLBACK_ONLY=1" >> "$GITHUB_ENV"
|
|
else
|
|
short_sha="$(git rev-parse --short=12 HEAD)"
|
|
date_tag="$(date +%Y%m%d%H%M%S)"
|
|
image_tag="dev-${date_tag}-${short_sha}"
|
|
image_ref="claude-dev:${image_tag}"
|
|
echo "ROLLBACK_ONLY=0" >> "$GITHUB_ENV"
|
|
fi
|
|
echo "CLAUDE_DEV_IMAGE_TAG=${image_tag}" >> "$GITHUB_ENV"
|
|
echo "CLAUDE_DEV_IMAGE=${image_ref}" >> "$GITHUB_ENV"
|
|
|
|
- name: Build claude-dev image
|
|
if: env.ROLLBACK_ONLY == '0'
|
|
run: |
|
|
set -euo pipefail
|
|
DOCKER_BUILDKIT=0 docker build \
|
|
--cache-from claude-dev:latest \
|
|
-t "$CLAUDE_DEV_IMAGE" \
|
|
-t claude-dev:latest \
|
|
claude-dev/
|
|
|
|
- name: Smoke test required tools
|
|
if: env.ROLLBACK_ONLY == '0'
|
|
run: |
|
|
set -euo pipefail
|
|
docker run --rm "$CLAUDE_DEV_IMAGE" bash /opt/claude-dev/scripts/smoke-tools.sh
|
|
|
|
- name: Smoke test network assumptions
|
|
if: env.ROLLBACK_ONLY == '0'
|
|
run: |
|
|
set -euo pipefail
|
|
docker run --rm --network host "$CLAUDE_DEV_IMAGE" bash /opt/claude-dev/scripts/smoke-network.sh
|
|
|
|
- name: Smoke test auth and mount expectations
|
|
if: env.ROLLBACK_ONLY == '0'
|
|
run: |
|
|
set -euo pipefail
|
|
docker run --rm --network host \
|
|
-e REQUIRE_MOUNTS=1 \
|
|
-v /volume1/docker/claude-dev/claude-config:/root/.claude \
|
|
-v /volume1/docker/claude-dev/claude-config/.claude.json:/root/.claude.json \
|
|
-v /volume1/docker/claude-dev/gitea_token:/root/.gitea_token:ro \
|
|
"$CLAUDE_DEV_IMAGE" \
|
|
bash /opt/claude-dev/scripts/smoke-auth.sh
|
|
|
|
- name: Record previous image
|
|
run: |
|
|
set -euo pipefail
|
|
mkdir -p /volume1/docker/claude-dev
|
|
previous_image="$(docker inspect -f '{{.Config.Image}}' claude-dev 2>/dev/null || true)"
|
|
if [ -n "$previous_image" ]; then
|
|
printf '%s\n' "$previous_image" > /volume1/docker/claude-dev/previous-image.txt
|
|
echo "Saved previous image: $previous_image"
|
|
else
|
|
echo "No existing claude-dev container found"
|
|
fi
|
|
|
|
- name: Sync compose and target tag
|
|
run: |
|
|
set -euo pipefail
|
|
cp claude-dev/docker-compose.yml /volume1/docker/claude-dev/docker-compose.yml
|
|
printf '%s\n' "$CLAUDE_DEV_IMAGE_TAG" > /volume1/docker/claude-dev/target-tag.txt
|
|
|
|
- name: Remove stale claude-dev container
|
|
run: docker rm -f claude-dev || true
|
|
|
|
- name: Deploy claude-dev
|
|
run: |
|
|
set -euo pipefail
|
|
CLAUDE_DEV_IMAGE_TAG="$CLAUDE_DEV_IMAGE_TAG" docker compose -f /volume1/docker/claude-dev/docker-compose.yml up -d --pull never
|
|
|
|
- name: Post-deploy runtime checks
|
|
run: |
|
|
set -euo pipefail
|
|
docker exec claude-dev bash -lc 'claude --version'
|
|
docker exec claude-dev bash -lc 'gh --version'
|
|
docker exec claude-dev bash -lc 'gh auth status || true'
|