Skip to content

Commit 797b9bd

Browse files
authored
Release v1.2.0
2 parents e5ca857 + 168a1c4 commit 797b9bd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+1293
-590
lines changed

.dockerignore

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#git
2+
.git
3+
.gitattributes
4+
.gitignore
5+
.github/
6+
#IDE
7+
.idea
8+
#build
9+
.gradle/
10+
build
11+
#data
12+
production_db
13+
#misc
14+
CHANGELOG
15+
LICENSE
16+
temp
17+
docker

.github/workflows/bootjar_testing.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
strategy:
1212
matrix:
1313
os: [ubuntu-latest, windows-latest, macos-latest]
14-
java: [17]
14+
java: [17, 21]
1515

1616
steps:
1717
- name: Checkout code
@@ -38,8 +38,8 @@ jobs:
3838
sleep 20 # Give the server time to start
3939
4040
- name: hurl install
41-
uses: gacts/install-hurl@v1
42-
41+
uses: gacts/install-hurl@v1.3.0
42+
with: {disable-cache: true} # hurl installation sometimes fails on cache restore, trying to disable it as a workaround https://github.com/gacts/install-hurl/issues/93
4343
- name: hurl CRUD tests (windows)
4444
if: runner.os == 'Windows'
4545
shell: bash
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: Create and publish a Docker image
2+
3+
# Configures this workflow to run every time a change is pushed to the branch called `release`.
4+
on:
5+
push:
6+
branches: ['main']
7+
8+
# Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds.
9+
env:
10+
REGISTRY: ghcr.io
11+
IMAGE_NAME: ${{ github.repository }}
12+
13+
jobs:
14+
build-and-push-image:
15+
runs-on: ubuntu-latest
16+
steps:
17+
- name: Checkout repository
18+
uses: actions/checkout@v4
19+
20+
- name: Log in to the Container registry
21+
uses: docker/login-action@v3
22+
with:
23+
registry: ${{ env.REGISTRY }}
24+
username: ${{ github.actor }}
25+
password: ${{ secrets.GITHUB_TOKEN }}
26+
27+
- name: Extract metadata (tags, labels) for Docker
28+
id: meta
29+
uses: docker/metadata-action@v5
30+
with:
31+
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
32+
33+
- name: Set up QEMU
34+
uses: docker/setup-qemu-action@v3
35+
36+
- name: Set up Docker Buildx
37+
uses: docker/setup-buildx-action@v3
38+
39+
- name: Build and push Docker image
40+
uses: docker/build-push-action@v5
41+
with:
42+
context: ./docker
43+
push: true
44+
tags: ${{ steps.meta.outputs.tags }}
45+
labels: ${{ steps.meta.outputs.labels }}
46+
platforms: linux/amd64,linux/arm64
47+
48+
# This step generates an artifact attestation for the image, which is an unforgeable statement about where and how it was built. It increases supply chain security for people who consume the image. For more information, see [Using artifact attestations to establish provenance for builds](/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds).
49+
- name: Generate artifact attestation
50+
uses: actions/attest-build-provenance@v3
51+
with:
52+
subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}}
53+
subject-digest: ${{ steps.push.outputs.digest }}
54+
push-to-registry: true
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
name: Build and Test Dockerized App
2+
3+
on:
4+
push:
5+
pull_request:
6+
branches: [ main, development ]
7+
8+
jobs:
9+
build-and-test:
10+
runs-on: ${{ matrix.os }}
11+
strategy:
12+
matrix:
13+
os: [ubuntu-latest]
14+
java: [17, 21]
15+
16+
steps:
17+
- name: Checkout code
18+
uses: actions/checkout@v4
19+
20+
- name: Set up JDK ${{ matrix.java }}
21+
uses: actions/setup-java@v4
22+
with:
23+
distribution: 'temurin'
24+
java-version: ${{ matrix.java }}
25+
26+
- name: Grant execute permission for Gradle wrapper (Unix)
27+
if: runner.os != 'Windows'
28+
run: chmod +x gradlew
29+
30+
# Build Docker image instead of bootable JAR
31+
- name: Build Docker image
32+
run: |
33+
docker build -f docker/Dockerfile -t wap-server:${{ matrix.os }}-${{ matrix.java }} .
34+
35+
# Run Docker container (detached, expose port 8080)
36+
- name: Run Docker container
37+
run: |
38+
docker run -d -p 8080:8080 --name wap-server \
39+
wap-server:${{ matrix.os }}-${{ matrix.java }}
40+
echo "Wait for wap server to be healthy before proceeding to tests"
41+
while true; do
42+
docker ps -a
43+
if ! docker ps | grep -q wap-server; then
44+
echo "Docker container stopped unexpectedly. Aborting."
45+
exit 1
46+
fi
47+
if curl -f http://localhost:8080; then
48+
echo "Service is running."
49+
break
50+
fi
51+
echo "Waiting for the service to be ready..."
52+
docker logs --tail 20 wap-server
53+
sleep 5
54+
done
55+
56+
- name: hurl install
57+
uses: gacts/[email protected]
58+
with: {disable-cache: true}
59+
60+
- name: hurl CRUD tests (windows)
61+
if: runner.os == 'Windows'
62+
shell: bash
63+
run: |
64+
for file in ./integration_tests/CRUD/*.hurl; do
65+
hurl --variable host=http://localhost:8080 --test "$file" --verbose --error-format=long --continue-on-error --report-html hurlreports
66+
done
67+
68+
- name: hurl tests (other)
69+
if: runner.os != 'Windows'
70+
run: hurl --variable host=http://localhost:8080 --test ./integration_tests/CRUD/*.hurl --verbose --error-format=long --continue-on-error --report-html hurlreports
71+
72+
# Stop and clean up container
73+
- name: Stop Docker container
74+
if: always()
75+
run: |
76+
docker logs wap-server
77+
docker stop wap-server
78+
docker rm wap-server
79+
80+
# Upload artifacts (optional: you may want to upload Docker logs instead of JARs)
81+
- name: Upload Docker logs
82+
if: always()
83+
uses: actions/upload-artifact@v4
84+
with:
85+
name: docker_logs_jdk${{ matrix.java }}_${{ matrix.os }}
86+
path: ./hurlreports

.github/workflows/gradle.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
matrix:
1919
operating-system: [ubuntu-latest, macOS-latest]
2020
# Use both LTS releases and latest one for tests
21-
jdk: [ 17 ]
21+
jdk: [ 17, 21 ]
2222
steps:
2323
- name: Checkout repo
2424
uses: actions/checkout@v4
@@ -32,11 +32,11 @@ jobs:
3232
- name: Build with Gradle
3333
run: |
3434
if [ "$RUNNER_OS" == "Linux" ]; then
35-
./gradlew clean build
35+
./gradlew clean build test --fail-fast
3636
elif [ "$RUNNER_OS" == "macOS" ]; then
37-
./gradlew clean build
37+
./gradlew clean build test --fail-fast
3838
elif [ "$RUNNER_OS" == "Windows" ]; then
39-
./gradlew.bat clean build
39+
./gradlew.bat clean build test --fail-fast
4040
else
4141
echo "$RUNNER_OS not supported"
4242
exit 1
@@ -51,12 +51,12 @@ jobs:
5151
- name: Set up OpenJDK version ...
5252
uses: actions/setup-java@v2
5353
with:
54-
distribution: 'zulu'
54+
distribution: 'temurin'
5555
java-version: ${{ env.currentBuildVersion }}
5656
- name: Grant execute permission for gradlew
5757
run: chmod +x gradlew
5858
- name: Build with Gradle (JDK ${{ env.currentBuildVersion }})
59-
run: ./gradlew clean check jacocoTestReport
59+
run: ./gradlew clean check jacocoTestReport test --fail-fast
6060
- name: Codecov
6161
uses: codecov/codecov-action@v1
6262
with:

CHANGELOG

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,49 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7-
## [Unreleased]
7+
## [1.2.0] - 2025-12-11
8+
### Added
9+
- Docker version
10+
- configurable context path
11+
- configurable proxy URL
12+
13+
### Changed
14+
15+
### Removed
16+
17+
### Deprecated
18+
19+
### Fixed
20+
- PUT Annotation with added via field results in erronous HTTP 409
21+
22+
### Security
23+
24+
### Full changelog
25+
26+
* Bump dependencies by @GGoetzelmann in https://github.com/kit-data-manager/wap-server/pull/17
27+
* Bump com.github.java-json-tools:json-schema-validator from 2.2.8 to 2.2.14 by @dependabot[bot] in https://github.com/kit-data-manager/wap-server/pull/29
28+
* Bump io.spring.dependency-management from 1.1.0 to 1.1.7 by @dependabot[bot] in https://github.com/kit-data-manager/wap-server/pull/28
29+
* Bump net.researchgate.release from 3.0.2 to 3.1.0 by @dependabot[bot] in https://github.com/kit-data-manager/wap-server/pull/26
30+
* Bump com.nimbusds:nimbus-jose-jwt from 9.24.3 to 10.3 by @dependabot[bot] in https://github.com/kit-data-manager/wap-server/pull/25
31+
* Bump io.specto:hoverfly-java-junit5 from 0.20.0 to 0.20.2 by @dependabot[bot] in https://github.com/kit-data-manager/wap-server/pull/30
32+
* Bump org.springframework.boot from 3.4.5 to 3.5.0 by @dependabot[bot] in https://github.com/kit-data-manager/wap-server/pull/31
33+
* Bump com.h2database:h2 from 2.2.220 to 2.3.232 by @dependabot[bot] in https://github.com/kit-data-manager/wap-server/pull/36
34+
* Bump org.asciidoctor.jvm.convert from 3.3.2 to 4.0.4 by @dependabot[bot] in https://github.com/kit-data-manager/wap-server/pull/37
35+
* Bump io.freefair.maven-publish-java from 6.5.1 to 8.14 by @dependabot[bot] in https://github.com/kit-data-manager/wap-server/pull/38
36+
* Bump com.github.kt3k.coveralls from 2.12.0 to 2.12.2 by @dependabot[bot] in https://github.com/kit-data-manager/wap-server/pull/39
37+
* Bump org.owasp.dependencycheck from 7.3.0 to 12.1.3 by @dependabot[bot] in https://github.com/kit-data-manager/wap-server/pull/44
38+
* Bump com.gorylenko.gradle-git-properties from 2.4.1 to 2.5.2 by @dependabot[bot] in https://github.com/kit-data-manager/wap-server/pull/45
39+
* Bump org.springframework.boot from 3.5.0 to 3.5.5 by @dependabot[bot] in https://github.com/kit-data-manager/wap-server/pull/51
40+
* Bump org.owasp.dependencycheck from 12.1.3 to 12.1.5 by @dependabot[bot] in https://github.com/kit-data-manager/wap-server/pull/54
41+
* Bump org.apache.commons:commons-collections4 from 4.1 to 4.5.0 by @dependabot[bot] in https://github.com/kit-data-manager/wap-server/pull/48
42+
* Bump org.springframework.boot from 3.5.5 to 3.5.7 by @dependabot[bot] in https://github.com/kit-data-manager/wap-server/pull/63
43+
* PUT Annotation with added via field results in erronous HTTP 409 by @github-actions[bot] in https://github.com/kit-data-manager/wap-server/pull/66
44+
* Bump org.mockito:mockito-inline from 4.10.0 to 5.2.0 by @dependabot[bot] in https://github.com/kit-data-manager/wap-server/pull/64
45+
* Bump org.postgresql:postgresql from 42.7.2 to 42.7.8 by @dependabot[bot] in https://github.com/kit-data-manager/wap-server/pull/58
46+
* Extend URL configuration options by @GGoetzelmann in https://github.com/kit-data-manager/wap-server/pull/69
47+
* Dockerization by @GGoetzelmann in https://github.com/kit-data-manager/wap-server/pull/70
48+
49+
**Full Changelog**: https://github.com/kit-data-manager/wap-server/compare/v1.1.0...v1.2.0
850

951
## [1.1.0] - 2025-06-13
1052
### Added

CITATION.cff

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
cff-version: 1.2.0
2+
message: If you use this software, please cite it using these metadata.
3+
type: software
4+
title: kitdatamanager/wap-server
5+
abstract: This project contains a server for creating and managing annotations
6+
based on the Web Annotation Data Model (WADM) implementing the complete Web
7+
Annotation Protocol (WAP). The service is realized as microservice using
8+
Spring Boot and can be operated standalone.
9+
version: v1.2.0-SNAPSHOT
10+
keywords:
11+
- kit-data-manager
12+
- metadata
13+
- SPARQL
14+
- RDF
15+
- WADM
16+
- Web Annotation
17+
- jena-fuseki
18+
- restful
19+
authors:
20+
- given-names: Germaine
21+
orcid: https://orcid.org/0000-0003-3974-3728
22+
affiliation: Karlsruhe Institute of Technology (KIT)
23+
family-names: Götzelmann
24+
- given-names: Thomas
25+
orcid: https://orcid.org/0000-0003-2804-688X
26+
affiliation: Karlsruhe Institute of Technology (KIT)
27+
family-names: Jejkal
28+
- given-names: Danah
29+
orcid: https://orcid.org/0000-0001-6296-7282
30+
affiliation: Karlsruhe Institute of Technology (KIT)
31+
family-names: Tonne
32+
contact:
33+
- given-names: Germaine
34+
orcid: https://orcid.org/0000-0003-3974-3728
35+
affiliation: Karlsruhe Institute of Technology (KIT)
36+
family-names: Götzelmann
37+
- given-names: Thomas
38+
orcid: https://orcid.org/0000-0003-2804-688X
39+
affiliation: Karlsruhe Institute of Technology (KIT)
40+
family-names: Jejkal
41+
license: Apache-2.0
42+
url: https://kit-data-manager.github.io/webpage/wap-server/
43+
repository-code: https://github.com/kit-data-manager/wap-server

README.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,21 @@ This project contains a server for creating and managing annotations based on th
77
the complete Web Annotation Protocol (WAP). The service is realized as microservice using Spring Boot and can be operated standalone.
88

99

10-
## How to build
10+
## How to build and use
11+
12+
### Docker
13+
14+
```
15+
docker build -f docker/Dockerfile -t wap-server .
16+
```
17+
18+
To run the application at `http://localhost:<host port>`, use:
19+
20+
```
21+
docker run -d -p <host port>:8080 -e WAPBASEPATH=http://localhost:<host port> wap-server
22+
```
23+
24+
### From source
1125

1226
To install the application from source, see [howtos](howtos/summary.md).
1327

0 commit comments

Comments
 (0)