Repository navigation
133 lines (111 loc) · 3.92 KB
/
Copy pathrelease.yml
File metadata and controls
133 lines (111 loc) · 3.92 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
126
127
128
129
130
131
132
133
name: Release build
on:
release:
types: [ created ]
jobs:
prepare:
runs-on: ubuntu-latest
outputs:
name: ${{ steps.details.outputs.name }}
version: ${{ steps.details.outputs.version }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Extract project details
id: details
run: |
echo "name=$(grep 'rootProject.name' settings.gradle.kts | awk -F "=" '{print $2}' | tr -d ' \"\n')" >> $GITHUB_OUTPUT
echo "version=${GITHUB_REF_NAME#v}" >> $GITHUB_OUTPUT
test:
needs: prepare
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Validate gradle wrapper
uses: gradle/actions/wrapper-validation@v3
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: 21
distribution: 'temurin'
check-latest: true
- name: Run tests
env:
VERSION: ${{ needs.prepare.outputs.version }}
run: ./gradlew test
- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: Test results
path: |
**/build/test-results/test/*.xml
**/build/reports/tests/test/
- name: Test summary
if: always()
run: |
echo "## Test Results" >> $GITHUB_STEP_SUMMARY
find . -name "TEST-*.xml" -type f | while read file; do
suite=$(grep -oP 'name="\K[^"]+' "$file" | head -1)
tests=$(grep -oP 'tests="\K[^"]+' "$file" | head -1)
failures=$(grep -oP 'failures="\K[^"]+' "$file" | head -1)
errors=$(grep -oP 'errors="\K[^"]+' "$file" | head -1)
echo "- **$suite**: $tests tests, $failures failures, $errors errors" >> $GITHUB_STEP_SUMMARY
done
build:
needs: [prepare, test]
runs-on: ubuntu-latest
permissions:
contents: write
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Validate gradle wrapper
uses: gradle/actions/wrapper-validation@v3
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: 21
distribution: 'temurin'
check-latest: true
- name: Build project
env:
VERSION: ${{ needs.prepare.outputs.version }}
run: ./gradlew build shadowJar
- name: Create output directory
run: mkdir output
- name: Move API
run: mv intercept-api/build/libs/intercept-api-${{ needs.prepare.outputs.version }}.jar output/${{ needs.prepare.outputs.name }}-API-${{ needs.prepare.outputs.version }}.jar
- name: Move platform jars
run: |
mv build/libs/${{ needs.prepare.outputs.name }}-${{ needs.prepare.outputs.version }}-PAPER.jar output/${{ needs.prepare.outputs.name }}-PAPER-${{ needs.prepare.outputs.version }}.jar
- name: Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
output/${{ needs.prepare.outputs.name }}-API-${{ needs.prepare.outputs.version }}.jar
output/${{ needs.prepare.outputs.name }}-PAPER-${{ needs.prepare.outputs.version }}.jar
publish:
needs: [prepare, test]
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: 21
distribution: 'temurin'
check-latest: true
- name: Publish API to Maven repository
env:
PUBLISH_USER: ${{ secrets.PUBLISH_USER }}
PUBLISH_TOKEN: ${{ secrets.PUBLISH_TOKEN }}
VERSION: ${{ needs.prepare.outputs.version }}
PUBLISH_REALM: release
run: ./gradlew --no-daemon publish