-
Notifications
You must be signed in to change notification settings - Fork 1
130 lines (124 loc) · 4.01 KB
/
build.yml
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
name: CI
on:
push:
tags: [ '[0-9]+.[0-9]+.[0-9]+' ]
branches: [ main ]
pull_request:
branches: [ main ]
types: [ opened, reopened, synchronize ]
workflow_dispatch:
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
test-project:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-22.04, macos-14, windows-2022 ]
java: [ 21 ]
steps:
- name: Checkout repository
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871
- name: Setup Java
uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73
with:
distribution: temurin
java-version: ${{ matrix.java }}
cache: maven
- name: Executable Maven Wrapper
if: contains(matrix.os, 'win') == false
run: chmod +x ./mvnw
- name: Test project
run: ./mvnw test
quality-check:
needs: test-project
runs-on: ubuntu-22.04
permissions:
security-events: write
steps:
- name: Checkout repository
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871
with:
fetch-depth: 0
- name: Setup Java
uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73
with:
distribution: temurin
java-version: 21
cache: maven
- name: Initialize CodeQL
uses: github/codeql-action/init@f779452ac5af1c261dce0346a8f964149f49322b
with:
languages: java
queries: security-and-quality
- name: Executable Maven Wrapper
run: chmod +x ./mvnw
- name: Compile project
run: ./mvnw compile
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@f779452ac5af1c261dce0346a8f964149f49322b
- name: Perform SonarCloud Analysis
run: |
./mvnw verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar \
-Dsonar.host.url=https://sonarcloud.io \
-Dsonar.token=${{ secrets.SONAR_TOKEN }} \
-Dsonar.organization=${{ secrets.SONAR_KEY }} \
-Dsonar.qualitygate.wait=true
package-jars:
needs: quality-check
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871
- name: Setup Java
uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73
with:
distribution: temurin
java-version: 21
cache: maven
- name: Executable Maven Wrapper
run: chmod +x ./mvnw
- name: Package project
run: ./mvnw package -Passembly -DskipTests
- name: Upload artifacts
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882
with:
name: opdf-jar
path: ./opdf-assembly/target/opdf.jar
build-native:
needs: package-jars
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-22.04, macos-14, windows-2022 ]
include:
- os: ubuntu-22.04
artifact_name: opdf
package_name: opdf-linux
- os: macos-14
artifact_name: opdf
package_name: opdf-macos
- os: windows-2022
artifact_name: opdf.exe
package_name: opdf-windows
steps:
- name: Download artifacts
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16
with:
name: opdf-jar
- name: Setup GraalVM
uses: graalvm/setup-graalvm@6f327093bb6a42fe5eac053d21b168c46aa46f22
with:
java-version: 21
distribution: graalvm
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Build native image
run: native-image --no-fallback -H:+AddAllCharsets -jar opdf.jar
- name: Upload artifacts
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882
with:
name: ${{ matrix.package_name }}
path: ${{ matrix.artifact_name }}