GQCP devops#

DevOps aims to shorten the development life cycle by providing support for continuous integration, delivery and deployment.

Integration: Github#

Github provides hosting of Git repo’s together with collaborative features such as bug tracking, feature requests, task management and project management.

Delivery: Github Actions#

Github Actions automate the build and test stages. You can enable a ready to go Github Action by putting the relevant *.yml file in the .github/workflows/ directory of your repo. You can check the status of this actions in the actions tab of the Github repo in question.

Deployment: Conda and Docker#

Conda and Anaconda Cloud#

Conda is a package manager for software. You have to provide three building blocks for this software to be built:

  • build.sh: a build script.

  • meta.yaml: describes the package and the requirements that need to be met on build, host and run systems.

  • conda_build_config.yaml: sets the specific versions of the requirements used. Should be kept constant over the intended software environment.

For easy distribution, built packages can be uploaded to Anaconda Cloud.

Docker#

Docker provides a platform as a service and is ideally suited to provide development environments. Docker only requires a Dockerfile, which contains all steps needed to provision the container.

For easy distribution, images can be uploaded to Docker Hub.