Skip to content

Commit 43c9b7a

Browse files
committed
CI: CircleCI
1 parent 5d65950 commit 43c9b7a

File tree

7 files changed

+365
-203
lines changed

7 files changed

+365
-203
lines changed

.circleci/config.yml

+331
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,331 @@
1+
version: 2.1
2+
3+
parameters:
4+
docker-img:
5+
type: 'string'
6+
default: ""
7+
8+
commands:
9+
timeout:
10+
parameters:
11+
duration:
12+
default: '5m'
13+
type: 'string'
14+
steps:
15+
- run:
16+
name: Cancel job after <<parameters.duration>>
17+
background: true
18+
command: |
19+
sleep <<parameters.duration>>
20+
echo "Cancelling job as <<parameters.duration>> has elapsed"
21+
curl --fail -X POST -H "Circle-Token: ${CIRCLE_TOKEN}" "https://circleci.com/api/v1.1/project/github/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}/${CIRCLE_BUILD_NUM}/cancel"
22+
start-db:
23+
parameters:
24+
docker-img:
25+
type: 'string'
26+
default: <<pipeline.parameters.docker-img>>
27+
topology:
28+
type: 'string'
29+
default: 'single'
30+
starter-docker-img:
31+
type: 'string'
32+
default: 'docker.io/arangodb/arangodb-starter:latest'
33+
ssl:
34+
type: 'boolean'
35+
default: false
36+
steps:
37+
- run:
38+
name: Start Database
39+
command: ./docker/start_db.sh
40+
environment:
41+
DOCKER_IMAGE: <<parameters.docker-img>>
42+
STARTER_MODE: <<parameters.topology>>
43+
STARTER_DOCKER_IMAGE: <<parameters.starter-docker-img>>
44+
SSL: <<parameters.ssl>>
45+
mvn-info:
46+
parameters:
47+
working_directory:
48+
type: 'string'
49+
default: ''
50+
steps:
51+
- run:
52+
name: mvn version
53+
working_directory: <<parameters.working_directory>>
54+
command: mvn --version
55+
- run:
56+
name: mvn dependency:tree
57+
working_directory: <<parameters.working_directory>>
58+
command: mvn dependency:tree
59+
mvn-install:
60+
steps:
61+
- run:
62+
name: mvn install
63+
command: mvn install -Dmaven.test.skip=true -Dgpg.skip=true -Dmaven.javadoc.skip=true
64+
setup_jwt:
65+
steps:
66+
- run:
67+
name: Setup JWT
68+
command: |
69+
ENDPOINT=$(./docker/find_active_endpoint.sh)
70+
echo "Active endpoint: $ENDPOINT"
71+
JWT=$(curl "http://$ENDPOINT/_db/_system/_open/auth" -X POST -d '{"username":"root","password":"test"}' | jq ".jwt" | xargs)
72+
echo "Setting JWT: $JWT"
73+
sed -i "/arangodb.password/c\arangodb.jwt=$JWT" driver/src/test/resources/arangodb.properties
74+
test:
75+
parameters:
76+
project:
77+
type: 'string'
78+
default: ''
79+
args:
80+
type: 'string'
81+
default: ''
82+
steps:
83+
- run:
84+
name: Test
85+
command: mvn -am -pl <<parameters.project>> test -Dsurefire.failIfNoSpecifiedTests=false <<parameters.args>>
86+
report:
87+
parameters:
88+
project:
89+
type: 'string'
90+
default: ''
91+
steps:
92+
- run:
93+
name: Create reports
94+
command: mvn -pl <<parameters.project>> surefire-report:report-only
95+
- store_artifacts:
96+
path: target/site
97+
load_cache:
98+
steps:
99+
- run:
100+
name: Generate Cache Checksum
101+
command: find . -name 'pom.xml' | sort | xargs cat > /tmp/maven_cache_seed
102+
- restore_cache:
103+
key: maven-{{ .Environment.CIRCLE_JOB }}-{{ checksum "/tmp/maven_cache_seed" }}
104+
store_cache:
105+
steps:
106+
- save_cache:
107+
key: maven-{{ .Environment.CIRCLE_JOB }}-{{ checksum "/tmp/maven_cache_seed" }}
108+
paths:
109+
- ~/.m2/repository
110+
config_gpg:
111+
steps:
112+
- run:
113+
name: Configure GPG
114+
command: echo $GPG_PRIVATE_KEY | base64 --decode | gpg --batch --no-tty --import --yes
115+
deploy:
116+
steps:
117+
- run:
118+
name: Deploy to Apache Maven Central
119+
command: mvn -s .circleci/maven-release-settings.xml -Dmaven.test.skip=true deploy
120+
release:
121+
steps:
122+
- run:
123+
name: Release to Apache Maven Central
124+
command: mvn -s .circleci/maven-release-settings.xml -Dmaven.test.skip=true nexus-staging:release
125+
environment:
126+
MAVEN_OPTS: "--add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED"
127+
128+
executors:
129+
j8:
130+
docker:
131+
- image: 'cimg/openjdk:8.0'
132+
j11:
133+
docker:
134+
- image: 'cimg/openjdk:11.0'
135+
j17:
136+
docker:
137+
- image: 'cimg/openjdk:17.0'
138+
j21:
139+
docker:
140+
- image: 'cimg/openjdk:21.0'
141+
142+
jobs:
143+
test:
144+
parameters:
145+
docker-img:
146+
type: 'string'
147+
default: <<pipeline.parameters.docker-img>>
148+
topology:
149+
type: 'string'
150+
default: 'single'
151+
starter-docker-img:
152+
type: 'string'
153+
default: 'docker.io/arangodb/arangodb-starter:latest'
154+
ssl:
155+
type: 'boolean'
156+
default: false
157+
jdk:
158+
type: 'string'
159+
default: 'j21'
160+
args:
161+
type: 'string'
162+
default: ''
163+
jwt:
164+
type: 'boolean'
165+
default: false
166+
executor: <<parameters.jdk>>
167+
steps:
168+
- timeout
169+
- checkout
170+
- setup_remote_docker
171+
- start-db:
172+
docker-img: <<parameters.docker-img>>
173+
topology: <<parameters.topology>>
174+
starter-docker-img: <<parameters.starter-docker-img>>
175+
ssl: <<parameters.ssl>>
176+
- when:
177+
condition:
178+
equal: [ true, <<parameters.jwt>> ]
179+
steps:
180+
- setup_jwt
181+
- load_cache
182+
- mvn-info
183+
- test:
184+
project: driver
185+
args: <<parameters.args>>
186+
- report:
187+
project: driver
188+
- store_cache
189+
190+
deploy:
191+
executor: 'j11'
192+
steps:
193+
- timeout
194+
- checkout
195+
- load_cache
196+
- mvn-info
197+
- config_gpg
198+
- deploy
199+
- store_cache
200+
release:
201+
executor: 'j11'
202+
steps:
203+
- timeout
204+
- checkout
205+
- load_cache
206+
- mvn-info
207+
- config_gpg
208+
- deploy
209+
- release
210+
- store_cache
211+
212+
workflows:
213+
test-adb-version:
214+
when:
215+
not: <<pipeline.parameters.docker-img>>
216+
jobs:
217+
- test:
218+
name: test-<<matrix.topology>>-<<matrix.docker-img>>
219+
matrix:
220+
parameters:
221+
docker-img:
222+
- 'docker.io/arangodb/arangodb:3.11'
223+
- 'docker.io/arangodb/arangodb:3.12'
224+
- 'docker.io/arangodb/enterprise:3.11'
225+
- 'docker.io/arangodb/enterprise:3.12'
226+
topology:
227+
- 'single'
228+
- 'cluster'
229+
args:
230+
- '-DenableSlowTests=true'
231+
test-adb-topology:
232+
when: <<pipeline.parameters.docker-img>>
233+
jobs:
234+
- test:
235+
name: test-<<matrix.topology>>
236+
matrix:
237+
parameters:
238+
topology:
239+
- 'single'
240+
- 'cluster'
241+
args:
242+
- '-DenableSlowTests=true'
243+
test-active-failover:
244+
when:
245+
not: <<pipeline.parameters.docker-img>>
246+
jobs:
247+
- test:
248+
name: test-<<matrix.topology>>-<<matrix.docker-img>>
249+
matrix:
250+
parameters:
251+
docker-img:
252+
- 'docker.io/arangodb/arangodb:3.11'
253+
- 'docker.io/arangodb/enterprise:3.11'
254+
topology:
255+
- 'activefailover'
256+
starter-docker-img:
257+
- 'docker.io/arangodb/arangodb-starter:0.18.5'
258+
test-user-language:
259+
jobs:
260+
- test:
261+
name: test-<<matrix.args>>
262+
matrix:
263+
parameters:
264+
args:
265+
- '-DargLine="-Duser.language=jp"'
266+
- '-DargLine="-Duser.language=tr"'
267+
test-jdk:
268+
jobs:
269+
- test:
270+
name: test-<<matrix.jdk>>
271+
matrix:
272+
parameters:
273+
jdk:
274+
- 'j8'
275+
- 'j11'
276+
- 'j17'
277+
- 'j21'
278+
test-jackson:
279+
jobs:
280+
- test:
281+
name: test-<<matrix.args>>
282+
matrix:
283+
parameters:
284+
args:
285+
- '-Dadb.jackson.version=2.17.1'
286+
- '-Dadb.jackson.version=2.16.2'
287+
- '-Dadb.jackson.version=2.15.4'
288+
- '-Dadb.jackson.version=2.14.3'
289+
- '-Dadb.jackson.version=2.13.5'
290+
- '-Dadb.jackson.version=2.12.7'
291+
- '-Dadb.jackson.version=2.11.4'
292+
- '-Dadb.jackson.version=2.10.5'
293+
test-ssl:
294+
jobs:
295+
- test:
296+
name: test-ssl
297+
matrix:
298+
parameters:
299+
ssl:
300+
- true
301+
args:
302+
- '-Dgroups=ssl -DSslTest=true'
303+
test-jwt:
304+
jobs:
305+
- test:
306+
name: test-jwt-<<matrix.topology>>
307+
matrix:
308+
parameters:
309+
jwt:
310+
- true
311+
topology:
312+
- 'single'
313+
- 'cluster'
314+
deploy:
315+
jobs:
316+
- deploy:
317+
context: java-release
318+
filters:
319+
tags:
320+
only: /^deploy.*/
321+
branches:
322+
ignore: /.*/
323+
release:
324+
jobs:
325+
- release:
326+
context: java-release
327+
filters:
328+
tags:
329+
only: /^release.*/
330+
branches:
331+
ignore: /.*/

.circleci/maven-release-settings.xml

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
3+
4+
<profiles>
5+
<profile>
6+
<id>ossrh</id>
7+
<activation>
8+
<activeByDefault>true</activeByDefault>
9+
</activation>
10+
<properties>
11+
<gpg.keyname>${env.GPG_KEYNAME}</gpg.keyname>
12+
<gpg.passphrase>${env.GPG_PASSPHRASE}</gpg.passphrase>
13+
</properties>
14+
</profile>
15+
</profiles>
16+
17+
<servers>
18+
<server>
19+
<id>ossrh</id>
20+
<username>${env.OSSRH_USERNAME}</username>
21+
<password>${env.OSSRH_PASSWORD}</password>
22+
</server>
23+
</servers>
24+
25+
</settings>

0 commit comments

Comments
 (0)