From 548ee500b34d488f006814bd977fcd77a4ee1466 Mon Sep 17 00:00:00 2001 From: Bruno Bonacci Date: Mon, 9 Feb 2026 19:59:58 +0000 Subject: [PATCH 1/3] [ci] adding github actions workflow --- .github/workflows/clojure-build.yml | 67 +++++++++++++++++++++++++++++ project.clj | 40 ++++++++++------- 2 files changed, 92 insertions(+), 15 deletions(-) create mode 100644 .github/workflows/clojure-build.yml diff --git a/.github/workflows/clojure-build.yml b/.github/workflows/clojure-build.yml new file mode 100644 index 0000000..75218e9 --- /dev/null +++ b/.github/workflows/clojure-build.yml @@ -0,0 +1,67 @@ +name: Clojure CI for cross-platform native images. + +on: [push] + +# +# Search and replace 'hello-world' with the correct app name +# + +jobs: + build: + + runs-on: ${{matrix.os}} + strategy: + matrix: + include: + - os: macos-latest + name: macos + arch: aarch64 + + + permissions: + contents: read + + steps: + - uses: actions/checkout@v4 + + - name: Set up GraalVM + uses: graalvm/setup-graalvm@v1.4.5 + with: + java-version: '25' + distribution: 'graalvm-community' + native-image-job-reports: 'true' + github-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Install clojure tools + uses: DeLaGuardo/setup-clojure@13.5 + with: + # Install just one or all simultaneously + # The value must indicate a particular version of the tool, or use 'latest' + # to always provision the latest version + cli: latest # Clojure CLI based on tools.deps + lein: latest # Leiningen + bb: latest # Babashka + cljfmt: latest # cljfmt + + + - name: Install dependencies + run: lein deps + + + - name: Build all + run: lein compile :all + + + - name: Run tests + run: lein test + + + - name: Build jar and/or uberjar + run: lein do clean, uberajr + + + - name: Archive binary + uses: actions/upload-artifact@v4 + with: + name: hello-world-jars + path: target/hello-world*.jar diff --git a/project.clj b/project.clj index 15b6126..788e2f4 100644 --- a/project.clj +++ b/project.clj @@ -7,28 +7,38 @@ :dependencies [] - :aliases {"build-all-clj" ["with-profile" "+clj17:+clj18:+clj19:+clj110" "do" "clean," "midje," "jar"] - "build-all-cljs" ["with-profile" "+cljs17:+cljs18:+cljs19:+cljs110" "do" "clean," "cljsbuild" "once"] + :aliases {"test" "midje" + "build-all-clj" ["with-profile" "+clj7:+clj8:+clj9:+clj10:+clj11:+clj12" + "do" "clean," "test," "jar"] + "build-all-cljs" ["with-profile" "+cljs7:+cljs8:+cljs9:+cljs10:+cljs11:+cljs12" + "do" "clean," "cljsbuild" "once"] "build-all" ["do" "build-all-clj," "build-all-cljs"]} :profiles {:dev {:resource-paths ["test-data"] - :dependencies [[midje "1.9.4"] + :dependencies [[midje "1.10.10"] [org.clojure/test.check "0.9.0"]] - :plugins [[lein-midje "3.2"] - [lein-cljsbuild "1.1.4"]]} - :repl {:dependencies [[org.clojure/clojure "1.8.0"]]} - :clj17 {:dependencies [[org.clojure/clojure "1.7.0"]]} - :clj18 {:dependencies [[org.clojure/clojure "1.8.0"]]} - :clj19 {:dependencies [[org.clojure/clojure "1.9.0"]]} - :clj110 {:dependencies [[org.clojure/clojure "1.10.1"]]} - :cljs17 {:dependencies [[org.clojure/clojure "1.7.0"] + :plugins [[lein-midje "3.2.1"] + [lein-cljsbuild "1.1.8"]]} + :repl {:dependencies [[org.clojure/clojure "1.12.4"]]} + :clj7 {:dependencies [[org.clojure/clojure "1.7.0"]]} + :clj8 {:dependencies [[org.clojure/clojure "1.8.0"]]} + :clj9 {:dependencies [[org.clojure/clojure "1.9.0"]]} + :clj10 {:dependencies [[org.clojure/clojure "1.10.3"]]} + :clj11 {:dependencies [[org.clojure/clojure "1.11.4"]]} + :clj12 {:dependencies [[org.clojure/clojure "1.12.4"]]} + + :cljs7 {:dependencies [[org.clojure/clojure "1.7.0"] [org.clojure/clojurescript "1.7.228"]]} - :cljs18 {:dependencies [[org.clojure/clojure "1.8.0"] + :cljs8 {:dependencies [[org.clojure/clojure "1.8.0"] [org.clojure/clojurescript "1.8.51"]]} - :cljs19 {:dependencies [[org.clojure/clojure "1.9.0"] + :cljs9 {:dependencies [[org.clojure/clojure "1.9.0"] [org.clojure/clojurescript "1.9.946"]]} - :cljs110 {:dependencies [[org.clojure/clojure "1.10.1"] - [org.clojure/clojurescript "1.10.520"]]}} + :cljs10 {:dependencies [[org.clojure/clojure "1.10.3"] + [org.clojure/clojurescript "1.10.914"]]} + :cljs11 {:dependencies [[org.clojure/clojure "1.11.4"] + [org.clojure/clojurescript "1.11.132"]]} + :cljs12 {:dependencies [[org.clojure/clojure "1.12.4"] + [org.clojure/clojurescript "1.12.134"]]}} :cljsbuild {:builds [{:source-paths ["src"] From dd315eacb5e148fe31013011bb58620b150c55fe Mon Sep 17 00:00:00 2001 From: Bruno Bonacci Date: Mon, 9 Feb 2026 20:04:24 +0000 Subject: [PATCH 2/3] [ci] fix name --- .github/workflows/clojure-build.yml | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/.github/workflows/clojure-build.yml b/.github/workflows/clojure-build.yml index 75218e9..0af57e7 100644 --- a/.github/workflows/clojure-build.yml +++ b/.github/workflows/clojure-build.yml @@ -2,10 +2,6 @@ name: Clojure CI for cross-platform native images. on: [push] -# -# Search and replace 'hello-world' with the correct app name -# - jobs: build: @@ -53,15 +49,15 @@ jobs: - name: Run tests - run: lein test + run: lein build-all - name: Build jar and/or uberjar - run: lein do clean, uberajr + run: lein do clean, jar - name: Archive binary uses: actions/upload-artifact@v4 with: - name: hello-world-jars - path: target/hello-world*.jar + name: where-jars + path: target/where*.jar From 051c18c373220a393e0005666347a2cd7c8b8fc1 Mon Sep 17 00:00:00 2001 From: Bruno Bonacci Date: Mon, 9 Feb 2026 20:08:18 +0000 Subject: [PATCH 3/3] just build latest version --- .github/workflows/clojure-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/clojure-build.yml b/.github/workflows/clojure-build.yml index 0af57e7..fa8a862 100644 --- a/.github/workflows/clojure-build.yml +++ b/.github/workflows/clojure-build.yml @@ -49,7 +49,7 @@ jobs: - name: Run tests - run: lein build-all + run: lein test - name: Build jar and/or uberjar