The workflow was failing because /api/state requires authentication, but the verification step was making an unauthenticated request. Changes: - Authenticate with demo/demo credentials before checking node count - Use jq for cleaner JSON parsing instead of grep/cut - Check total node count from API response instead of regex pattern matching Related to user report about demo server not updating to 4.26.3. The demo server was actually updated successfully, but the workflow marked itself as failed due to the verification check failing.
58 lines
2.2 KiB
YAML
58 lines
2.2 KiB
YAML
name: Update Demo Server
|
|
|
|
on:
|
|
release:
|
|
types: [published]
|
|
|
|
jobs:
|
|
update-demo:
|
|
# Only run for stable releases (not pre-releases)
|
|
if: github.event.release.prerelease == false
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Check release type
|
|
run: |
|
|
echo "Release: ${{ github.event.release.tag_name }}"
|
|
echo "Prerelease: ${{ github.event.release.prerelease }}"
|
|
echo "Updating demo server to latest stable release..."
|
|
|
|
- name: Setup SSH
|
|
run: |
|
|
mkdir -p ~/.ssh
|
|
echo "${{ secrets.DEMO_SERVER_SSH_KEY }}" > ~/.ssh/id_ed25519
|
|
chmod 600 ~/.ssh/id_ed25519
|
|
ssh-keyscan -H ${{ secrets.DEMO_SERVER_HOST }} >> ~/.ssh/known_hosts
|
|
|
|
- name: Update demo server
|
|
run: |
|
|
ssh -i ~/.ssh/id_ed25519 ${{ secrets.DEMO_SERVER_USER }}@${{ secrets.DEMO_SERVER_HOST }} \
|
|
'curl -fsSL https://raw.githubusercontent.com/rcourtman/Pulse/main/install.sh | sudo bash'
|
|
|
|
- name: Verify update
|
|
run: |
|
|
# Wait a moment for service to restart
|
|
sleep 5
|
|
|
|
# Check version endpoint
|
|
VERSION=$(ssh -i ~/.ssh/id_ed25519 ${{ secrets.DEMO_SERVER_USER }}@${{ secrets.DEMO_SERVER_HOST }} \
|
|
"curl -s http://localhost:7655/api/version | jq -r .version")
|
|
|
|
echo "Demo server is now running version: $VERSION"
|
|
|
|
# Verify mock mode is active by authenticating and checking node count
|
|
NODES=$(ssh -i ~/.ssh/id_ed25519 ${{ secrets.DEMO_SERVER_USER }}@${{ secrets.DEMO_SERVER_HOST }} \
|
|
'curl -s -c /tmp/demo-cookies.txt http://localhost:7655/api/login -X POST -H "Content-Type: application/json" -d "{\"username\":\"demo\",\"password\":\"demo\"}" > /dev/null && curl -s -b /tmp/demo-cookies.txt http://localhost:7655/api/state | jq -r ".nodes | length" && rm -f /tmp/demo-cookies.txt')
|
|
|
|
echo "Mock nodes detected: $NODES"
|
|
|
|
if [ "$NODES" -ge 1 ]; then
|
|
echo "✅ Demo server successfully updated and verified!"
|
|
else
|
|
echo "⚠️ Demo server updated but mock mode may not be active"
|
|
exit 1
|
|
fi
|
|
|
|
- name: Cleanup SSH key
|
|
if: always()
|
|
run: rm -f ~/.ssh/id_ed25519
|