Continuous Integration
The CI pipeline for the ColdCase-Client automates the processes of building, testing, and analyzing code. It is implemented using GitHub Actions and is triggered by:
Every push to the
developmentbranchEvery pull request
This ensures that all changes undergo a structured verification process before integration.
Additional Pipelines
In the Client and Documentation repositories, you will find additional .yml files defining separate pipelines:
Documentation Repository:
Builds the writerside documentation
Publishes it directly to GitHub Pages
Client Repository:
Builds the Javadoc
Publishes it to GitHub Pages
These pipelines ensure that both the documentation and code-related resources are automatically generated and deployed.
ColdCase-Client CI Pipeline
Setting up the Environment
The pipeline starts by checking out the project repository and setting up JDK 21 using the Temurin distribution. To optimize build performance, the pipeline caches Gradle dependencies, reducing redundant downloads across workflow runs. The Gradle wrapper is granted execute permissions to ensure compatibility with the project's Gradle setup.
Building and Testing
Once the environment is ready, the project is built using Gradle. After a successful build, the test suite is executed, and the results are stored. The workflow then uploads test reports and code coverage reports as artifacts, allowing us to review them later.
Code Coverage and Reporting
The pipeline uses JaCoCo to analyze test coverage. It requires an overall minimum coverage of 40% and at least 60% coverage for changed files in a pull request. The coverage report is automatically posted as a comment in the pull request, providing us with immediate feedback on the quality of the changes.
ColdCase-Server CI Pipeline
The server pipeline is designed to automate testing for the Deno-based server. It runs on every push to the main and development branches, as well as for all pull requests.
The pipeline starts by checking out the repository to ensure the latest code is available. It then sets up Deno using the official action.
Once Deno is installed, the pipeline preloads dependencies by caching the modules referenced in server/main.ts, which helps speed up subsequent builds. Finally, the pipeline executes the test suite using deno test --allow-net, allowing tests that require network access to run. This ensures that the project’s functionality is validated before changes are merged into the main or development branches.