Skip to content

Commit 1eb8420

Browse files
committed
Merge branch 'develop' into 11405-refactor-exports
Resolved conflicts: src/main/java/edu/harvard/iq/dataverse/api/Metadata.java (seemingly trivial conflict, on account of a new API parameter added in this PR vs. extra annotations having been added in the develop branch). #11405
2 parents 4662b9f + df71344 commit 1eb8420

211 files changed

Lines changed: 5951 additions & 2361 deletions

File tree

Some content is hidden

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

.github/workflows/check_property_files.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
name: Duplicate Keys
1010
runs-on: ubuntu-latest
1111
steps:
12-
- uses: actions/checkout@v6
12+
- uses: actions/checkout@v7
1313
- name: Run duplicates detection script
1414
shell: bash
1515
run: tests/check_duplicate_properties.sh
@@ -18,7 +18,7 @@ jobs:
1818
name: Metadata Blocks Properties
1919
runs-on: ubuntu-latest
2020
steps:
21-
- uses: actions/checkout@v6
21+
- uses: actions/checkout@v7
2222
- name: Setup GraalVM + Native Image
2323
uses: graalvm/setup-graalvm@v1
2424
with:

.github/workflows/codeql.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ jobs:
6161
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
6262
steps:
6363
- name: Checkout repository
64-
uses: actions/checkout@v6
64+
uses: actions/checkout@v7
6565

6666
# Add any setup steps before running the `github/codeql-action/init` action.
6767
# This includes steps like installing compilers or runtimes (`actions/setup-node`

.github/workflows/container_app_pr.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ jobs:
2020
if: ${{ github.repository_owner == 'IQSS' }}
2121
steps:
2222
# Checkout the pull request code as when merged
23-
- uses: actions/checkout@v6
23+
- uses: actions/checkout@v7
2424
with:
2525
ref: 'refs/pull/${{ github.event.client_payload.pull_request.number }}/merge'
2626
- uses: actions/setup-java@v5
2727
with:
2828
java-version: "21"
2929
distribution: 'adopt'
30-
- uses: actions/cache@v5
30+
- uses: actions/cache@v6
3131
with:
3232
path: ~/.m2
3333
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}

.github/workflows/container_integration_tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ jobs:
4545
# CHECKOUT
4646
# ---------------------------
4747
- name: Checkout repository
48-
uses: actions/checkout@v6
48+
uses: actions/checkout@v7
4949

5050
# ---------------------------
5151
# VERIFY DOCKER

.github/workflows/container_maintenance.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ jobs:
199199
- configbaker-image
200200
steps:
201201
- name: Checkout repository
202-
uses: actions/checkout@v6
202+
uses: actions/checkout@v7
203203

204204
### BASE IMAGE
205205
- name: Render README for base image
Lines changed: 264 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,264 @@
1+
name: Dataverse JSF Frontend Tests Workflow
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches:
7+
- develop
8+
- master
9+
paths-ignore:
10+
- "doc/**"
11+
- "**/*.md"
12+
- ".github/ISSUE_TEMPLATE/**"
13+
- ".github/*.md"
14+
pull_request:
15+
branches:
16+
- develop
17+
- master
18+
paths-ignore:
19+
- "doc/**"
20+
- "**/*.md"
21+
- ".github/ISSUE_TEMPLATE/**"
22+
- ".github/*.md"
23+
24+
concurrency:
25+
group: "dataverse-jsf-frontend-tests-${{ github.ref }}"
26+
cancel-in-progress: true
27+
28+
jobs:
29+
main-jsf-tests-workflow:
30+
runs-on: ubuntu-latest
31+
timeout-minutes: 90
32+
33+
defaults:
34+
run:
35+
shell: bash
36+
37+
permissions:
38+
contents: read
39+
40+
steps:
41+
42+
# ---------------------------
43+
# CHECKOUT
44+
# ---------------------------
45+
- name: Checkout repository
46+
uses: actions/checkout@v7
47+
# ---------------------------
48+
# VERIFY DOCKER
49+
# ---------------------------
50+
- name: Verify Docker
51+
run: |
52+
set -euo pipefail
53+
docker version
54+
55+
# ---------------------------
56+
# SETUP JAVA + MAVEN
57+
# ---------------------------
58+
- name: Setup Java
59+
uses: actions/setup-java@v5
60+
with:
61+
distribution: "temurin"
62+
java-version: "21"
63+
cache: "maven"
64+
65+
- name: Verify Maven
66+
run: |
67+
set -euo pipefail
68+
mvn -version
69+
70+
# ---------------------------
71+
# BUILD IMAGES (Dataverse-native)
72+
# ---------------------------
73+
- name: Build Dataverse containers via Maven
74+
run: |
75+
set -euo pipefail
76+
mvn -Pct -T 1C package
77+
78+
# ---------------------------
79+
# START CONTAINERS (BACKGROUND)
80+
# ---------------------------
81+
- name: Start Dataverse stack
82+
run: |
83+
set -euo pipefail
84+
mvn -Pct docker:start \
85+
-Ddataverse.feature.index-harvested-metadata-source=true \
86+
-Ddataverse.oai.server.maxidentifiers=2 \
87+
-Ddataverse.oai.server.maxrecords=2
88+
89+
# ---------------------------
90+
# WAIT FOR API READINESS
91+
# ---------------------------
92+
- name: Wait for Dataverse API readiness
93+
run: |
94+
set -euo pipefail
95+
URL="http://localhost:8080/api/info/version"
96+
MAX_ATTEMPTS=10
97+
SLEEP_TIME=15
98+
echo "Waiting for Dataverse readiness..."
99+
for attempt in $(seq 1 $MAX_ATTEMPTS); do
100+
echo "Attempt $attempt..."
101+
RESPONSE=$(curl -s --max-time 15 "$URL" || true)
102+
STATUS=$(echo "$RESPONSE" | jq -r '.status' 2>/dev/null || echo "NOT_READY")
103+
if [ "$STATUS" = "OK" ]; then
104+
echo "Dataverse endpoint is READY."
105+
echo "Waiting 30 more seconds for full readiness..."
106+
sleep 30
107+
echo "Response: $RESPONSE"
108+
exit 0
109+
fi
110+
echo "Not ready. Sleeping ${SLEEP_TIME}s..."
111+
sleep $SLEEP_TIME
112+
if [ $SLEEP_TIME -lt 60 ]; then
113+
SLEEP_TIME=$((SLEEP_TIME * 2))
114+
if [ $SLEEP_TIME -gt 60 ]; then
115+
SLEEP_TIME=60
116+
fi
117+
fi
118+
done
119+
echo "Dataverse failed to become ready."
120+
docker ps
121+
CONTAINERS="$(docker ps -aq)"
122+
if [ -n "$CONTAINERS" ]; then
123+
for cid in $CONTAINERS; do
124+
echo "===== Logs for container $cid ====="
125+
docker logs "$cid" || true
126+
done
127+
else
128+
echo "No running containers to show logs for."
129+
fi
130+
exit 1
131+
132+
# ---------------------------
133+
# MAP LOCALSTACK TO LOCALHOST
134+
# ---------------------------
135+
- name: Map localstack to localhost for Maven tests
136+
run: echo "127.0.0.1 localstack" | sudo tee -a /etc/hosts
137+
138+
# ---------------------------
139+
# CONFIGURE DATAVERSE FOR TESTS
140+
# ---------------------------
141+
- name: Configure Dataverse API Settings
142+
run: |
143+
set -euo pipefail
144+
145+
echo "Setting API Database Settings via internal container curl..."
146+
147+
declare -A settings=(
148+
[":BuiltinUsersKey"]="burrito"
149+
[":ProvCollectionEnabled"]="true"
150+
[":AllowApiTokenLookupViaApi"]="true"
151+
[":AllowSignUp"]="true"
152+
)
153+
for key in "${!settings[@]}"; do
154+
echo "Setting $key..."
155+
docker exec dev_dataverse curl --fail-with-body -sS -X PUT -d "${settings[$key]}" "http://localhost:8080/api/admin/settings/$key"
156+
echo ""
157+
done
158+
159+
# ---------------------------
160+
# PRE-TEST INJECTIONS
161+
# ---------------------------
162+
- name: Put SUSHI config file in place
163+
run: |
164+
set -euo pipefail
165+
166+
SOURCE_FILE="${{ github.workspace }}/src/test/java/edu/harvard/iq/dataverse/makedatacount/sushi_sample_logs.json"
167+
168+
echo "Injecting local file into container..."
169+
docker exec -i dev_dataverse sh -c "cat > /tmp/sushi_sample_logs.json" < "$SOURCE_FILE"
170+
171+
docker exec dev_dataverse ls -l /tmp/sushi_sample_logs.json
172+
docker exec dev_dataverse head -n 5 /tmp/sushi_sample_logs.json
173+
174+
# ---------------------------
175+
# SETUP NODE.JS
176+
# ---------------------------
177+
- name: Set up Node.js
178+
uses: actions/setup-node@v7
179+
with:
180+
node-version: "24"
181+
182+
# ---------------------------
183+
# CHECKOUT dataverse-jsf-tests
184+
# ---------------------------
185+
- name: Checkout dataverse-jsf-tests
186+
uses: actions/checkout@v7
187+
with:
188+
repository: gdcc/dataverse-jsf-tests
189+
path: dataverse-jsf-tests
190+
191+
- name: Install dataverse-jsf-tests dependencies
192+
run: npm ci
193+
working-directory: dataverse-jsf-tests
194+
195+
- name: Install Playwright browsers
196+
run: npx playwright install --with-deps
197+
working-directory: dataverse-jsf-tests
198+
199+
# ---------------------------
200+
# RUN PLAYWRIGHT FRONTEND TESTS
201+
# ---------------------------
202+
- name: Run Playwright frontend tests
203+
run: npx playwright test
204+
working-directory: dataverse-jsf-tests
205+
env:
206+
BASE_URL: "http://localhost:8080"
207+
LOGIN_ADAPTER: "builtin"
208+
DV_USERNAME: "dataverseAdmin"
209+
DV_PASSWORD: "admin1"
210+
DV_FULL_NAME: "Dataverse Admin"
211+
ROOT_DATAVERSE: "/dataverse/root"
212+
SKIP_PREFLIGHT: "true"
213+
DOTENV_CONFIG_QUIET: "true"
214+
215+
# ---------------------------
216+
# UPLOAD PLAYWRIGHT REPORT
217+
# ---------------------------
218+
- name: Upload Playwright report
219+
if: always()
220+
uses: actions/upload-artifact@v7
221+
with:
222+
name: playwright-report
223+
path: dataverse-jsf-tests/playwright-report/
224+
retention-days: 14
225+
226+
# ---------------------------
227+
# COLLECT DOCKER LOGS (ALWAYS)
228+
# ---------------------------
229+
- name: Collect Docker logs (mapped)
230+
if: always()
231+
run: |
232+
mkdir -p docker-logs
233+
echo "Gathering container metadata..."
234+
docker ps -a --format '{{.Names}}|{{.Image}}|{{.Status}}' > docker-logs/container-summary.txt
235+
while IFS='|' read -r name image status; do
236+
label="$name"
237+
case "$name" in
238+
*dataverse*) label="dataverse-app" ;;
239+
*postgres*) label="postgres-db" ;;
240+
*solr*) label="solr-index" ;;
241+
*localstack*)label="localstack-s3" ;;
242+
esac
243+
echo "Collecting logs for $name ($label)"
244+
{
245+
echo "===== CONTAINER: $name ====="
246+
echo "Label: $label"
247+
echo "Image: $image"
248+
echo "Status: $status"
249+
echo ""
250+
echo "===== LOGS ====="
251+
docker logs --timestamps "$name" 2>&1 || true
252+
} > "docker-logs/${label}__${name}.log"
253+
done < docker-logs/container-summary.txt
254+
255+
# ---------------------------
256+
# UPLOAD DOCKER LOGS (ALWAYS)
257+
# ---------------------------
258+
- name: Upload Docker logs
259+
if: always()
260+
uses: actions/upload-artifact@v7
261+
with:
262+
name: docker-logs
263+
path: docker-logs/
264+
retention-days: 14

.github/workflows/deploy_beta_testing.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
runs-on: ubuntu-latest
1515

1616
steps:
17-
- uses: actions/checkout@v6
17+
- uses: actions/checkout@v7
1818

1919
- uses: actions/setup-java@v5
2020
with:
@@ -47,7 +47,7 @@ jobs:
4747
runs-on: ubuntu-latest
4848

4949
steps:
50-
- uses: actions/checkout@v6
50+
- uses: actions/checkout@v7
5151

5252
- name: Download war artifact
5353
uses: actions/download-artifact@v8

.github/workflows/deploy_to_internal.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
runs-on: ubuntu-latest
2121

2222
steps:
23-
- uses: actions/checkout@v6
23+
- uses: actions/checkout@v7
2424

2525
- uses: actions/setup-java@v5
2626
with:
@@ -49,7 +49,7 @@ jobs:
4949
runs-on: ubuntu-latest
5050

5151
steps:
52-
- uses: actions/checkout@v6
52+
- uses: actions/checkout@v7
5353

5454
- name: Download war artifact
5555
uses: actions/download-artifact@v8

.github/workflows/generate_war_file.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
runs-on: ubuntu-latest
1414

1515
steps:
16-
- uses: actions/checkout@v6
16+
- uses: actions/checkout@v7
1717

1818
- uses: actions/setup-java@v5
1919
with:

.github/workflows/guides_build_sphinx.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ jobs:
1010
docs:
1111
runs-on: ubuntu-latest
1212
steps:
13-
- uses: actions/checkout@v6
13+
- uses: actions/checkout@v7
1414
- id: lookup
1515
run: |
1616
echo "sphinx_version=$(grep Sphinx== ./doc/sphinx-guides/requirements.txt | tr -s "=" | cut -f 2 -d=)" | tee -a "${GITHUB_OUTPUT}"

0 commit comments

Comments
 (0)