Subjekt Help

DevOps

The project followed a mix of the Trunk-based Development and Git flow principles. Pull requests requirements for merging were only related to CI/CD pipeline success, not involving PR reviews.

For the subjekt library project, the project initially migrated from a JVM only project to a Kotlin Multiplatform one using Git flow, organizing the migration into separated, big branches that were merged into a long-lived branch called feat/multiplatform that was ultimately merged into the main branch introducing a breaking change and therefore a MAJOR release. Following up to that, the approach adopted was the Trunk-based one, introducing smaller, incremental changes with frequent releases, all backed by a relevant CI/CD pipeline.

For api-web, web-frontend and bootstrap, the projects started with Trunk-based approach since the beginning, with a simple CI/CD pipeline to automatize publication and check the building outcome of the project.

The whole project used Conventional commits when committing code as well as Semantic Release and Versioning for automatic release and versioning through a solid CI/CD pipeline triggered on default branches. Git Hooks were used in order to perform pre-commit checks on tests passing, code linting etc.

CI/CD

In all the repositories a CI/CD pipeline was set up in order to guarantee code consistency and stability.

Subjekt - library

Secrets available
No secrets
Test fail
check-secrets
test-extensively
Stop
release-and-publish
Stop
success

Where:

  • check-secrets checks if the necessary secrets are available for the CI/CD pipeline to run.

  • test-extensively runs the tests for the library on a matrix of different platforms.

  • release-and-publish releases the library to the public repository and publishes it on the target registries (Maven Central, NPM, GitHub Packages).

  • success is the final step of the pipeline, where the pipeline is considered successful.

Subjekt - api-web

The api web project has to manage two subprojects contemporarily, the api and the auth one. The pipeline managed common steps with a matrix strategy.

Secrets available
No secrets
Will release
Will release
Test fail
Test fail
check-secrets
precompute-next-version
Stop
test-common
deploy-to-registry
deploy-on-pages
test-and-check
Stop
release
Stop
success

Where:

  • check-secrets: checks if the necessary secrets are available for the CI/CD pipeline to run.

  • precompute-next-version computes the next version of the project based on the previous one and the commits since the last release.

  • test-common runs tests on the common project.

  • test-and-check runs tests and checks on the api and auth modules.

  • release releases the project to the public repository.

  • deploy-to-registry deploys the project to the GitHub Packages Docker registry, ONLY if the precompute-next-version step triggered a release.

  • deploy-on-pages deploys the project API documentation to GitHub Pages, ONLY if the precompute-next-version step triggered a release.

  • success is the final step of the pipeline, where the pipeline is considered successful.

Subjekt - web-frontend

Secrets available
No secrets
Build fail
Check fail
check-secrets
precompute-next-version
Stop
build
check
release
Stop
deploy-to-registry
success
Stop

Where:

  • check-secrets checks if the necessary secrets are available for the CI/CD pipeline to run.

  • precompute-next-version computes the next version of the project based on the previous one and the commits since the last release.

  • build builds the project.

  • check runs format and lint checks on the project.

  • release releases the project to the public repository.

  • deploy-to-registry deploys the project to the GitHub Packages Docker registry, ONLY if the precompute-next-version step triggered a release.

  • success is the final step of the pipeline, where the pipeline is considered successful.

Subjekt - bootstrap

The bootstrap project performs end-to-end tests on the project, building the project with docker-compose and running the tests with the playwright library.

Secrets available
No secrets
Test success
Test fail
check-secrets
test
Stop
release
Stop
success
  • check-secrets checks if the necessary secrets are available for the CI/CD pipeline to run.

  • test runs the end-to-end tests on the project using the playwright library.

  • release releases the project to the public repository.

  • success is the final step of the pipeline, where the pipeline is considered successful.

Last modified: 11 February 2025