Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
6c6a499
Initial plan
Copilot Jan 4, 2026
9ca8074
Add comprehensive NVM feature gaps analysis document
Copilot Jan 4, 2026
f36c83a
Add feature parity checklist for quick reference
Copilot Jan 4, 2026
e80d869
Add analysis summary README for easy navigation
Copilot Jan 4, 2026
439c48e
feat: add alias support and QA tooling
Thavarshan Jan 15, 2026
539fe3c
feat: enhance alias management and add QA tooling
Thavarshan Jan 15, 2026
c9939c9
feat: enhance alias functionality and add QA tooling
Thavarshan Jan 15, 2026
f29beec
fix: update shfmt download link to version 3.12.0 in workflow and con…
Thavarshan Jan 15, 2026
a435ad3
refactor: improve shell sourcing logic and enhance directory change h…
Thavarshan Jan 15, 2026
1dd2aff
Refactor code structure for improved readability and maintainability
Thavarshan Jan 15, 2026
72018dc
feat: add alias management commands and remove built-in test command
Thavarshan Jan 15, 2026
6ce9725
fix: remove built-in tests from integration and quality gate dependen…
Thavarshan Jan 15, 2026
608fca3
fix: pass false argument to phpvm_deactivate for improved functionality
Thavarshan Jan 15, 2026
b97c682
feat: update testing workflow to use BATS and validate core commands
Thavarshan Jan 15, 2026
072d85a
fix: update OS condition checks for BATS installation and PHP tests
Thavarshan Jan 15, 2026
2efa53c
refactor: Remove outdated workflows and enhance release validation pr…
Thavarshan Jan 15, 2026
3e41f3c
fix: update conditions for multi-distribution and performance testing…
Thavarshan Jan 15, 2026
eef2dc3
chore: clarify schedule timing in CI pipeline comments
Thavarshan Jan 15, 2026
5859641
docs: update badges and CI documentation to reflect consolidated work…
Thavarshan Jan 15, 2026
7c5096f
chore: bump version to 1.8.0
Thavarshan Jan 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
525 changes: 525 additions & 0 deletions .github/workflows/ci.yml

Large diffs are not rendered by default.

166 changes: 103 additions & 63 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,85 +1,125 @@
name: Release Validation
name: Release

on:
release:
types: [published, prereleased]
workflow_dispatch:

jobs:
# Validate release
release-validation:
name: Release Validation
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]

# Validate release readiness
release-check:
name: Release Readiness Check
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: Validate Release Version
- 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 Release Version ==="
echo "=== Validating Version Consistency ==="

chmod +x ./phpvm.sh

# Check version output
VERSION_OUTPUT=$(./phpvm.sh version)
echo "Version output: $VERSION_OUTPUT"
echo "Script version: $VERSION_OUTPUT"

if echo "$VERSION_OUTPUT" | grep -q "phpvm version"; then
echo "Version output format is correct"
else
echo "Version output format is incorrect"
exit 1
fi

- name: Test Core Functionality
run: |
echo "=== Testing Core Functionality ==="
# Extract version from output
SCRIPT_VERSION=$(echo "$VERSION_OUTPUT" | grep -oP 'version \K[0-9]+\.[0-9]+\.[0-9]+' || echo "unknown")

./phpvm.sh version
./phpvm.sh help
./phpvm.sh list
./phpvm.sh test
# Check if CHANGELOG mentions recent version
if [ -f CHANGELOG.md ]; then
echo "Checking CHANGELOG for version information..."
head -n 20 CHANGELOG.md
fi

echo "All core commands work"
echo "✓ Version validation completed"

- name: Performance Check
- name: Verify Documentation
run: |
echo "=== Performance Check ==="

time ./phpvm.sh version >/dev/null
time ./phpvm.sh help >/dev/null

echo "Performance check completed"
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: Documentation Check
if: runner.os == 'Linux'
- name: Package Release
run: |
echo "=== Documentation Check ==="

# Check that README contains key commands
if grep -q "phpvm version" README.MD; then
echo "README contains version command documentation"
else
echo "README might be missing version command documentation"
fi

if grep -q "phpvm install" README.MD; then
echo "README contains install command documentation"
else
echo "README missing install command documentation"
exit 1
fi

# Check changelog exists
if [ -f CHANGELOG.md ]; then
echo "Changelog file exists"
else
echo "Changelog file missing"
exit 1
fi

echo "Documentation check completed"
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!"
Loading
Loading