name: Reusable Release Workflow on: workflow_call: inputs: tag: description: 'Version tag (e.g., v1.0.0)' required: true type: string generate-notes: description: 'Auto-generate release notes' required: false type: boolean default: true permissions: contents: write jobs: release: name: Create Release runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 with: fetch-depth: 0 - name: Validate version tag run: | if ! [[ "${{ inputs.tag }}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then echo "Invalid version tag format. Expected vX.Y.Z" exit 1 fi - name: Generate release highlights env: TAG_NAME: ${{ inputs.tag }} run: | TAG_VERSION="${TAG_NAME#v}" cat > release_body.md <