Skip to content

Commit 243a0d2

Browse files
committed
CI: CircleCI
1 parent 5d65950 commit 243a0d2

File tree

7 files changed

+364
-203
lines changed

7 files changed

+364
-203
lines changed

.circleci/config.yml

+330
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,330 @@
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+
- store_cache
188+
189+
deploy:
190+
executor: 'j11'
191+
steps:
192+
- timeout
193+
- checkout
194+
- load_cache
195+
- mvn-info
196+
- config_gpg
197+
- deploy
198+
- store_cache
199+
release:
200+
executor: 'j11'
201+
steps:
202+
- timeout
203+
- checkout
204+
- load_cache
205+
- mvn-info
206+
- config_gpg
207+
- deploy
208+
- release
209+
- store_cache
210+
211+
workflows:
212+
test-adb-version:
213+
when:
214+
not: <<pipeline.parameters.docker-img>>
215+
jobs:
216+
- test:
217+
name: test-<<matrix.topology>>-<<matrix.docker-img>>
218+
matrix:
219+
parameters:
220+
docker-img:
221+
- 'docker.io/arangodb/arangodb:3.11'
222+
- 'docker.io/arangodb/arangodb:3.12'
223+
- 'docker.io/arangodb/enterprise:3.11'
224+
- 'docker.io/arangodb/enterprise:3.12'
225+
topology:
226+
- 'single'
227+
- 'cluster'
228+
args:
229+
- '-DenableSlowTests=true'
230+
test-adb-topology:
231+
when: <<pipeline.parameters.docker-img>>
232+
jobs:
233+
- test:
234+
name: test-<<matrix.topology>>
235+
matrix:
236+
parameters:
237+
topology:
238+
- 'single'
239+
- 'cluster'
240+
args:
241+
- '-DenableSlowTests=true'
242+
test-active-failover:
243+
when:
244+
not: <<pipeline.parameters.docker-img>>
245+
jobs:
246+
- test:
247+
name: test-<<matrix.topology>>-<<matrix.docker-img>>
248+
matrix:
249+
parameters:
250+
docker-img:
251+
- 'docker.io/arangodb/arangodb:3.11'
252+
- 'docker.io/arangodb/enterprise:3.11'
253+
topology:
254+
- 'activefailover'
255+
starter-docker-img:
256+
- 'docker.io/arangodb/arangodb-starter:0.18.5'
257+
test-user-language:
258+
jobs:
259+
- test:
260+
name: test-<<matrix.args>>
261+
matrix:
262+
parameters:
263+
args:
264+
- '-DargLine="-Duser.language=jp"'
265+
- '-DargLine="-Duser.language=tr"'
266+
test-jdk:
267+
jobs:
268+
- test:
269+
name: test-<<matrix.jdk>>
270+
matrix:
271+
parameters:
272+
jdk:
273+
- 'j8'
274+
- 'j11'
275+
- 'j17'
276+
- 'j21'
277+
test-jackson:
278+
jobs:
279+
- test:
280+
name: test-<<matrix.args>>
281+
matrix:
282+
parameters:
283+
args:
284+
- '-Dadb.jackson.version=2.17.1'
285+
- '-Dadb.jackson.version=2.16.2'
286+
- '-Dadb.jackson.version=2.15.4'
287+
- '-Dadb.jackson.version=2.14.3'
288+
- '-Dadb.jackson.version=2.13.5'
289+
- '-Dadb.jackson.version=2.12.7'
290+
- '-Dadb.jackson.version=2.11.4'
291+
- '-Dadb.jackson.version=2.10.5'
292+
test-ssl:
293+
jobs:
294+
- test:
295+
name: test-ssl
296+
matrix:
297+
parameters:
298+
ssl:
299+
- true
300+
args:
301+
- '-Dgroups=ssl -DSslTest=true'
302+
test-jwt:
303+
jobs:
304+
- test:
305+
name: test-jwt-<<matrix.topology>>
306+
matrix:
307+
parameters:
308+
jwt:
309+
- true
310+
topology:
311+
- 'single'
312+
- 'cluster'
313+
deploy:
314+
jobs:
315+
- deploy:
316+
context: java-release
317+
filters:
318+
tags:
319+
only: /^deploy.*/
320+
branches:
321+
ignore: /.*/
322+
release:
323+
jobs:
324+
- release:
325+
context: java-release
326+
filters:
327+
tags:
328+
only: /^release.*/
329+
branches:
330+
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)