hl7au / au-fhir-core-inferno

This is an Inferno test kit for the AU Core Implementation Guide
https://inferno.hl7.org.au
Apache License 2.0
5 stars 2 forks source link

CD proposal #34

Open ir4y opened 2 months ago

ir4y commented 2 months ago

Set up automatic deployment. Now the deployment process is manual, so once we apply any changes to the source code we have to ask @KyleOps to perform the system rollout. After this task is completed the continuous delivery pipeline should be set up.

Below I provide my vision of a step-by-step guide on how to accomplish the goal and responsible people

jgsuess commented 2 months ago

I think there is not enough information in this ticket for me to understand what is actually intended in terms of eventual deployment.

However, I see that this is a deployment topic, and this is generally poorly served by Github, as it has limited integration of registries, in particular for Helm and Terraform and very little support for observability or GitOps. For this reason, I suggest that we develop the automated deployment in Gitlab, which provides these features and allows us to concentrate assets in a single location and increase the ability to track from issue to deployment and monitor.

It will also simplify credential management and by that increase safety, as Gitlab uses tokens scoped to the lifetime of the pipeline, reducing leaks. I am raising this last point as we should build the security properties for business-as-usual into deployment at this time. They tend to be challenging to add later.

Note that disruption would be small, as this will not affect current product deliverables and associated pipelines, which arrive as OCI containers. All CI/CD infrastructure for these products will remain as is.

Here are the features in Gitlab I am referring to, that I believe are not available in Github:

I have experience in applying these features.

ir4y commented 2 months ago

Hi @jgsuess thank you for your feedback. All your ideas make perfect sense. To be honest I also prefer Gitlab and use it a lot for other projects. However, I am not sure how we can leverage it for the current project since it is under sparked and hl7au and driven by the community. Do you envision creating a fork of this repo on gitlab.com? If we go this way, @brettesler-ext could you please clarify the process, do we need community approval for this kind of action? Another question is how we are going to maintain the Terraform project for the AWS cloud infrastructure including Ontoserver and SmileCDR configuration. Should it be open-source and publicly available to all SPARKED participants? I tend to think, that it should be. Happy to continue this conversation letter today on the call.

jgsuess commented 2 months ago

I would like to avoid making changes to the source code locations as they currently are. They are sanctified and organised. I think my approach would be to use a downstream repository and add the respective implementation files for DevOps there. This means that the local repository would remain unchanged, and no DevOps artifacts would enter here. Alternatively, and preferred, I would have this repository publish binary artifacts and consume them on the Gitlab side. This has the advantage that versioning and packaging are required, providing a clean process boundary.

ir4y commented 2 months ago

@KyleOps thank you for implementing the action for k8s deployment. Now we have a CI/CD pipeline up and running.

Once the issue with public access to GitHub package https://github.com/hl7au/au-fhir-core-inferno/pkgs/container/au-fhir-core-inferno is resolved I would like to add the following list of enhancements: