Skip demo updates for non-latest releases

This commit is contained in:
rcourtman 2025-11-20 15:00:09 +00:00
parent 0b4db95db1
commit 3c97e520d6

View file

@ -17,7 +17,35 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Resolve target tag
id: target
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
TAG="${{ inputs.tag }}"
else
TAG="${{ github.event.release.tag_name }}"
fi
echo "tag=$TAG" >> "$GITHUB_OUTPUT"
- name: Skip if not latest published release
id: gate
if: github.event_name == 'release'
env:
GH_TOKEN: ${{ github.token }}
run: |
TARGET="${{ steps.target.outputs.tag }}"
LATEST=$(gh api "repos/${{ github.repository }}/releases/latest" --jq '.tag_name')
echo "Target tag: $TARGET"
echo "Latest published tag: $LATEST"
if [ "$TARGET" != "$LATEST" ]; then
echo "skip=true" >> "$GITHUB_OUTPUT"
echo "Release is not the latest; skipping demo update."
else
echo "skip=false" >> "$GITHUB_OUTPUT"
fi
- name: Check release type
if: steps.gate.outputs.skip != 'true'
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "Manual deployment triggered for: ${{ inputs.tag }}"
@ -28,12 +56,9 @@ jobs:
fi
- name: Wait for release assets
if: steps.gate.outputs.skip != 'true'
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
TAG="${{ inputs.tag }}"
else
TAG="${{ github.event.release.tag_name }}"
fi
TAG="${{ steps.target.outputs.tag }}"
echo "Waiting for release assets to be available..."
MAX_ATTEMPTS=30
@ -66,6 +91,7 @@ jobs:
exit 1
- name: Setup SSH
if: steps.gate.outputs.skip != 'true'
run: |
mkdir -p ~/.ssh
echo "${{ secrets.DEMO_SERVER_SSH_KEY }}" > ~/.ssh/id_ed25519
@ -73,11 +99,13 @@ jobs:
ssh-keyscan -H ${{ secrets.DEMO_SERVER_HOST }} >> ~/.ssh/known_hosts
- name: Update demo server
if: steps.gate.outputs.skip != 'true'
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
if: steps.gate.outputs.skip != 'true'
run: |
# Wait a moment for service to restart
sleep 5
@ -102,5 +130,5 @@ jobs:
fi
- name: Cleanup SSH key
if: always()
if: always() && steps.gate.outputs.skip != 'true'
run: rm -f ~/.ssh/id_ed25519