This commit is contained in:
Michael Jerger 2024-08-05 09:16:55 +02:00
parent 96b3a6a7c6
commit b53dd26afd

View file

@ -1 +1,77 @@
# # build
[![Clojars Project](https://img.shields.io/clojars/v/org.domaindrivenarchitecture/build.svg)](https://clojars.org/org.domaindrivenarchitecture/build) [![pipeline status](https://gitlab.com/domaindrivenarchitecture/build/badges/master/pipeline.svg)](https://gitlab.com/domaindrivenarchitecture/build/-/commits/main)
[<img src="https://domaindrivenarchitecture.org/img/delta-chat.svg" width=20 alt="DeltaChat"> chat over e-mail](mailto:buero@meissa-gmbh.de?subject=community-chat) | [<img src="https://meissa-gmbh.de/img/community/Mastodon_Logotype.svg" width=20 alt="team@social.meissa-gmbh.de"> team@social.meissa-gmbh.de](https://social.meissa-gmbh.de/@team) | [Website & Blog](https://domaindrivenarchitecture.org)
## Rationale
build integrates all the tools we use to work with development & clouds. We know many build tools like ant, gradle, mvn, make, leiningen or pybuilder.
But we have chosen to create & use one more due to this reasons:
* Our builds tend to get more and more complex. So we decided that implementing build is worth to use real clojure.
* We like simple setup & fast startup. For this reason we've chosen babashka
* We believe in good input validation & good messages. For this reason we use the coole clojure-spec.
* As DevOps we are using many tools, all of them should be supported:
* gitops & direnv: State of environments and systems is represented by a git repo. State is applied automatically.
* terragrunt + opentofu: for setting up the plain infrastructure around.
* docker + podman: for creating images
* c4k-* or helm: for generating kubernetes manifests
* provs: for setting up small single-node k3s clusters
* gopass: for credential management on devops computers
* cloud providers: hetzner, digitalocean or aws
## Status
Unstable
## Try out
```
{:deps {org.clojure/spec.alpha {:mvn/version "0.4.233"}
orchestra/orchestra {:mvn/version "2021.01.01-1"}
org.domaindrivenarchitecture/build {:mvn/version "0.1.1-SNAPSHOT"}}
:tasks
{plan
{:requires ([dda.build.terragrunt :as tg])
:task (tg/plan! {:name "test"
:module (first *command-line-args*)
:project-root-path "../../.."
:build-dir-name "target"
:version "4.11.8-dev"
:debug true})}
apply
{:requires ([dda.build.terragrunt :as tg])
:task (tg/apply! {:name "test"
:module (first *command-line-args*)
:project-root-path "../../.."
:build-dir-name "target"
:version "4.11.8-dev"
:debug true})}
destroy
{:requires ([dda.build.terragrunt :as tg])
:task (tg/destroy! {:name "test"
:module (first *command-line-args*)
:project-root-path "../../.."
:build-dir-name "target"
:version "4.11.8-dev"
:debug true})}}}
```
## Development & mirrors
Development happens at: https://repo.prod.meissa.de/meissa/build
Mirrors are:
* https://codeberg.org/meissa/build (Issues and PR)
* https://gitlab.com/domaindrivenarchitecture/build (CI)
* https://github.com/DomainDrivenArchitecture/build
For more details about our repository model see: https://repo.prod.meissa.de/meissa/federate-your-repos
## License
Copyright © 2024 meissa GmbH
Licensed under the [Apache License, Version 2.0](LICENSE) (the "License")
Pls. find licenses of our subcomponents [here](doc/SUBCOMPONENT_LICENSE)