diff --git a/bb.edn b/bb.edn index 375355a..7d92596 100644 --- a/bb.edn +++ b/bb.edn @@ -7,4 +7,9 @@ :task (exec 'cognitect.test-runner.api/test) :exec-args {:dirs ["src/test/clj"]} :org.babashka/cli {:coerce {:nses [:symbol] - :vars [:symbol]}}}}} + :vars [:symbol]}}} + publish + {:extra-deps {dda/dda-bb-build {:local/root "src/tools/clj"} + io.github.clojure/tools.build {:git/tag "v0.9.6" :git/sha "8e78bcc"} + slipset/deps-deploy {:mvn/version "0.2.0"} + :task (clojure "-T:build deploy")}}}} diff --git a/src/main/clj/dda/devops_build/terragrunt.clj b/src/main/clj/dda/devops_build/terragrunt.clj new file mode 100644 index 0000000..48e2de3 --- /dev/null +++ b/src/main/clj/dda/devops_build/terragrunt.clj @@ -0,0 +1,17 @@ +(ns dda.devops-build.image + (:require [orchestra.core :refer [defn-spec]] + [babashka.tasks :as t] + [dda.devops-build.devops :as d] + [dda.devops-build.devops.domain :as dd] + [dda.devops-build.terragrunt.domain :as dterra])) + +(def default + (merge d/default {})) + +(defn-spec plan nil? + [devops ::d/devops] + (let [final (merge default devops)] + (apply t/shell (dd/clean-build-dir-command final)) + (apply t/shell (dd/create-build-dir-command final)) + (apply t/shell (dterra/copy-terragrunt-command final)) + (apply t/shell (dterra/plan-command final)))) diff --git a/src/tools/clj/build.clj b/src/tools/clj/build.clj new file mode 100644 index 0000000..3784daf --- /dev/null +++ b/src/tools/clj/build.clj @@ -0,0 +1,64 @@ +(ns build + (:require [clojure.tools.build.api :as b] + [clojure.edn :as edn])) + +(def project (-> (edn/read-string (slurp "deps.edn")) + :aliases :neil :project)) +(def lib (or (:name project) 'my/lib1)) + +;; use neil project set version 1.2.0 to update the version in deps.edn + +(def version (or (:version project) + "1.2.0")) +(def class-dir "target/classes") +(def basis (b/create-basis {:project "deps.edn"})) +(def uber-file (format "target/%s-%s-standalone.jar" (name lib) version)) +(def jar-file (format "target/%s-%s.jar" (name lib) version)) + +(defn clean [_] + (b/delete {:path "target"})) + +(defn jar [_] + (b/write-pom {:class-dir class-dir + :lib lib + :version version + :basis basis + :src-dirs ["src"] + :pom-data + [[:licenses + [:license + [:name "MIT License"] + [:url "https://opensource.org/license/mit/"]]]]}) + (b/copy-dir {:src-dirs ["src" "resources"] + :target-dir class-dir}) + (b/jar {:class-dir class-dir + :jar-file jar-file})) + +(defn install [_] + (jar {}) + (b/install {:basis basis + :lib lib + :version version + :jar-file jar-file + :class-dir class-dir})) + +(defn uber [_] + (clean nil) + (b/copy-dir {:src-dirs ["src" "resources"] + :target-dir class-dir}) + (b/compile-clj {:basis basis + :src-dirs ["src"] + :class-dir class-dir}) + (b/uber {:class-dir class-dir + :uber-file uber-file + :basis basis})) + +(defn deploy [opts] + (clean opts) + (jar opts) + ((requiring-resolve 'deps-deploy.deps-deploy/deploy) + (merge {:installer :remote + :artifact jar-file + :pom-file (b/pom-path {:lib lib :class-dir class-dir})} + opts)) + opts) \ No newline at end of file diff --git a/src/tools/clj/deps.edn b/src/tools/clj/deps.edn new file mode 100644 index 0000000..024a763 --- /dev/null +++ b/src/tools/clj/deps.edn @@ -0,0 +1 @@ +{:deps {}} \ No newline at end of file diff --git a/test-runner.clj b/src/tools/clj/test-runner.clj similarity index 100% rename from test-runner.clj rename to src/tools/clj/test-runner.clj