Bump dawidd6/action-send-mail from 3 to 4
[yosql.git] / .github / workflows / verify.yml
bloba0901d79fc9218a8206a0211b5f258ee1c3623a6
1 name: Verify Commits
2 on:
3   pull_request:
4     branches: [ main ]
5 env:
6   JAVA_VERSION: 17
7 jobs:
8   maven:
9     name: Build Maven Tooling on ${{ matrix.os }}
10     runs-on: ${{ matrix.os }}
11     strategy:
12       matrix:
13         os:
14           - ubuntu-latest
15           - macos-latest
16           - windows-latest
17     steps:
18       - id: checkout
19         name: Clone Git Repository
20         uses: actions/checkout@v4
21       - id: graal
22         name: Setup GraalVM
23         uses: graalvm/setup-graalvm@v1
24         with:
25           distribution: graalvm
26           java-version: ${{ env.JAVA_VERSION }}
27           github-token: ${{ secrets.GITHUB_TOKEN }}
28           cache: maven
29       - id: maven
30         name: Maven Tooling
31         run: mvn --batch-mode --projects yosql-tooling/yosql-tooling-maven,yosql-examples/yosql-examples-common --also-make install
32       - id: maven_examples
33         name: Maven Examples
34         run: mvn --batch-mode --projects yosql-examples/yosql-examples-maven --also-make --also-make-dependents verify
35   gradle:
36     name: Build Gradle Tooling on ${{ matrix.os }}
37     runs-on: ${{ matrix.os }}
38     strategy:
39       matrix:
40         os:
41           - ubuntu-latest
42           - macos-latest
43           - windows-latest
44     steps:
45       - id: checkout
46         name: Clone Git Repository
47         uses: actions/checkout@v4
48       - id: graal
49         name: Setup GraalVM
50         uses: graalvm/setup-graalvm@v1
51         with:
52           distribution: graalvm
53           java-version: ${{ env.JAVA_VERSION }}
54           github-token: ${{ secrets.GITHUB_TOKEN }}
55           cache: maven
56       - id: maven
57         name: Maven Tooling
58         run: mvn --batch-mode --projects yosql-tooling/yosql-tooling-dagger,yosql-examples/yosql-examples-common --also-make install
59       - id: gradle
60         name: Gradle Tooling
61         run: cd ./yosql-examples/yosql-examples-gradle/ && ./gradlew build run
62   ant:
63     name: Build Ant Tooling on ${{ matrix.os }}
64     runs-on: ${{ matrix.os }}
65     strategy:
66       matrix:
67         os:
68           - ubuntu-latest
69           - macos-latest
70           - windows-latest
71     steps:
72       - id: checkout
73         name: Clone Git Repository
74         uses: actions/checkout@v4
75       - id: graal
76         name: Setup GraalVM
77         uses: graalvm/setup-graalvm@v1
78         with:
79           distribution: graalvm
80           java-version: ${{ env.JAVA_VERSION }}
81           github-token: ${{ secrets.GITHUB_TOKEN }}
82           cache: maven
83       - id: maven
84         name: Ant Tooling
85         run: mvn --batch-mode --projects yosql-tooling/yosql-tooling-ant --also-make verify
86       - id: maven_examples
87         name: Ant Examples
88         run: mvn --batch-mode --projects yosql-examples/yosql-examples-ant --also-make --also-make-dependents verify
89       - id: upload-ant-tooling
90         name: Upload Ant Tooling
91         uses: actions/upload-artifact@v4
92         with:
93           name: yosql-tooling-ant-${{ matrix.os }}
94           path: ./yosql-tooling/yosql-tooling-ant/target/yosql-tooling-ant-*-dist*
95   cli:
96     name: Build CLI Tooling on ${{ matrix.os }}
97     runs-on: ${{ matrix.os }}
98     strategy:
99       matrix:
100         os:
101           - ubuntu-latest
102           - macos-latest
103           - windows-latest
104     steps:
105       - id: checkout
106         name: Clone Git Repository
107         uses: actions/checkout@v4
108       - id: graal
109         name: Setup GraalVM
110         uses: graalvm/setup-graalvm@v1
111         with:
112           distribution: graalvm
113           java-version: ${{ env.JAVA_VERSION }}
114           github-token: ${{ secrets.GITHUB_TOKEN }}
115           cache: maven
116       - id: maven
117         name: CLI Tooling
118         run: mvn --batch-mode --projects yosql-tooling/yosql-tooling-cli --also-make --define skipNativeBuild=false verify
119       - id: maven_examples
120         name: CLI Examples
121         run: mvn --batch-mode --projects yosql-examples/yosql-examples-cli --also-make --also-make-dependents verify
122       - id: upload-jvm-cli-tooling
123         name: Upload JVM CLI Tooling
124         uses: actions/upload-artifact@v4
125         if: runner.os == 'Linux'
126         with:
127           name: yosql-tooling-cli-jvm
128           path: ./yosql-tooling/yosql-tooling-cli/target/yosql-tooling-cli-*-jvm*
129       - id: upload-linux-cli-tooling
130         name: Upload Linux CLI Tooling
131         uses: actions/upload-artifact@v4
132         if: runner.os == 'Linux'
133         with:
134           name: yosql-tooling-cli-linux
135           path: ./yosql-tooling/yosql-tooling-cli/target/yosql-tooling-cli-*-linux*
136       - id: upload-mac-cli-tooling
137         name: Upload Mac OSX CLI Tooling
138         uses: actions/upload-artifact@v4
139         if: runner.os == 'macOS'
140         with:
141           name: yosql-tooling-cli-mac
142           path: ./yosql-tooling/yosql-tooling-cli/target/yosql-tooling-cli-*-mac*
143       - id: upload-windows-cli-tooling
144         name: Upload Windows CLI Tooling
145         uses: actions/upload-artifact@v4
146         if: runner.os == 'Windows'
147         with:
148           name: yosql-tooling-cli-windows
149           path: ./yosql-tooling/yosql-tooling-cli/target/yosql-tooling-cli-*-windows*
150   benchmarks:
151     name: Build Benchmarks on ${{ matrix.os }}
152     runs-on: ${{ matrix.os }}
153     strategy:
154       matrix:
155         os:
156           - ubuntu-latest
157           - macos-latest
158           - windows-latest
159     steps:
160       - id: checkout
161         name: Clone Git Repository
162         uses: actions/checkout@v4
163       - id: graal
164         name: Setup GraalVM
165         uses: graalvm/setup-graalvm@v1
166         with:
167           distribution: graalvm
168           java-version: ${{ env.JAVA_VERSION }}
169           github-token: ${{ secrets.GITHUB_TOKEN }}
170           cache: maven
171       - id: maven
172         name: Maven Tooling
173         run: mvn --batch-mode --projects yosql-tooling/yosql-tooling-maven --also-make install
174       - id: maven_benchmarks
175         name: Build Benchmarks
176         run: mvn --batch-mode --projects yosql-benchmarks --also-make --also-make-dependents verify
177   website:
178     name: Build Website on ${{ matrix.os }}
179     runs-on: ${{ matrix.os }}
180     strategy:
181       matrix:
182         os:
183           - ubuntu-latest
184 #          - macos-latest # TODO: enable once https://github.com/peaceiris/actions-hugo/issues/605 is fixed
185 #          - windows-latest # TODO: enable once https://github.com/peaceiris/actions-hugo/issues/608 is fixed
186     steps:
187       - id: checkout
188         name: Clone Git Repository
189         uses: actions/checkout@v4
190       - id: hugo
191         name: Setup Hugo
192         uses: peaceiris/actions-hugo@v3
193         with:
194           hugo-version: latest
195       - id: graal
196         name: Setup GraalVM
197         uses: graalvm/setup-graalvm@v1
198         with:
199           distribution: graalvm
200           java-version: ${{ env.JAVA_VERSION }}
201           github-token: ${{ secrets.GITHUB_TOKEN }}
202           cache: maven
203       - id: maven
204         name: Maven Tooling
205         run: mvn --batch-mode --projects yosql-website --also-make --define skipTests install
206       - id: website
207         name: Build Website
208         run: hugo --minify --printI18nWarnings --printPathWarnings --printUnusedTemplates --source yosql-website
209         env:
210           YOSQL_RELEASE: 0.0.0
211       - id: htmltest
212         name: Run htmltest
213         uses: wjdp/htmltest-action@master
214         with:
215           config: ./yosql-website/htmltest.yml