Package: ddadevops
dda-devops-build|team@social.meissa-gmbh.de|Website & Blogdda-devops-build integrates all the tools we use to work with clouds & provide some nice functions around.Tools we support areterraform: for setting up the plain infrastructure around.docker: for creating imagesc4k: for generating kubernetes manifestsprovs: for setting up small single-node k3s clustersgopass: for credential management on devops computerscloud providers: hetzner, digitalocean, awsIn addition we provide a ReleaseMixin for release related tasks like tag / publish & version-bumpclassDiagram
    class DevopsBuild {
        name()
        build_path()
        initialize_build_dir()
    }

    class DevopsTerraformBuild {
        initialize_build_dir()
        post_build()
        read_output_json()
        plan()
        plan_fail_on_diff()
        apply(auto_approve=False)
        refresh()
        destroy(auto_approve=False)
        tf_import(tf_import_name,tf_import_resource)
    }

    class DevopsImageBuild {
        initialize_build_dir()
        image()
        drun()
        dockerhub_login()
        dockerhub_publish()
        test()
    }

    class ReleaseMixin {
        prepare_release()
        tag_and_push_release()
    }
    
    class ProvsK3sBuild {
        def update_runtime_config(dns_record)
        write_provs_config()
        provs_apply(dry_run=False)
    }

    class C4kBuild {
        def update_runtime_config(dns_record)
        def write_c4k_config()
        def write_c4k_auth()
        c4k_apply(dry_run=False)
    }

    DevopsBuild <|-- DevopsImageBuild
    DevopsBuild <|-- DevopsTerraformBuild
    DevopsBuild <|-- ReleaseMixin
    DevopsBuild <|-- ProvsK3sBuild
    DevopsBuild <|-- C4kBuild

    link DevopsBuild "dda-devops-build/src/doc/DevopsBuild.md"
    link DevopsImageBuild "dda-devops-build/src/doc/DevopsImageBuild.md"
    link DevopsTerraformBuild "dda-devops-build/src/doc/DevopsTerraformBuild.md"
    link ReleaseMixin "dda-devops-build/src/doc/ReleaseMixin.md"
    link ProvsK3sBuild "dda-devops-build/src/doc/ProvsK3sBuild.md"
    link C4kBuild "dda-devops-build/src/doc/C4kBuild.md"Principles we follow are:Seperate build artefacts from version controlled codeDomain Driven Design - in order to stay sustainableExample ProjectAn example project which is using dda-devops-build can be found at:https://repo.prod.meissa.de/meissa/buildtestInstallationEnsure that yout python3 version is at least Python 3.10sudo apt install python3-pip
pip3 install -r requirements.txt
export PATH=$PATH:~/.local/binExample ProjectAn example project which is using dda-devops-build can be found at:https://repo.prod.meissa.de/meissa/buildtestExample Buildlets assume the following project structuremy-project
   | -> my-module
   |       | -> build.py
   |       | -> some-terraform.tf
   | -> an-other-module
   | -> target  (here will the build happen)
   |       | -> ...frompybuilder.coreimporttask,initfromddadevopsimport*name='my-project'MODULE='my-module'PROJECT_ROOT_PATH='..'@initdefinitialize(project):project.build_depends_on("ddadevops>=4.0.0-dev")config={"credentials_mapping":[{"gopass_path":environ.get("DIGITALOCEAN_TOKEN_KEY_PATH",None),"name":"do_api_key",},{"gopass_path":environ.get("HETZNER_API_KEY_PATH",None),"name":"hetzner_api_key",},],"name":name,"module":MODULE,"stage":environ["STAGE"],"project_root_path":PROJECT_ROOT_PATH,"build_types":["TERRAFORM"],"mixin_types":[],"tf_provider_types":["DIGITALOCEAN","HETZNER"],"tf_use_workspace":False,"tf_terraform_semantic_version":"1.4.2","do_as_backend":True,"do_bucket":"your-bucket",}build=DevopsTerraformBuild(project,config)build.initialize_build_dir()@taskdefplan(project):build=get_devops_build(project)build.plan()@taskdefapply(project):build=get_devops_build(project)build.apply(True)@taskdefdestroy(project):build=get_devops_build(project)build.destroy(True)Snapshot & Releasepyb dev publish upload
pip3 install --upgrade ddadevops --pre

pyb [patch|minor|major]
pip3 install --upgrade ddadevopsReferenceDevopsBuildDevopsImageBuildDevopsTerraformBuildAwsProviderDigitaloceanProviderHetznerProviderReleaseMixinProvsK3sBuildC4kBuildDevelopment & mirrorsDevelopment happens at:https://repo.prod.meissa.de/meissa/dda-devops-buildMirrors are:https://gitlab.com/domaindrivenarchitecture/dda-devops-build(issues and PR, CI)https://github.com/DomainDrivenArchitecture/dda-devops-buildFor more details about our repository model see:https://repo.prod.meissa.de/meissa/federate-your-reposLicenseCopyright © 2021 meissa GmbH
Licensed under theApache License, Version 2.0(the "License")