Skip to content

Commit fd3f406

Browse files
committed
Add release workflow for automated GitHub releases
Triggers on version tags (v*) and: - Runs tests on macOS - Builds release configuration - Creates GitHub release with SPM installation instructions
1 parent 40f6bd6 commit fd3f406

File tree

1 file changed

+105
-0
lines changed

1 file changed

+105
-0
lines changed

.github/workflows/release.yml

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
jobs:
9+
test:
10+
name: Test Release
11+
runs-on: macos-26
12+
steps:
13+
- name: Checkout code
14+
uses: actions/checkout@v4
15+
16+
- name: Check Swift version
17+
run: swift --version
18+
19+
- name: Run tests
20+
run: swift test
21+
22+
- name: Build release
23+
run: swift build -c release
24+
25+
create-release:
26+
name: Create GitHub Release
27+
needs: [test]
28+
runs-on: ubuntu-latest
29+
permissions:
30+
contents: write
31+
steps:
32+
- name: Checkout code
33+
uses: actions/checkout@v4
34+
35+
- name: Get version from tag
36+
id: get_version
37+
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
38+
39+
- name: Generate release notes
40+
id: release_notes
41+
run: |
42+
cat > release_notes.md << 'EOF'
43+
## Installation
44+
45+
### Swift Package Manager
46+
47+
Add to your `Package.swift`:
48+
49+
```swift
50+
dependencies: [
51+
.package(url: "https://github.com/${{ github.repository }}.git", from: "${{ steps.get_version.outputs.VERSION }}")
52+
]
53+
```
54+
55+
Then add `XCResultParser` to your target dependencies:
56+
57+
```swift
58+
.target(name: "YourTarget", dependencies: ["XCResultParser"])
59+
```
60+
61+
## Features
62+
63+
- 📦 Parse Xcode `.xcresult` bundles
64+
- ⚠️ Extract build warnings, errors, and analyzer warnings
65+
- 🧪 Extract test failures with source locations
66+
- 🔄 Type-safe Swift models with resilient decoding
67+
- ⚡ Async/await support with Swift concurrency
68+
- 🛡️ Zero external dependencies
69+
70+
## Requirements
71+
72+
- Swift 6.2+
73+
- macOS 15+
74+
- Xcode 16+
75+
76+
## Usage
77+
78+
```swift
79+
import XCResultParser
80+
81+
let parser = XCResultParser(path: "path/to/test.xcresult")
82+
let result = try await parser.parse()
83+
84+
// Access build issues
85+
for issue in result.buildResults?.allIssues ?? [] {
86+
print("\(issue.severity): \(issue.message)")
87+
}
88+
89+
// Access test failures
90+
for failure in result.testResults?.failures ?? [] {
91+
print("FAIL: \(failure.testClass).\(failure.testName)")
92+
}
93+
```
94+
95+
For more information, see the [README](https://github.com/${{ github.repository }}/blob/main/README.md).
96+
EOF
97+
98+
- name: Create Release
99+
uses: softprops/action-gh-release@v2
100+
with:
101+
body_path: release_notes.md
102+
draft: false
103+
prerelease: false
104+
env:
105+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)