Files
roast_command_center/.gitea/workflows/deploy.yml
T
snowspeeder e51bfd3dca
Test and deploy / test-and-deploy (push) Successful in 55s
Wait for application readiness in deployment
2026-07-31 06:27:09 -04:00

61 lines
1.8 KiB
YAML

name: Test and deploy
on:
push:
branches: [master]
workflow_dispatch:
concurrency:
group: roast-command-center-production
cancel-in-progress: false
jobs:
test-and-deploy:
runs-on: unraid
steps:
- name: Check out the pushed revision
uses: https://github.com/actions/checkout@v4
# Host-mode action workspaces are ephemeral runner internals. Copy the checked-out SHA
# to a normal writable path so Node tests and Docker Compose see the same source tree.
- name: Prepare isolated build directory
run: |
export CI_WORKDIR="/tmp/roast-command-center-${GITHUB_RUN_ID}"
rm -rf "$CI_WORKDIR"
mkdir -p "$CI_WORKDIR"
cp -a ./. "$CI_WORKDIR/"
echo "CI_WORKDIR=$CI_WORKDIR" >> "$GITHUB_ENV"
- name: Install dependencies
run: cd "$CI_WORKDIR" && npm ci
- name: Test
run: cd "$CI_WORKDIR" && npm test
- name: Deploy to Unraid Docker
run: |
cd "$CI_WORKDIR"
docker compose \
--project-name roast_command_center \
--env-file /run/roast-production.env \
-f docker-compose.yml \
up -d --build --remove-orphans
- name: Verify the running container
run: |
cd "$CI_WORKDIR"
for attempt in {1..15}; do
if docker compose \
--project-name roast_command_center \
--env-file /run/roast-production.env \
-f docker-compose.yml \
exec -T app node -e "fetch('http://127.0.0.1:8090/').then((response) => process.exit(response.ok ? 0 : 1))"; then
break
fi
if [ "$attempt" -eq 15 ]; then
exit 1
fi
sleep 2
done
curl --fail --retry 10 --retry-delay 2 https://roast.srmr.xyz/