ebdac49f91
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
67 lines
2.2 KiB
YAML
67 lines
2.2 KiB
YAML
name: Build and Deploy
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
build-and-deploy:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Create proxy network if needed
|
|
run: docker network create proxy || true
|
|
|
|
- name: Build Docker image
|
|
run: docker build -t oma-memorial:latest .
|
|
|
|
- name: Stop and remove old container
|
|
run: |
|
|
docker stop oma-memorial 2>/dev/null || true
|
|
docker rm oma-memorial 2>/dev/null || true
|
|
|
|
- name: Ensure data directory exists
|
|
run: |
|
|
mkdir -p ${{ gitea.workspace }}/data/uploads/photos ${{ gitea.workspace }}/data/uploads/videos ${{ gitea.workspace }}/data/uploads/music
|
|
chown -R 1001:1001 ${{ gitea.workspace }}/data
|
|
|
|
- name: Run container in proxy network
|
|
run: |
|
|
HOST_IP=$(docker network inspect proxy --format '{{range .IPAM.Config}}{{.Gateway}}{{end}}' 2>/dev/null || ip route | grep default | awk '{print $3}')
|
|
docker run -d \
|
|
--name oma-memorial \
|
|
--network proxy \
|
|
--add-host=host.docker.internal:${HOST_IP} \
|
|
--restart unless-stopped \
|
|
-e NODE_ENV=production \
|
|
-e OLLAMA_URL="http://host.docker.internal:11434" \
|
|
-e SITE_PASSWORD="${{ secrets.SITE_PASSWORD }}" \
|
|
-e ADMIN_PASSWORD="${{ secrets.ADMIN_PASSWORD }}" \
|
|
-v ${{ gitea.workspace }}/data:/app/data \
|
|
oma-memorial:latest
|
|
|
|
- name: Health check
|
|
run: |
|
|
echo "Waiting for container to start..."
|
|
for i in $(seq 1 15); do
|
|
if docker exec oma-memorial node -e "fetch('http://localhost:3000/api/candles').then(r=>{process.exit(r.ok?0:1)}).catch(()=>process.exit(1))" 2>/dev/null; then
|
|
echo "Container is healthy!"
|
|
exit 0
|
|
fi
|
|
echo "Attempt $i/15..."
|
|
sleep 2
|
|
done
|
|
echo "Health check failed"
|
|
docker logs oma-memorial --tail 30
|
|
exit 1
|
|
|
|
- name: Show container status
|
|
if: always()
|
|
run: |
|
|
docker ps --filter name=oma-memorial
|
|
docker logs oma-memorial --tail 20
|