Release #16
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | |
| on: | |
| release: | |
| types: [published, prereleased] | |
| workflow_dispatch: | |
| jobs: | |
| # Validate release readiness | |
| release-check: | |
| name: Release Readiness Check | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Verify Release Assets | |
| run: | | |
| echo "=== Verifying Release Assets ===" | |
| # Check required files exist | |
| required_files=( | |
| "phpvm.sh" | |
| "install.sh" | |
| "README.md" | |
| "CHANGELOG.md" | |
| "LICENSE" | |
| ) | |
| for file in "${required_files[@]}"; do | |
| if [ -f "$file" ]; then | |
| echo "β $file exists" | |
| else | |
| echo "β Missing required file: $file" | |
| exit 1 | |
| fi | |
| done | |
| - name: Validate Version Consistency | |
| run: | | |
| echo "=== Validating Version Consistency ===" | |
| chmod +x ./phpvm.sh | |
| VERSION_OUTPUT=$(./phpvm.sh version) | |
| echo "Script version: $VERSION_OUTPUT" | |
| # Extract version from output | |
| SCRIPT_VERSION=$(echo "$VERSION_OUTPUT" | grep -oP 'version \K[0-9]+\.[0-9]+\.[0-9]+' || echo "unknown") | |
| # Check if CHANGELOG mentions recent version | |
| if [ -f CHANGELOG.md ]; then | |
| echo "Checking CHANGELOG for version information..." | |
| head -n 20 CHANGELOG.md | |
| fi | |
| echo "β Version validation completed" | |
| - name: Verify Documentation | |
| run: | | |
| echo "=== Verifying Documentation ===" | |
| # Check README has essential sections | |
| sections=("Installation" "Usage" "Commands") | |
| for section in "${sections[@]}"; do | |
| if grep -qi "$section" README.md; then | |
| echo "β README contains $section section" | |
| else | |
| echo "β README might be missing $section section" | |
| fi | |
| done | |
| echo "β Documentation verification completed" | |
| # Create release artifacts | |
| release-artifacts: | |
| name: Generate Release Artifacts | |
| runs-on: ubuntu-latest | |
| needs: release-check | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Package Release | |
| run: | | |
| echo "=== Packaging Release ===" | |
| # Create release package | |
| mkdir -p dist | |
| cp phpvm.sh dist/ | |
| cp install.sh dist/ | |
| cp README.md dist/ | |
| cp LICENSE dist/ | |
| cp CHANGELOG.md dist/ | |
| # Create tarball | |
| tar -czf phpvm-release.tar.gz -C dist . | |
| echo "β Release package created: phpvm-release.tar.gz" | |
| ls -lh phpvm-release.tar.gz | |
| - name: Upload Release Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: phpvm-release | |
| path: phpvm-release.tar.gz | |
| retention-days: 90 | |
| # Post-release notification | |
| release-notify: | |
| name: Release Notification | |
| runs-on: ubuntu-latest | |
| needs: [release-check, release-artifacts] | |
| if: github.event_name == 'release' | |
| steps: | |
| - name: Release Summary | |
| run: | | |
| echo "=== Release Summary ===" | |
| echo "Release: ${{ github.event.release.tag_name }}" | |
| echo "Type: ${{ github.event.release.prerelease && 'Pre-release' || 'Release' }}" | |
| echo "URL: ${{ github.event.release.html_url }}" | |
| echo "" | |
| echo "β All release checks passed!" | |
| echo "β Release artifacts generated!" | |
| echo "β phpvm ${{ github.event.release.tag_name }} is ready!" |