-
-
Notifications
You must be signed in to change notification settings - Fork 9
125 lines (104 loc) · 3.52 KB
/
release.yml
File metadata and controls
125 lines (104 loc) · 3.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
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!"