This section describes the building-blocks and ideas of the implemented CI/CD pipeline. In case of issues or requests in the scope of CI/CD, please directly consult the maintainers of the repository.
The CI/CD pipeline helps achieving the following goals:
- Detection of problems asap
- Short and robust release cycles
- Avoidance of repetitive, manual tasks
- Increase of Software Quality
After every code change the CI/CD pipeline builds all software packages/Docker containers automatically. Once the containers are built, they are automatically deployed to the dev-system. By these measures building as well as deployment issues are immediately discovered. Once the freshly built containers are deployed, automatic tests are run in order to verify the software and to detect functional issues.
The CI/CD pipeline is constructed by using GitHub Actions. The workflow (workflow file https://github.com/philpotisk/universal-resolver/blob/master/.github/workflows/universal-resolver-ws.yml ) is run after every push to the master and on ever PR against master. The workflow consists of several steps. Each step is implemented as Docker container that performs the relevant actions. Currently, the two main steps are:
- Building the resolver
- Deploying the resolver
The build-step uses this container https://github.com/philpotisk/github-action-docker-build-push, which generically builds a Docker image and pushes it to Docker Hub at https://hub.docker.com/u/universalresolver The second step takes the image and deploys it (create or update) to the configured Kubernetes cluster. The Docker container fulfilling this step can be found here: https://github.com/philpotisk/github-action-deploy-eks
- Dev pushes code to GitHub
- GitHub Actions (GHA) is triggerd by the „push“ event, clones the repo and runs the workflow for every container:
- (a) Docker build
- (b) Docker push (Docker image goes to DockerHub)
- (c) Deploy to Kubernetes
- (d) Runs a test-container
- Manual and automated feedback
- Use httpS for the dev-environment at http://dev.uniresolver.io
- Make all drivers accessible via sub-domains eg. elem.dev.uniresolver.io
- Bundle new release for resolver.identity.foundation (only working drivers)
- Render Smoke Test results as HTML-page and host it via gh-pages
- Update documentation