server-monitor-manager/.github/workflows/release-verification.yml
2026-08-15 23:29:49 +07:00

77 lines
2.4 KiB
YAML

name: Release Verification
on:
workflow_run:
workflows: ["Release pipeline"]
types: [completed]
workflow_dispatch:
inputs:
tag:
description: 'Release tag to verify'
required: true
permissions:
contents: read
jobs:
verify:
if: >-
github.event_name == 'workflow_dispatch' ||
(github.event.workflow_run.conclusion == 'success' &&
startsWith(github.event.workflow_run.head_branch, 'v'))
runs-on: ubuntu-latest
steps:
- name: Checkout tests
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
sparse-checkout: |
tests/release-verification
tests/contracts/monitor-snapshot-v1.txt
sparse-checkout-cone-mode: false
- name: Determine Tag
id: tag
env:
MANUAL_TAG: ${{ inputs.tag }}
RELEASE_TAG: ${{ github.event.workflow_run.head_branch }}
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
tag="$MANUAL_TAG"
else
tag="$RELEASE_TAG"
fi
[[ "$tag" =~ ^v[0-9]+\.[0-9]+\.[0-9]+([.-][0-9A-Za-z.-]+)?$ ]] \
|| { echo "Invalid release tag: $tag" >&2; exit 1; }
echo "tag=$tag" >> "$GITHUB_OUTPUT"
- name: Verify Assets List
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
bash tests/release-verification/verify-assets.sh "${{ steps.tag.outputs.tag }}"
- name: Isolate Workspace
run: |
# Move tests to a safe location and clean the workspace
# This ensures the installation does not accidentally use source files
cp -r tests /tmp/isolated_tests
rm -rf * .git
- name: Run Positive Installation
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
mkdir -p workspace
cd workspace
# Bring contract back for verification script
mkdir -p tests/contracts
cp /tmp/isolated_tests/contracts/monitor-snapshot-v1.txt tests/contracts/
bash /tmp/isolated_tests/release-verification/run-positive-installation.sh "${{ steps.tag.outputs.tag }}"
- name: Run Negative Tests
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
mkdir -p workspace-neg
cd workspace-neg
bash /tmp/isolated_tests/release-verification/run-negative-tests.sh "${{ steps.tag.outputs.tag }}"