Skip to content

Commit 1083012

Browse files
committed
CI: CircleCI
1 parent 5d65950 commit 1083012

File tree

9 files changed

+362
-196
lines changed

9 files changed

+362
-196
lines changed

.circleci/config.yml

Lines changed: 326 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,326 @@
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: 'string'
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+
j11:
130+
docker:
131+
- image: 'cimg/openjdk:11.0'
132+
j17:
133+
docker:
134+
- image: 'cimg/openjdk:17.0'
135+
j21:
136+
docker:
137+
- image: 'cimg/openjdk:21.0'
138+
139+
jobs:
140+
test:
141+
parameters:
142+
docker-img:
143+
type: 'string'
144+
default: <<pipeline.parameters.docker-img>>
145+
topology:
146+
type: 'string'
147+
default: 'single'
148+
starter-docker-img:
149+
type: 'string'
150+
default: 'docker.io/arangodb/arangodb-starter:latest'
151+
ssl:
152+
type: 'string'
153+
default: 'false'
154+
jdk:
155+
type: 'string'
156+
default: 'j21'
157+
args:
158+
type: 'string'
159+
default: ''
160+
jwt:
161+
type: 'boolean'
162+
default: false
163+
executor: <<parameters.jdk>>
164+
steps:
165+
- timeout
166+
- checkout
167+
- setup_remote_docker
168+
- start-db:
169+
docker-img: <<parameters.docker-img>>
170+
topology: <<parameters.topology>>
171+
starter-docker-img: <<parameters.starter-docker-img>>
172+
ssl: <<parameters.ssl>>
173+
- when:
174+
condition:
175+
equal: [ true, <<parameters.jwt>> ]
176+
steps:
177+
- setup_jwt
178+
- load_cache
179+
- mvn-info
180+
- test:
181+
project: driver
182+
args: <<parameters.args>>
183+
- report:
184+
project: driver
185+
- store_cache
186+
187+
deploy:
188+
executor: 'j11'
189+
steps:
190+
- timeout
191+
- checkout
192+
- load_cache
193+
- mvn-info
194+
- config_gpg
195+
- deploy
196+
- store_cache
197+
release:
198+
executor: 'j11'
199+
steps:
200+
- timeout
201+
- checkout
202+
- load_cache
203+
- mvn-info
204+
- config_gpg
205+
- deploy
206+
- release
207+
- store_cache
208+
209+
workflows:
210+
test-adb-version:
211+
when:
212+
not: <<pipeline.parameters.docker-img>>
213+
jobs:
214+
- test:
215+
name: test-<<matrix.topology>>-<<matrix.docker-img>>
216+
matrix:
217+
parameters:
218+
docker-img:
219+
- 'docker.io/arangodb/arangodb:3.11'
220+
- 'docker.io/arangodb/arangodb:3.12'
221+
- 'docker.io/arangodb/enterprise:3.11'
222+
- 'docker.io/arangodb/enterprise:3.12'
223+
topology:
224+
- 'single'
225+
- 'cluster'
226+
args:
227+
- '-DenableSlowTests=true'
228+
test-adb-topology:
229+
when: <<pipeline.parameters.docker-img>>
230+
jobs:
231+
- test:
232+
name: test-<<matrix.topology>>
233+
matrix:
234+
parameters:
235+
topology:
236+
- 'single'
237+
- 'cluster'
238+
args:
239+
- '-DenableSlowTests=true'
240+
test-active-failover:
241+
when:
242+
not: <<pipeline.parameters.docker-img>>
243+
jobs:
244+
- test:
245+
name: test-<<matrix.topology>>-<<matrix.docker-img>>
246+
matrix:
247+
parameters:
248+
docker-img:
249+
- 'docker.io/arangodb/arangodb:3.11'
250+
- 'docker.io/arangodb/enterprise:3.11'
251+
topology:
252+
- 'activefailover'
253+
starter-docker-img:
254+
- 'docker.io/arangodb/arangodb-starter:0.18.5'
255+
test-user-language:
256+
jobs:
257+
- test:
258+
name: test-<<matrix.args>>
259+
matrix:
260+
parameters:
261+
args:
262+
- '-DargLine="-Duser.language=jp"'
263+
- '-DargLine="-Duser.language=tr"'
264+
test-jdk:
265+
jobs:
266+
- test:
267+
name: test-<<matrix.jdk>>
268+
matrix:
269+
parameters:
270+
jdk:
271+
- 'j17'
272+
- 'j21'
273+
test-jackson:
274+
jobs:
275+
- test:
276+
name: test-<<matrix.args>>
277+
matrix:
278+
parameters:
279+
args:
280+
- '-Dadb.jackson.version=2.17.1'
281+
- '-Dadb.jackson.version=2.16.2'
282+
- '-Dadb.jackson.version=2.15.4'
283+
- '-Dadb.jackson.version=2.14.3'
284+
- '-Dadb.jackson.version=2.13.5'
285+
- '-Dadb.jackson.version=2.12.7'
286+
- '-Dadb.jackson.version=2.11.4'
287+
- '-Dadb.jackson.version=2.10.5'
288+
test-ssl:
289+
jobs:
290+
- test:
291+
name: test-ssl
292+
matrix:
293+
parameters:
294+
ssl:
295+
- 'true'
296+
args:
297+
- '-Dgroups=ssl -DSslTest=true'
298+
test-jwt:
299+
jobs:
300+
- test:
301+
name: test-jwt-<<matrix.topology>>
302+
matrix:
303+
parameters:
304+
jwt:
305+
- true
306+
topology:
307+
- 'single'
308+
- 'cluster'
309+
deploy:
310+
jobs:
311+
- deploy:
312+
context: java-release
313+
filters:
314+
tags:
315+
only: /^deploy.*/
316+
branches:
317+
ignore: /.*/
318+
release:
319+
jobs:
320+
- release:
321+
context: java-release
322+
filters:
323+
tags:
324+
only: /^release.*/
325+
branches:
326+
ignore: /.*/

.circleci/maven-release-settings.xml

Lines changed: 25 additions & 0 deletions
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)