Skip to content

Commit ad6db9a

Browse files
joewizclaude
andcommitted
[ci] Add GitHub Actions CI and release workflows
CI builds the XAR on push/PR by extracting exist.uber.jar from the existdb/existdb Docker image (workaround for stale published SNAPSHOT artifacts). Release workflow creates a GitHub release with XAR artifact on tag push. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 785abaa commit ad6db9a

File tree

2 files changed

+106
-0
lines changed

2 files changed

+106
-0
lines changed

.github/workflows/ci.yml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- uses: actions/checkout@v4
15+
16+
- name: Set up JDK 21
17+
uses: actions/setup-java@v4
18+
with:
19+
java-version: '21'
20+
distribution: 'zulu'
21+
22+
- name: Extract exist.uber.jar from Docker image
23+
run: |
24+
docker pull existdb/existdb:latest
25+
CONTAINER_ID=$(docker create existdb/existdb:latest)
26+
docker cp "$CONTAINER_ID:/exist/lib/exist.uber.jar" exist.uber.jar
27+
docker rm "$CONTAINER_ID"
28+
29+
# Install uber JAR as exist-core (it contains all exist-core classes)
30+
mvn install:install-file \
31+
-Dfile=exist.uber.jar \
32+
-DgroupId=org.exist-db \
33+
-DartifactId=exist-core \
34+
-Dversion=7.0.0-SNAPSHOT \
35+
-Dpackaging=jar \
36+
-DgeneratePom=true
37+
38+
# Also install as exist-start (uber JAR contains start classes too)
39+
mvn install:install-file \
40+
-Dfile=exist.uber.jar \
41+
-DgroupId=org.exist-db \
42+
-DartifactId=exist-start \
43+
-Dversion=7.0.0-SNAPSHOT \
44+
-Dpackaging=jar \
45+
-DgeneratePom=true
46+
47+
- name: Build XAR (compile + package, skip tests)
48+
run: mvn package -DskipTests
49+
50+
- name: Upload XAR artifact
51+
uses: actions/upload-artifact@v4
52+
with:
53+
name: exist-request-xar
54+
path: target/exist-request-*.xar

.github/workflows/release.yml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
permissions:
9+
contents: write
10+
11+
jobs:
12+
release:
13+
runs-on: ubuntu-latest
14+
15+
steps:
16+
- uses: actions/checkout@v4
17+
18+
- name: Set up JDK 21
19+
uses: actions/setup-java@v4
20+
with:
21+
java-version: '21'
22+
distribution: 'zulu'
23+
24+
- name: Extract exist.uber.jar from Docker image
25+
run: |
26+
docker pull existdb/existdb:latest
27+
CONTAINER_ID=$(docker create existdb/existdb:latest)
28+
docker cp "$CONTAINER_ID:/exist/lib/exist.uber.jar" exist.uber.jar
29+
docker rm "$CONTAINER_ID"
30+
mvn install:install-file \
31+
-Dfile=exist.uber.jar \
32+
-DgroupId=org.exist-db \
33+
-DartifactId=exist-core \
34+
-Dversion=7.0.0-SNAPSHOT \
35+
-Dpackaging=jar \
36+
-DgeneratePom=true
37+
mvn install:install-file \
38+
-Dfile=exist.uber.jar \
39+
-DgroupId=org.exist-db \
40+
-DartifactId=exist-start \
41+
-Dversion=7.0.0-SNAPSHOT \
42+
-Dpackaging=jar \
43+
-DgeneratePom=true
44+
45+
- name: Build XAR
46+
run: mvn package -DskipTests
47+
48+
- name: Create GitHub Release
49+
uses: softprops/action-gh-release@v2
50+
with:
51+
files: target/exist-request-*.xar
52+
generate_release_notes: true

0 commit comments

Comments
 (0)