devonfw Hangar is the means –a packaging of documentation and tools– needed to create a top-down DevOps (pre-made) environment to be used as a functional starting point for developing, running and managing new projects in the Cloud.
The created environment will cover from the code management, which then will be integrated with CI/CD strategies, up to the deployment (would it be Kubernetes –AWS EKS, Azure AKS, Google Cloud GKE– or Google Cloud Run) and monitoring of the software solution on the different deployment environments.
The goal is that anyone could setup this environment with a few steps, push his application code, sit back, and relax.
What is Takeoff?
Capgemini offers a simple, Open Source, solution with which the teams and clients can create a complete Cloud based Dev & Run environment with a single command or executable.
We define a “Cloud based Dev & Run environment” as a subscription at a public cloud provider (Google Cloud, AWS, Microsoft Azure) to develop, deploy, run and manage software applications on a sophisticated infrastructure that is owned and provided by the cloud provider and managed as a single entity by the client or Capgemini.
The environment contains everything which is needed for the development, continuous integration and deployment, provisioning, orchestration and monitoring of the application and dependent resources. It also includes all services needed for (financial) management and administration of the subscription/environment itself.
The resulting environment has a fully working full-stack example application in source code form which is automatically compiled and build in the same environment.
In summary, devonfw Takeoff can be used to accelerate and industrialize to a large extent Cloud based development.
What is the difference?
devonfw Hangar is a guide with automated toolchain for the creation of Cloud based Dev & Run environments. It is not a 100%, fully automatic, monolithic tool, but rather a pragmatic bundling of documentation and tools to facilitate and automate (where possible) the creation of Cloud environments.
devonfw Takeoff can be seen as a wrapper on top of Hangar to simplify even further the setup, in a fully automatic way, providing full-featured quickstart use cases.
How to use Hangar/Takeoff?
Directly calling the scripts. You can find more information of each of the modules and example uses cases in their corresponding documentation.
Calling the scripts inside the all-in-one Docker image, which bundles all the necessary toolkits. You can find more information on how to setup and use the image.
Using the Takeoff CLI or GUI which provides a simpler and user-friendly interface for creating and managing projects. See Takeoff documentation.
Hangar use cases
Project hosted and with CI/CD on Azure DevOps, and deployed on either AWS EKS or Azure AKS
User Story:
As a Developer (setting up the package pipeline), I want to have a detailed guide and scripts for setting up Node.js environment, so that I can get it done fast and without errors.
Details:
Modify existing blocks related to pipelines with node.js related information. This includes updating guide and scripts related to "Setup Package pipeline"
As someone setting up the project infrastructure, I want to have a detailed guide on how to work with the branches and the enviroments so that I can get this done fast and without errors.
To be covered:
Gitflow
Include:
How to promote code to different envs
To have in mind:
Artifacts generated out of code should be environment and branch independent (given the involved source code is the same), so they can be promoted from one environment to another without having to go through all pipelines. This is not to be necessarily enforced, but a good practice.
As someone setting up the project infrastructure, I want to have a detailed guide on how to activate and prepare Azure DevOps so that I can get this done fast and without errors.
Detail requisites for cases where Azure DevOps is provided.
User Story:
As a Developer (setting up the library for the package pipeline), I would like to have a possibility to choose a proper script (depending on the programming language I am using in the project), so that the creating package pipeline is fast and ready for usage as out of the box solution.
Description:
Separate the common (generic) script related to package pipeline and extract the "language specific" part of it, into seperate script.
Albert already did some renaming in #72 but we have to take the main functionality of the package script (all the things unrelated to the language) to a common script and the language one (which will continue to be the entrypoint) should call it.
Acceptance Criteria:
The common script for the package pipeline does not contain language specific lines of code
There is a script for Quarkus
There is a script for Node.js
Firstly language-specific script is called which then calls the common one
User Story
As a unexperienced developer setting up package pipeline, I would like to have an example of the package pipeline for generic registry case and AWS registry case with regards to the technology.
Description
In the documentation (guide) there is an example of Quarkus project & Generic registry. Please add examples for:
As someone setting up the project infrastructure, I want to have a detailed guide on how to check if my pipeline is working so that I can get this done fast and without errors.
User Story
As a developer when running the create-repo script and something goes wrong in the process,
I would like the script to revert the changes made,
so that I do not have to do it manually.
Description
Refactor the create-repo script so that if it fails at some point it undoes the changes made. (The same as the other task but for the create repo script.)
Current situation:
In the current version if something breaks in the middle of the execution the user needs to undo this changes manually in order to execute the script again.
Acceptance criteria
In case create-repo fails (for any reason), the script shall note it and revert changes made.
As someone setting up the project infrastructure, I want to have a detailed guide on how to set up a SonarQube instance for Azure DevOps so that I can get this done fast and without errors.
User Story:
As a Developer (setting up the test pipeline), I want to have a detailed guide and scripts for setting up Angular environment, so that I can get it done fast and without errors.
Details:
Modify existing blocks related to pipelines with Angular related information. This includes updating guide and scripts related to "Setup Test pipeline"
User Story:
As a Developer (setting up the quality pipeline), I want to have a detailed guide and scripts for setting up .NETenvironment, so that I can get it done fast and without errors.
Details:
Modify existing blocks related to pipelines with .NET related information. This includes updating guide and scripts related to "Setup Quality pipeline"
User Story:
As a Developer (setting up the test pipeline), I want to have a detailed guide and scripts for setting up Node.js environment, so that I can get it done fast and without errors.
Details:
Modify existing blocks related to pipelines with node.js related information. This includes updating guide and scripts related to "Setup Test pipeline"
As someone setting up the project infrastructure, I want to have a detailed guide on how to set up a test pipeline so that I can get this done fast and without errors.
As someone setting up the project infrastructure, I want to have a detailed guide on how to provision the environment so that I can get this done fast and without errors.
Same as #10 but for Azure AKS and without the part of evaluating Rancher.
User Story:
As a Developer (setting up the deploy pipeline), I want to have a detailed guide and scripts for setting up Angular environment, so that I can get it done fast and without errors.
Details:
Modify existing blocks related to pipelines with Angular related information. This includes updating guide and scripts related to "Setup Deploy pipeline"
As someone setting up the project infrastructure, I want to have a detailed guide on how to set up a build pipeline so that I can get this done fast and without errors.
User Story:
As a Developer (setting up the deploy pipeline), I want to have a detailed guide and scripts for setting up Node.js environment, so that I can get it done fast and without errors.
Details:
Modify existing blocks related to pipelines with node.js related information. This includes updating guide and scripts related to "Setup Deploy pipeline"
User Story:
As a Developer (setting up the quality pipeline), I want to have a detailed guide and scripts for setting up Node.js environment, so that I can get it done fast and without errors.
Details:
Modify existing blocks related to pipelines with node.js related information. This includes updating guide and scripts related to "Setup Quality pipeline"
As someone setting up the project infrastructure, I want to have a detailed guide on how to provision the environment from Azure DevOps so that I can get this done fast and without errors.
Tasks:
Create K8s cluster
Create LB
...
Using Terraform. Provide some basic guidance on how to use it but keep in mind that it will be primarily executed from the pipeline. Explain the highlights of the deployed environment.
Make pipeline parametrized for deploying several environments.
User Story:
As a Developer (setting up the library package pipeline), I want to have a detailed guide and scripts for setting up Node.js environment, so that I can get it done fast and without errors.
Details:
Modify existing blocks related to pipelines with node.js related information. This includes updating guide and scripts related to "Setup Library Package pipeline"
As someone setting up the project infrastructure, I want to have a detailed guide on how to prepare an AWS account for a deployment in EKS so that I can get this done fast and without errors.
Detail requisites for cases where AWS account is provided. Also, find out the permissions necessary to perform the steps in the guide.
User Story:
As a Developer (setting up the deploy pipeline), I want to have a detailed guide and scripts for setting up .NET environment, so that I can get it done fast and without errors.
Details:
Modify existing blocks related to pipelines with .NET related information. This includes updating guide and scripts related to "Setup Deploy pipeline"
User Story:
As a Developer (setting up the package pipeline), I want to have a detailed guide and scripts for setting up Angular environment, so that I can get it done fast and without errors.
Details:
Modify existing blocks related to pipelines with Angular related information. This includes updating guide and scripts related to "Setup Package pipeline"
As someone setting up the project infrastructure, I want to have a detailed guide on how to do basic monitoring and log retrieval of the k8s cluster so that I can get this done fast and without errors.
As someone setting up the project infrastructure, I want to have a detailed guide on how to set up a Maven library package pipeline so that I can get this done fast and without errors.
The goal is to package the library and push it into a Maven repo hosted on Azure DevOps and test integration with Quarkus reference app, so this block includes:
Find a permissive licensed library and host it in a new Azure DevOps repo under Devon Hangar organization.
User Story:
As a Developer (setting up the library package pipeline), I want to have a detailed guide and scripts for setting up Angular environment, so that I can get it done fast and without errors.
Details:
Modify existing blocks related to pipelines with Angular related information. This includes updating guide and scripts related to "Setup Library Package pipeline"
Acceptance Criteria:
Scripts are updated with Angular related details
Guide is updated with Angular related details
User Story:
As a Developer (setting up the build pipeline), I want to have a detailed guide and scripts for setting up .NET environment, so that I can get it done fast and without errors.
Details:
Modify existing blocks related to pipelines with .NET related information. This includes updating guide and scripts related to "Setup Build pipeline". You should follow the general project guidelines.
User Story:
As a Developer (setting up the test pipeline), I want to have a detailed guide and scripts for setting up .NET environment, so that I can get it done fast and without errors.
Details:
Modify existing blocks related to pipelines with .NET related information. This includes updating guide and scripts related to "Setup Test pipeline"
As someone setting up the project infrastructure, I want to have a detailed guide on how to set up a package pipeline so that I can get this done fast and without errors.
User Story:
As a Developer (setting up the test pipeline), I want to have a detailed guide and scripts for setting up Angular environment, so that I can get it done fast and without errors.
Details:
Modify existing block "Setup build pipeline" with Angular. This includes updating guide and scripts.
User Story:
As a developer I would like to have automated check that shows which pipelines passed and which failed.
Description
Refactor the pipleline generator (helper for developers)
Use piplelines to check the code that is pushed to the main repo
User journey:
Programmer developing new feature
Submit a PR with all the work
In order to approve the PR, one should check that pipelines are passed (code should compile, pass the test, meet quality standards)
Automate configuring azure devops repository for asking that this checks are done (configuring, adding checks for the pipelines within the PR configuration)
As a user, I want to be able to quickly verify the AWS account (maybe not created by me) I have has the required permissions applied. so that I don't get stuck later on due to lack of certain permissions.
User Story:
As a Developer (setting up the quality pipeline), I want to have a detailed guide and scripts for setting up Angular environment, so that I can get it done fast and without errors.
Details:
Modify existing blocks related to pipelines with Angular related information. This includes updating guide and scripts related to "Setup Quality pipeline"
User Story:
As a Developer (setting up the package pipeline), I want to have a detailed guide and scripts for setting up .NET environment, so that I can get it done fast and without errors.
Details:
Modify existing blocks related to pipelines with .NET related information. This includes updating guide and scripts related to "Setup Package pipeline"
As someone setting up the project infrastructure, I want to have a detailed guide on how to prepare a package/image repo so that I can get this done fast and without errors.
This could be either setting up the repo (hosted) or creating and configuring an account on an existing one. Briefly find out alternatives.
As someone setting up the project infrastructure, I want to have a detailed guide on how to set up a deploy pipeline so that I can get this done fast and without errors.
User Story:
As a Developer (setting up the build pipeline), I want to have a detailed guide and scripts for setting up Node.js environment, so that I can get it done fast and without errors.
Details:
Modify existing blocks related to pipelines with node.js related information. This includes updating guide and scripts related to "Setup Build pipeline". You should follow the general project guidelines.
As someone setting up the project infrastructure, I want to have a detailed guide on how to set up a quality pipeline so that I can get this done fast and without errors.
As someone setting up the project infrastructure, I want to have a detailed guide on how to prepare the repo so that I can get this done fast and without errors.
create repo
push required branches
This task includes preparing an example repo with all steps done, so it can be cloned right away.