Files
excalidraw-mcp-sentinel/.gitea/workflows/docker.yml
T
forkless 27dbc1f40e
Docker Build (ARM64) / Build & Push (push) Successful in 1m28s
fix: back to runs-on ubuntu-latest, both runners compete
2026-06-24 18:27:55 +02:00

99 lines
3.0 KiB
YAML

# Gitea Actions: ARM64 native Docker build
name: Docker Build (ARM64)
on:
push:
branches: [main]
paths:
- 'Dockerfile'
- 'Dockerfile.canvas'
- 'src/**'
- 'frontend/**'
- 'package*.json'
- '.dockerignore'
- '.gitea/**'
pull_request:
branches: [main]
paths:
- 'Dockerfile'
- 'Dockerfile.canvas'
- 'src/**'
- 'frontend/**'
- 'package*.json'
- '.dockerignore'
- '.gitea/**'
workflow_dispatch:
concurrency:
group: docker-arm64-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
REGISTRY: gitea.forkless.com
IMAGE_MCP: gitea.forkless.com/forkless/excalidraw-mcp-sentinel
IMAGE_CANVAS: gitea.forkless.com/forkless/excalidraw-mcp-sentinel-canvas
jobs:
docker:
name: Build & Push
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build MCP Server
run: |
docker build \
--tag ${{ env.IMAGE_MCP }}:latest \
--tag ${{ env.IMAGE_MCP }}:${{ github.sha }} \
--file Dockerfile .
- name: Build Canvas Server
run: |
docker build \
--tag ${{ env.IMAGE_CANVAS }}:latest \
--tag ${{ env.IMAGE_CANVAS }}:${{ github.sha }} \
--file Dockerfile.canvas .
- name: Login to Gitea Container Registry
if: github.ref == 'refs/heads/main' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
run: |
echo "${{ secrets.GITEATOKEN }}" | \
docker login ${{ env.REGISTRY }} \
--username "${{ secrets.GITEAUSER }}" \
--password-stdin
- name: Push latest
if: github.ref == 'refs/heads/main' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
run: |
docker push ${{ env.IMAGE_MCP }}:latest
docker push ${{ env.IMAGE_MCP }}:${{ github.sha }}
docker push ${{ env.IMAGE_CANVAS }}:latest
docker push ${{ env.IMAGE_CANVAS }}:${{ github.sha }}
- name: Tag version
if: startsWith(github.ref, 'refs/tags/v')
run: |
VERSION=${GITHUB_REF#refs/tags/v}
docker tag ${{ env.IMAGE_MCP }}:latest ${{ env.IMAGE_MCP }}:$VERSION
docker tag ${{ env.IMAGE_CANVAS }}:latest ${{ env.IMAGE_CANVAS }}:$VERSION
docker push ${{ env.IMAGE_MCP }}:$VERSION
docker push ${{ env.IMAGE_CANVAS }}:$VERSION
- name: Smoke test (PR only)
if: github.event_name == 'pull_request'
run: |
docker run -d --network host \
--name test-canvas \
${{ env.IMAGE_CANVAS }}:${{ github.sha }}
trap "docker rm -f test-canvas" EXIT
for i in $(seq 1 15); do
if curl -sf http://localhost:3000/health > /dev/null 2>&1; then
echo "Canvas healthy"
exit 0
fi
sleep 1
done
echo "Health check timeout"
exit 1