The project uses Gradle as a build tool. It already contains
./gradlew wrapper script, so there's no need to install gradle.
To build the project execute the following command:
./gradlew buildCreate the image of the application by executing the following command:
./gradlew assembleNote: Docker Compose V2 is highly recommended for building and running the application.
In the Compose V2 old docker-compose command is replaced with docker compose.
Create docker image:
docker compose buildRun the distribution (created in build/install/opal-filehandler directory)
by executing the following command:
docker compose upThis will start the API container exposing the application's port
(set to 4075 in this template app).
In order to test if the application is up, you can call its health endpoint:
curl http://localhost:4075/healthYou should get a response similar to this:
{"status":"UP","diskSpace":{"status":"UP","total":249644974080,"free":137188298752,"threshold":10485760}}
To skip all the setting up and building, just execute the following command:
./bin/run-in-docker.shFor more information:
./bin/run-in-docker.sh -hScript includes bare minimum environment variables necessary to start api instance. Whenever any variable is changed or any other script regarding docker image/container build, the suggested way to ensure all is cleaned up properly is by this command:
docker compose rmIt clears stopped containers correctly. Might consider removing clutter of images too, especially the ones fiddled with:
docker images
docker image rm <image-id>There is no need to remove postgres and java or similar core images.
Jenkinsfile_nightly runs on weekdays using H 07 * * 1-5. The shared HMCTS nightly
pipeline performs checkout, build and dependency-check stages before running the
file-handler integration, staging functional and staging smoke suites.
Nightly parameters:
| Parameter | Default | Purpose |
|---|---|---|
Integration |
true |
Runs the Testcontainers-backed integration suite once. |
Functional |
true |
Runs the functional suite against the staging deployment. |
Smoke |
true |
Runs the smoke suite against the staging deployment. |
ZephyrExecution |
false |
Creates Zephyr executions. Zephyr execution is also enabled automatically on Fridays. |
The staging functional suite loads database and blob-storage credentials and endpoints
from the Opal Key Vault, and reads the functional-test blob container from the staging
chart values. Functional fixture hooks manage their own setup and cleanup because the
nightly pipeline sets FUNCTIONAL_TEST_DB_MANAGED_BY_PIPELINE=false.
Nightly reports and artifacts:
- Integration publishes
Integration Tests Reportand archivesintegration-output/, including the JUnit 5 Zephyr report underintegration-output/zephyr/. - Functional publishes
Serenity Functional Test Reportand archivesfunctional-output/, including its Cucumber Zephyr report. - Smoke publishes
Serenity Smoke Test Reportand archivessmoke-output/, including its Cucumber Zephyr report. - A failed Gradle stage, missing report, missing Zephyr input or failed Zephyr execution marks the nightly build as failed after all selected suites have published their output.
- Master failures and subsequent fixes are reported to
#opal-nightly-builds.
The HMCTS nightly organisation suppresses automatic SCM-triggered builds. After the
nightly job is first discovered, run the master job manually once with Zephyr disabled
to apply the cron trigger declared in Jenkinsfile_nightly. Subsequent weekday builds
will then be timer-triggered.
This project is licensed under the MIT License - see the LICENSE file for details