Infrastructure as Code (IaC) tools help us to promote the best practices, which make the process of building and configuring the infrastructure more effective, reduce costs and operational effort. With the DevOps workplace we harmonize the toolset, employed to manage the infrastructure through a descriptive model. While the code is maintianed in configuration modules, stored in version control systems, many development tools remain locally installed. Through a common setup, we foster well-documented code formats, provide greater accuracy, reduce errors, and increase speed and consistency in code-based infrastructure automation. Our toolset is open source based and allows DevOps teams to control and customize the required infrastructure instead of manually configuring the servers and operating systems. The following command installs an IaC developement environment on the Chromebook Linux runtime
wget -q -O - https://raw.githubusercontent.com/avaloqcloud/acf_devops/main/setup.sh | sudo bash
The DevOps workplace is written for Chromebooks and requires the activation of the Linux Development Environment and user access to the Avaloq Cloud Github Repository.
After installation users should configure the git client consider setting up a PostgreSQL user account.
git config --local user.name "Your Name"
git config --local user.email youraddress@mail.com
For smooth teamwork, making sure developers and operators code in sync, is essential. This is where deployment strategies, a pillar in the DevOps world, step in. For Avaloq Cloud Services we adopt a tailored version of GitHub Flow.
We use Github as Version Control System, and leverage the Feature Branch Strategy to keep the main branch stable. It enables contributors to maintain development branches separately, based on the feature. Code is stored in four major branches named
-
stable is the release that contains the deployment reference code,
-
main represents the current deployment release, before code is merged from the 'test' branch, 'main' code is merged in the 'stable' branch
-
test is the code for the next release and enables operators to perform system integration testing, before is merged from the 'module' branches, it has to validated and testet
-
module is derived from the 'stable' branch and is the reference for module development, it is not stable, before code is marked is ready.
For the work on a new feature, a feature branch us created from the 'test' branch as base branch. When the code is committed, the developer has to run module tests. Dependency test have to performed to ensure 'destroy' is functioning and 'main' can be performed without destroying existing resources. When all test cases and manual tests are passed the code is merged with the 'test' branch, the unit tests and manual tests have to be run again to check the backward compatibility and ensuring no previous changes were broken.
This figure illustrates the branch strategy. The code is maintained in a stable manner and can be rolled back to the previous version. The main branch remains stable, implementing features, the latest plan branch code becomes the the base, for new features this cycle is repeated.
The following tools will be installed with the DevOps Workplace:
Installing dependencies using Devbox or
This project is a community project the code is open source. Please submit your contributions by forking this repository and submitting a pull request! Avaloq appreciates any contributions that are made by the open source community.
Copyright (c) 2023 Avaloq and/or its affiliates.
Licensed under the Apache License, Version 2.0.
See LICENSE for more details.
AVALOQ DOES NOT PROVIDE ANY WARRANTY FOR SOFTWARE CONTAINED WITHIN THIS REPOSITORY AND NO CUSTOMARY SECURITY REVIEW HAS BEEN PERFORMED. THIRD PARTIES MAY HAVE POSTED SOFTWARE, MATERIAL OR CONTENT TO THIS REPOSITORY WITHOUT ANY REVIEW. USE AT YOUR OWN RISK.