Gitlab + Pipelines = <3

Gitlab CI Migration at doctorly
10.11.2022

doctorly builds and provides a cloud native SaaS tool for medical practice management. The solution offers all of the functionality needed to run a state or private medical practice in Germany using an intuitive and clear interface that supports the user throughout their workflow including tasks such as medical records management, prescriptions, diagnosis, services, billing, etc… while remaining secure and compliant with GDPR as well as KBV and gematik regulations. doctorly is made up of an international team of remote and onsite engineers, doctors, technology experts and product design specialists with offices in Berlin and Cape Town.

The project

doctorly builds and provides a cloud native SaaS tool for medical practice management. The solution offers all of the functionality needed to run a state or private medical practice in Germany using an intuitive and clear interface that supports the user throughout their workflow including tasks such as medical records management, prescriptions, diagnosis, services, billing, etc… while remaining secure and compliant with GDPR as well as KBV and gematik regulations. doctorly is made up of an international team of remote and onsite engineers, doctors, technology experts and product design specialists with offices in Berlin and Cape Town.

doctorly had been using Azure DevOps for CI/CD including automated tests, but wanted to leverage the benefits of GitLab including integrated CVE and license scanning amongst many other features. While their teams were more than capable of doing the migration alone, the effort involved would have reduced their capacity for feature work. They chose kreuzwerker to support them and to enable the migration to take place in a timely manner without disrupting regular sprint goals.

Solution

Firstly, kreuzwerker analysed the current Azure DevOps pipelines setup by joining workshops, meetings, calls with doctorly’s engineers. We were provided with access to current setup, documentation and pipelines.

Next we have studied Azure DevOps pipelines, their workflow, conditions and outcomes. We presented our proposal and after doctorly’s final suggestions and consent, we started migrating Azure DevOps pipelines to GitLab CI platform. In order to not interfere with the current workload, we used a mirrored repository in the GitLab platform and performed the implementation there.

Among other items, kreuzwerker implemented new pipelines for:

  • .NET and Node.js builds, tests and artifact publishing
  • Docker image builds and pushes to separate registries
  • QA post-build and nightly scheduled tests with publication of results.

As Azure DevOps and GitLab CI solutions are different in certain scenarios (UI differences, reports representation, etc…), so various options and trade-offs were discussed with doctorly to achieve the best outcomes.

kreuzwerker supplied the proposal for a working CI/CD solution with GitLab CI. All variables and secrets were handled by GitLab and passed into the pipelines according to the triggered scenario.

As a bonus, kreuzwerker implemented the possibility to deploy certain auto-generated environments with an easy way to rollback or re-deploy those for developers. We also added graphical representation of .NET tests to the reporting sections.

The kreuzwerker team handed over the new solution and documentation to the doctorly DevOps team. kreuzwerker also organised a demo session for doctorly’s development and management team to ensure full understanding of how to use the new GitLab tooling.

From the beginning until the final stage, kreuzwerker and the doctorly team worked closely on technical and implementation challenges to ensure a solution aligned to the requirements within the agreed budget and time.

Advantages

doctorly now has a production-ready, flexible, secure, scalable and modern CI/CD solution which covers their needs.

The main benefits of the implemented solution are:

  1. Performance - the builds are faster (compared to Azure DevOps)
  2. Reduced complexity - simplified pipelines for code build, testing, API and E2E tests.
  3. Lower latencies - pipelines run faster, are more reliable and easier to manage.
  4. Increased productivity - teams can deliver code changes easier and build more reliable releases.
  5. Improved test reports - checking and fast correction of issues is possible.
  6. Transparency - Slack and other integrations improved the awareness of pipeline status.
  7. Low downtimes - re-deployment and rollback of environments ensures high utilisation.
  8. Full feedback - automated nightly QA tests provide data about deployed environments.

Furthermore, doctorly was able to integrate their other build tools (such as Vercel), enable integrated CVE and license scanning, enable Auto DevOps feature and constantly expand on their pipeline capabilities with GitLab.

Conclusion

kreuzwerker and doctorly solved many not only technical challenges together including: requirements agreement, migration process, new pipeline design, implementation and onboarding to the new platform.

As the outcome of successful migration doctorly uses GitLab CI as their fully integrated CI/CD platform for leverage code quality and making consistent releases faster and easier.

Besides saving time during build and deploy stages, switching from other CI/CD solutions saves money too.