diff --git a/.github/workflows/clojure-build.yml b/.github/workflows/clojure-build.yml new file mode 100644 index 0000000..fa8a862 --- /dev/null +++ b/.github/workflows/clojure-build.yml @@ -0,0 +1,63 @@ +name: Clojure CI for cross-platform native images. + +on: [push] + +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, jar + + + - name: Archive binary + uses: actions/upload-artifact@v4 + with: + name: where-jars + path: target/where*.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"]