Skip to content

Release

Release #16

Workflow file for this run

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!"