@@ -31,154 +31,154 @@ on:
3131 - ' .github/workflows/*.yml'
3232
3333jobs :
34- # lint:
35- # name: Check code formatting
36- # runs-on: ubuntu-latest
37- # steps:
38- # - uses: actions/checkout@v4
39- # - uses: actions/setup-java@v4
40- # with:
41- # distribution: 'temurin'
42- # java-version: 11
43- # java-package: jdk
44- # cache: 'maven'
45- # - name: spotless:check
46- # run: mvn --batch-mode --no-transfer-progress spotless:check
47- #
48- # test:
49- # name: test ${{ matrix.os }} jdk${{ matrix.java }}
50- # strategy:
51- # matrix:
52- # os: [ ubuntu-latest ]
53- # java: [ 11, 17, 20 ]
54- # include:
55- # - os: windows-latest
56- # java: 20
57- # - os: macos-latest
58- # java: 20
59- # runs-on: ${{ matrix.os }}
60- # steps:
61- # - uses: actions/checkout@v4
62- # - uses: actions/setup-java@v4
63- # with:
64- # distribution: 'temurin'
65- # java-version: ${{ matrix.java }}
66- # java-package: jdk
67- # cache: 'maven'
68- # - name: Test
69- # run: mvn --batch-mode --no-transfer-progress test
70- #
71- # test_graalvm:
72- # name: test ${{ matrix.os }} jdk${{ matrix.java }} GraalVM native-image - ${{ matrix.profiles }}
73- # strategy:
74- # matrix:
75- # os: [ ubuntu-latest, windows-latest, macos-latest ]
76- # java: [ '17', '21', '24' ]
77- # profiles: ['native', 'native,native-exported']
78- # runs-on: ${{ matrix.os }}
79- # steps:
80- # - uses: actions/checkout@v4
81- # - uses: graalvm/setup-graalvm@v1
82- # with:
83- # java-version: ${{ matrix.java }}
84- # distribution: 'graalvm-community'
85- # github-token: ${{ secrets.GITHUB_TOKEN }}
86- # - name: Test
87- # run: mvn --batch-mode --no-transfer-progress -P ${{ matrix.profiles }} integration-test
88- #
89- # test_multiarch:
90- # name: test ${{ matrix.arch }} ${{ matrix.distro }} jdk${{ matrix.java }}
91- # strategy:
92- # matrix:
93- # include:
94- # # ARM v7
95- # - arch: armv7
96- # distro: ubuntu_latest
97- # java: 21
98- # # ARM 64
99- # - arch: aarch64
100- # distro: ubuntu_latest
101- # java: 21
102- # - arch: aarch64
103- # distro: alpine_latest
104- # java: 21
105- # # PPC64
106- # - arch: ppc64le
107- # distro: ubuntu_latest
108- # java: 21
109- # # RISC-V 64
110- # - arch: riscv64
111- # distro: ubuntu_latest
112- # java: 21
113- # runs-on: ubuntu-latest
114- # steps:
115- # - uses: actions/checkout@v4
116- # - uses: uraimo/run-on-arch-action@v3
117- # name: Test
118- # with:
119- # arch: ${{ matrix.arch }}
120- # distro: ${{ matrix.distro }}
121- #
122- # # Not required, but speeds up builds
123- # githubToken: ${{ github.token }}
124- #
125- # # Install some dependencies in the container. This speeds up builds if
126- # # you are also using githubToken. Any dependencies installed here will
127- # # be part of the container image that gets cached, so subsequent
128- # # builds don't have to re-install them. The image layer is cached
129- # # publicly in your project's package repository, so it is vital that
130- # # no secrets are present in the container state or logs.
131- # install: |
132- # case "${{ matrix.distro }}" in
133- # ubuntu*|jessie|stretch|buster|bullseye)
134- # apt-get update -q -y
135- # apt-get install -q -y maven openjdk-${{ matrix.java }}-jdk
136- # ;;
137- # alpine*)
138- # apk update
139- # apk add maven openjdk${{ matrix.java }}
140- # ;;
141- # esac
142- #
143- # # We use the Github Action user, 1001:121, so that maven can access
144- # # the /work directory and create target/classes
145- # dockerRunArgs: |
146- # --volume "${PWD}:/work"
147- # --user 1001:121
148- #
149- # env: |
150- # SKIP_TEST_MULTIARCH: true
151- #
152- # run: |
153- # echo "Architecture: `uname -a`"
154- # mvn --version
155- # cd /work && mvn -Dmaven.repo.local=/work/.m2/repository --batch-mode --no-transfer-progress test
156- #
157- # # This will test the build process using an external amalgamation, as well as the
158- # # Java tests with that native library, as some functions will not be available (extensions).
159- # # Here we use the sqlite3 package installed by homebrew on Mac, which comes
160- # # with the header file and library.
161- # test_external_amalgamation:
162- # name: test external amalgamation
163- # runs-on: macos-latest
164- # steps:
165- # - uses: actions/checkout@v4
166- # - uses: actions/setup-java@v4
167- # with:
168- # distribution: 'temurin'
169- # java-version: 20
170- # java-package: jdk
171- # cache: 'maven'
172- # - run: brew install sqlite3
173- # - name: Find SQLite directory
174- # run: |
175- # BREW_SQLITE_PREFIX=`brew --prefix sqlite3`
176- # echo "SQLITE_DIR=$(dirname ${BREW_SQLITE_PREFIX})/$(readlink ${BREW_SQLITE_PREFIX})" | tee -a $GITHUB_ENV
177- # - name: Make native lib
178- # run: |
179- # make native SQLITE_OBJ=${{ env.SQLITE_DIR }}/lib/libsqlite3.dylib SQLITE_HEADER=${{ env.SQLITE_DIR }}/include/sqlite3.h
180- # - name: Test
181- # run: mvn --batch-mode --no-transfer-progress test
34+ lint :
35+ name : Check code formatting
36+ runs-on : ubuntu-latest
37+ steps :
38+ - uses : actions/checkout@v4
39+ - uses : actions/setup-java@v4
40+ with :
41+ distribution : ' temurin'
42+ java-version : 11
43+ java-package : jdk
44+ cache : ' maven'
45+ - name : spotless:check
46+ run : mvn --batch-mode --no-transfer-progress spotless:check
47+
48+ test :
49+ name : test ${{ matrix.os }} jdk${{ matrix.java }}
50+ strategy :
51+ matrix :
52+ os : [ ubuntu-latest ]
53+ java : [ 11, 17, 20 ]
54+ include :
55+ - os : windows-latest
56+ java : 20
57+ - os : macos-latest
58+ java : 20
59+ runs-on : ${{ matrix.os }}
60+ steps :
61+ - uses : actions/checkout@v4
62+ - uses : actions/setup-java@v4
63+ with :
64+ distribution : ' temurin'
65+ java-version : ${{ matrix.java }}
66+ java-package : jdk
67+ cache : ' maven'
68+ - name : Test
69+ run : mvn --batch-mode --no-transfer-progress test
70+
71+ test_graalvm :
72+ name : test ${{ matrix.os }} jdk${{ matrix.java }} GraalVM native-image - ${{ matrix.profiles }}
73+ strategy :
74+ matrix :
75+ os : [ ubuntu-latest, windows-latest, macos-latest ]
76+ java : [ '17', '21', '24' ]
77+ profiles : ['native', 'native,native-exported']
78+ runs-on : ${{ matrix.os }}
79+ steps :
80+ - uses : actions/checkout@v4
81+ - uses : graalvm/setup-graalvm@v1
82+ with :
83+ java-version : ${{ matrix.java }}
84+ distribution : ' graalvm-community'
85+ github-token : ${{ secrets.GITHUB_TOKEN }}
86+ - name : Test
87+ run : mvn --batch-mode --no-transfer-progress -P ${{ matrix.profiles }} integration-test
88+
89+ test_multiarch :
90+ name : test ${{ matrix.arch }} ${{ matrix.distro }} jdk${{ matrix.java }}
91+ strategy :
92+ matrix :
93+ include :
94+ # ARM v7
95+ - arch : armv7
96+ distro : ubuntu_latest
97+ java : 21
98+ # ARM 64
99+ - arch : aarch64
100+ distro : ubuntu_latest
101+ java : 21
102+ - arch : aarch64
103+ distro : alpine_latest
104+ java : 21
105+ # PPC64
106+ - arch : ppc64le
107+ distro : ubuntu_latest
108+ java : 21
109+ # RISC-V 64
110+ - arch : riscv64
111+ distro : ubuntu_latest
112+ java : 21
113+ runs-on : ubuntu-latest
114+ steps :
115+ - uses : actions/checkout@v4
116+ - uses : uraimo/run-on-arch-action@v3
117+ name : Test
118+ with :
119+ arch : ${{ matrix.arch }}
120+ distro : ${{ matrix.distro }}
121+
122+ # Not required, but speeds up builds
123+ githubToken : ${{ github.token }}
124+
125+ # Install some dependencies in the container. This speeds up builds if
126+ # you are also using githubToken. Any dependencies installed here will
127+ # be part of the container image that gets cached, so subsequent
128+ # builds don't have to re-install them. The image layer is cached
129+ # publicly in your project's package repository, so it is vital that
130+ # no secrets are present in the container state or logs.
131+ install : |
132+ case "${{ matrix.distro }}" in
133+ ubuntu*|jessie|stretch|buster|bullseye)
134+ apt-get update -q -y
135+ apt-get install -q -y maven openjdk-${{ matrix.java }}-jdk
136+ ;;
137+ alpine*)
138+ apk update
139+ apk add maven openjdk${{ matrix.java }}
140+ ;;
141+ esac
142+
143+ # We use the Github Action user, 1001:121, so that maven can access
144+ # the /work directory and create target/classes
145+ dockerRunArgs : |
146+ --volume "${PWD}:/work"
147+ --user 1001:121
148+
149+ env : |
150+ SKIP_TEST_MULTIARCH: true
151+
152+ run : |
153+ echo "Architecture: `uname -a`"
154+ mvn --version
155+ cd /work && mvn -Dmaven.repo.local=/work/.m2/repository --batch-mode --no-transfer-progress test
156+
157+ # This will test the build process using an external amalgamation, as well as the
158+ # Java tests with that native library, as some functions will not be available (extensions).
159+ # Here we use the sqlite3 package installed by homebrew on Mac, which comes
160+ # with the header file and library.
161+ test_external_amalgamation :
162+ name : test external amalgamation
163+ runs-on : macos-latest
164+ steps :
165+ - uses : actions/checkout@v4
166+ - uses : actions/setup-java@v4
167+ with :
168+ distribution : ' temurin'
169+ java-version : 20
170+ java-package : jdk
171+ cache : ' maven'
172+ - run : brew install sqlite3
173+ - name : Find SQLite directory
174+ run : |
175+ BREW_SQLITE_PREFIX=`brew --prefix sqlite3`
176+ echo "SQLITE_DIR=$(dirname ${BREW_SQLITE_PREFIX})/$(readlink ${BREW_SQLITE_PREFIX})" | tee -a $GITHUB_ENV
177+ - name : Make native lib
178+ run : |
179+ make native SQLITE_OBJ=${{ env.SQLITE_DIR }}/lib/libsqlite3.dylib SQLITE_HEADER=${{ env.SQLITE_DIR }}/include/sqlite3.h
180+ - name : Test
181+ run : mvn --batch-mode --no-transfer-progress test
182182
183183 release :
184184 name : Deploy
0 commit comments