├── .gitignore ├── .gitattributes ├── generator ├── src │ ├── script │ │ ├── repl.sh │ │ └── run.sh │ └── main │ │ ├── resources │ │ └── templates │ │ │ ├── rebuild_all_libs_job.st │ │ │ ├── matrix_job.st │ │ │ ├── ci_config.st │ │ │ └── release_job.st │ │ └── clojure │ │ └── clojure │ │ └── build │ │ └── ci │ │ └── generator.clj └── pom.xml ├── README.md ├── .github └── workflows │ ├── test.yml │ ├── snapshot.yml │ ├── release.yml │ └── doc-build.yml └── ci_data.clj /.gitignore: -------------------------------------------------------------------------------- 1 | generator/target 2 | jenkins/ 3 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | generator/src/main/resources/templates/* linguist-documentation 2 | -------------------------------------------------------------------------------- /generator/src/script/repl.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd `dirname $0`/../../.. 4 | 5 | exec java -cp ".:generator/src/main/clojure:generator/src/main/resources:generator/target/dependency/*" clojure.main 6 | -------------------------------------------------------------------------------- /generator/src/script/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd `dirname $0`/../../.. 4 | 5 | rm -rf ./jenkins 6 | java -cp ".:generator/src/main/clojure:generator/src/main/resources:generator/target/dependency/*" clojure.main -m clojure.build.ci.generator 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Clojure Continuous Integration Build Tools 2 | ================================================== 3 | 4 | This repository contains scripts and utilities for managing continuous integration builds of Clojure and contributed libraries. 5 | 6 | It also contains backups of configuration files for continuous integration. 7 | 8 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: [workflow_call] 4 | 5 | jobs: 6 | test: 7 | strategy: 8 | matrix: 9 | os: [ubuntu-latest] # macOS-latest, windows-latest] 10 | java-version: ["8", "11", "17", "21", "25"] 11 | clojure-version: ["1.9.0", "1.10.3", "1.11.4", "1.12.3"] 12 | runs-on: ${{ matrix.os }} 13 | steps: 14 | - uses: actions/checkout@v4 15 | - name: Set up Java 16 | uses: actions/setup-java@v4 17 | with: 18 | java-version: ${{ matrix.java-version }} 19 | distribution: 'temurin' 20 | cache: 'maven' 21 | - name: Build with Maven 22 | run: mvn -ntp -B -Dclojure.version=${{ matrix.clojure-version }} clean test 23 | -------------------------------------------------------------------------------- /.github/workflows/snapshot.yml: -------------------------------------------------------------------------------- 1 | name: Snapshot on demand 2 | 3 | on: [workflow_call] 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - name: Check out 10 | uses: actions/checkout@v4 11 | - name: Set Github identity 12 | run: | 13 | git config --global user.name clojure-build 14 | git config --global user.email "clojure-build@users.noreply.github.com" 15 | - name: Set up Java 16 | uses: actions/setup-java@v4 17 | with: 18 | java-version: 8 19 | distribution: 'temurin' 20 | cache: 'maven' 21 | server-id: central-snapshot 22 | server-username: MAVEN_USERNAME 23 | server-password: MAVEN_PASSWORD 24 | - name: Publish to Maven 25 | run: mvn -ntp -B --fail-at-end -Dmaven.test.skip=true clean deploy 26 | env: 27 | MAVEN_USERNAME: ${{ secrets.CENTRAL_USERNAME }} 28 | MAVEN_PASSWORD: ${{ secrets.CENTRAL_PASSWORD }} 29 | -------------------------------------------------------------------------------- /generator/pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | build.ci.generator 5 | 0.0.1-SNAPSHOT 6 | Continuous-integration build generator scripts 7 | 8 | 9 | org.clojure 10 | pom.contrib 11 | 0.0.24 12 | 13 | 14 | 15 | 16 | Stuart Sierra 17 | http://stuartsierra.com/ 18 | mail@stuartsierra.com 19 | -5 20 | 21 | 22 | 23 | 24 | scm:git:git@github.com:clojure/build.ci.git 25 | scm:git:git@github.com:clojure/build.ci.git 26 | git@github.com:clojure/build.ci.git 27 | 28 | 29 | 30 | 31 | org.clojure 32 | data.zip 33 | 0.1.0 34 | 35 | 36 | org.antlr 37 | stringtemplate 38 | 4.0.2 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /generator/src/main/resources/templates/rebuild_all_libs_job.st: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | This is a placeholder job. It can be used to trigger new builds of all contrib libraries. 5 | false 6 | 7 | 8 | 9 | -1 10 | -1 11 | -1 12 | -1 13 | 14 | 15 | 16 | 17 | true 18 | false 19 | false 20 | false 21 | (System) 22 | 23 | 24 | 0 1 * * 0 25 | 26 | 27 | false 28 | 29 | 30 | 31 | $libs;separator=", "$ 32 | 33 | SUCCESS 34 | 0 35 | BLUE 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release on demand 2 | 3 | on: 4 | workflow_call: 5 | inputs: 6 | releaseVersion: 7 | description: "Version to release" 8 | required: true 9 | default: "X.Y.Z" 10 | type: string 11 | snapshotVersion: 12 | description: "Snapshot version after release" 13 | required: true 14 | default: "X.Y.Z-SNAPSHOT" 15 | type: string 16 | centralDeployServer: 17 | description: "Specify maven deployment server." 18 | required: false 19 | default: "oss" 20 | type: string 21 | 22 | jobs: 23 | build: 24 | runs-on: ubuntu-latest 25 | steps: 26 | - name: Check out 27 | uses: actions/checkout@v4 28 | - name: Set Github identity 29 | run: | 30 | git config --global user.name clojure-build 31 | git config --global user.email "clojure-build@users.noreply.github.com" 32 | - name: Set up Java 33 | uses: actions/setup-java@v4 34 | with: 35 | java-version: 8 36 | distribution: 'temurin' 37 | cache: 'maven' 38 | server-id: central 39 | server-username: MAVEN_USERNAME 40 | server-password: MAVEN_PASSWORD 41 | gpg-private-key: ${{ secrets.CENTRAL_GPG_SECRET_KEY }} 42 | gpg-passphrase: GPG_PASSPHRASE 43 | - name: Publish to Maven OSS Server 44 | run: mvn -ntp -B -DreleaseVersion=${{ github.event.inputs.releaseVersion }} -DdevelopmentVersion=${{ github.event.inputs.snapshotVersion }} -DskipStaging=true -Psign -Dmaven.test.skip=true release:prepare release:perform 45 | env: 46 | MAVEN_USERNAME: ${{ secrets.CENTRAL_USERNAME }} 47 | MAVEN_PASSWORD: ${{ secrets.CENTRAL_PASSWORD }} 48 | GPG_PASSPHRASE: ${{ secrets.CENTRAL_GPG_SECRET_KEY_PASSWORD }} 49 | - name: Tag 50 | run: | 51 | git push --tags 52 | git push 53 | -------------------------------------------------------------------------------- /.github/workflows/doc-build.yml: -------------------------------------------------------------------------------- 1 | name: Build Contrib API Docs 2 | 3 | on: 4 | workflow_call: 5 | inputs: 6 | project: 7 | description: "Source Github repo to build docs for" 8 | required: true 9 | default: "clojure/data.fressian" 10 | type: string 11 | 12 | jobs: 13 | 14 | build: 15 | runs-on: ubuntu-latest 16 | steps: 17 | 18 | - name: Set up Java 19 | uses: actions/setup-java@v4 20 | with: 21 | java-version: 8 22 | distribution: 'temurin' 23 | 24 | - name: Set up Clojure 25 | uses: DeLaGuardo/setup-clojure@13.1 26 | with: 27 | cli: 'latest' 28 | 29 | - name: Cache clojure dependencies 30 | uses: actions/cache@v4 31 | with: 32 | path: | 33 | ~/.m2/repository 34 | ~/.gitlibs 35 | key: cljdeps-${{ hashFiles('deps.edn') }} 36 | restore-keys: cljdeps- 37 | 38 | - name: Clone contrib api repo 39 | uses: actions/checkout@v4 40 | with: 41 | repository: clojure/contrib-api-doc 42 | path: contrib-api-doc 43 | fetch-depth: 0 44 | 45 | - name: Clone repo to doc 46 | uses: actions/checkout@v4 47 | with: 48 | repository: ${{ inputs.project }} 49 | path: contrib-api-doc/repo 50 | fetch-depth: 0 51 | 52 | - name: Clone repo to doc gh-pages branch 53 | uses: actions/checkout@v4 54 | with: 55 | repository: ${{ inputs.project }} 56 | path: contrib-repo 57 | ref: 'gh-pages' 58 | fetch-depth: 0 59 | 60 | - name: Call contrib-api-doc build.sh 61 | run: | 62 | bash ./contrib-api-doc/build.sh ${{ inputs.project }} 63 | 64 | - name: Commit and push gh-pages branch 65 | run: | 66 | cd contrib-repo 67 | cp -r ../contrib-api-doc/repo-docs/* . 68 | git config --global user.name clojure-build 69 | git config --global user.email "clojure-build@users.noreply.github.com" 70 | git add -u -v 71 | git commit -m "Autodoc commit" 72 | git push origin gh-pages 73 | -------------------------------------------------------------------------------- /generator/src/main/resources/templates/matrix_job.st: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | false 6 | 7 | 8 | 9 | $owners:{ name |USER:hudson.model.Item.Read:$name$ 10 | USER:hudson.model.Run.Delete:$name$ 11 | USER:hudson.model.Run.Update:$name$ 12 | USER:hudson.model.Item.Workspace:$name$ 13 | USER:hudson.model.Item.Build:$name$}; 14 | separator="\n"$ 15 | 16 | 17 | 18 | -1 19 | 5 20 | -1 21 | -1 22 | 23 | 24 | 25 | 26 | 2 27 | 28 | 29 | origin 30 | +refs/heads/*:refs/remotes/origin/* 31 | git@github.com:clojure/$name$.git 32 | clojure-build 33 | 34 | 35 | 36 | 37 | $branch$ 38 | 39 | 40 | false 41 | 42 | 43 | 44 | 45 | $branch$ 46 | 47 | 48 | 49 | true 50 | false 51 | false 52 | false 53 | 54 | false 55 | 56 | 57 | jdk 58 | 59 | $jdks:{ name | $name$}; separator="\n"$ 60 | 61 | 62 | 63 | CLOJURE_VERSION 64 | 65 | $clojures:{ name | $name$}; separator="\n"$ 66 | 67 | 68 | 69 | 70 | 71 | -Dclojure.version=\$CLOJURE_VERSION clean test 72 | Maven 3.2.5 73 | false 74 | 75 | 76 | true 77 | 78 | 79 | 80 | 81 | 82 | false 83 | 84 | 85 | -------------------------------------------------------------------------------- /generator/src/main/clojure/clojure/build/ci/generator.clj: -------------------------------------------------------------------------------- 1 | (ns clojure.build.ci.generator 2 | (:require [clojure.java.io :as io]) 3 | (:import (org.stringtemplate.v4 ST))) 4 | 5 | (defn input-data-url [] (io/resource "ci_data.clj")) 6 | 7 | (defn input-data [] 8 | (with-open [r (java.io.PushbackReader. (io/reader (input-data-url)))] 9 | (read r))) 10 | 11 | (defn ci-root [] (io/file "jenkins")) 12 | 13 | (defn jobs-root [] (io/file (ci-root) "jobs")) 14 | 15 | (defn job-dir [jname] (io/file (jobs-root) jname)) 16 | 17 | (defn job-config-file [jname] (io/file (job-dir jname) "config.xml")) 18 | 19 | (defn ci-config-file [] (io/file (ci-root) "config.xml")) 20 | 21 | (defn jdks [] (:jdks (input-data))) 22 | 23 | (defn active-jdks [] 24 | (filter :enabled (jdks))) 25 | 26 | (defn jdk-names [] 27 | (map :name (active-jdks))) 28 | 29 | (defn jdk-default-name [] (:jdk-default (input-data))) 30 | 31 | (defn default-jdk [jdk-version] 32 | (if jdk-version 33 | (first (filter #(= jdk-version (:jdk-version %)) (active-jdks))) 34 | (first (filter #(= (jdk-default-name) (:name %)) (active-jdks))))) 35 | 36 | (defn active-clojures [] 37 | (:clojure-versions (input-data))) 38 | 39 | (defn contrib-libs [] 40 | (:contribs (input-data))) 41 | 42 | (defn template [name] 43 | (ST. (slurp (io/resource (str "templates/" name ".st"))) 44 | \$ \$)) 45 | 46 | (defn prepare-template-arg [x] 47 | (cond 48 | (string? x) x 49 | (symbol? x) (name x) 50 | (keyword? x) (name x) 51 | (map? x) (reduce (fn [m [k v]] 52 | (assoc m 53 | (prepare-template-arg k) 54 | (prepare-template-arg v))) 55 | {} x) 56 | (sequential? x) (vec (map prepare-template-arg x)) 57 | :else (str x))) 58 | 59 | (defn render-template [tname args] 60 | (let [t (template tname)] 61 | (doseq [[k v] args] 62 | (.add t (name k) (prepare-template-arg v))) 63 | (.render t))) 64 | 65 | (defn libs-and-matrix-jobs [] 66 | (interleave (map :name (contrib-libs)) 67 | (map #(str (:name %) "-test-matrix") (contrib-libs)))) 68 | 69 | (defn release-job-defaults [{:keys (jdk-version)}] 70 | {:jdk (:name (default-jdk jdk-version)) 71 | :branch "master"}) 72 | 73 | (defn release-job-config [lib] 74 | (render-template "release_job" 75 | (merge (release-job-defaults lib) lib))) 76 | 77 | (defn matrix-job-defaults [] 78 | {:jdks (jdk-names) 79 | :clojures (active-clojures) 80 | :branch "master"}) 81 | 82 | (defn update-min-clojure [lib] 83 | (if-let [version (:min-clojure lib)] 84 | (update-in lib [:clojures] 85 | (fn [versions] (drop-while #(not= version %) versions))) 86 | lib)) 87 | 88 | (defn update-exclude-jdk [lib] 89 | (if-let [exclusions (:exclude-jdk lib)] 90 | (update-in lib [:jdks] 91 | (fn [versions] (remove (set exclusions) versions))) 92 | lib)) 93 | 94 | (defn matrix-job-config [lib] 95 | (render-template "matrix_job" 96 | (-> (matrix-job-defaults) 97 | (merge lib) 98 | (update-min-clojure) 99 | (update-exclude-jdk)))) 100 | 101 | (defn write-release-job [lib] 102 | (println "Writing release job" (job-dir (:name lib))) 103 | (.mkdirs (job-dir (:name lib))) 104 | (spit (job-config-file (:name lib)) 105 | (release-job-config lib))) 106 | 107 | (defn write-matrix-job [lib] 108 | (println "Writing matrix job" (job-dir (:name lib))) 109 | (let [jobname (str (:name lib) "-test-matrix")] 110 | (.mkdirs (job-dir jobname)) 111 | (spit (job-config-file jobname) 112 | (matrix-job-config lib)))) 113 | 114 | (defn rebuild-libs-config [] 115 | (render-template "rebuild_all_libs_job" 116 | {:libs (map :name (contrib-libs))})) 117 | 118 | (defn write-rebuild-libs-job [] 119 | (println "Writing release-all-libraries job" (job-config-file "rebuild-all-libraries")) 120 | (let [jobfile (job-config-file "rebuild-all-libraries")] 121 | (io/make-parents jobfile) 122 | (spit jobfile (rebuild-libs-config)))) 123 | 124 | (defn write-job-files [] 125 | (doseq [lib (contrib-libs)] 126 | (write-release-job lib) 127 | (write-matrix-job lib))) 128 | 129 | (defn ci-config [] 130 | (render-template "ci_config" 131 | {:libs (libs-and-matrix-jobs) 132 | :jdks (jdks)})) 133 | 134 | (defn write-ci-config [] 135 | (println "Write config file" (ci-config-file)) 136 | (io/make-parents (ci-config-file)) 137 | (spit (ci-config-file) (ci-config))) 138 | 139 | (defn -main [] 140 | (write-job-files) 141 | (write-rebuild-libs-job) 142 | (write-ci-config)) 143 | 144 | ;; Local Variables: 145 | ;; eval: (setq inferior-lisp-program (concat default-directory "../../../../../script/repl.sh")) 146 | ;; End: 147 | -------------------------------------------------------------------------------- /generator/src/main/resources/templates/ci_config.st: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | jenkins.security.RekeySecretAdminMonitor 5 | jenkins.security.s2m.MasterKillSwitchWarning 6 | jenkins.security.QueueItemAuthenticatorMonitor 7 | hudson.diagnosis.ReverseProxySetupMonitor 8 | 9 | 2.195 10 | 2 11 | NORMAL 12 | true 13 | 14 | USER:hudson.model.Hudson.Administer:chrisredinger 15 | USER:hudson.model.Hudson.Administer:richhickey 16 | USER:hudson.model.Hudson.Administer:stuart.halloway 17 | USER:hudson.model.Hudson.Administer:stuartsierra 18 | USER:hudson.model.Hudson.Administer:alexmiller 19 | USER:hudson.model.Hudson.Administer:fogus 20 | USER:hudson.model.Hudson.Read:anonymous 21 | USER:hudson.model.Item.Read:anonymous 22 | 23 | 24 | true 25 | false 26 | 27 | false 28 | 29 | \${ITEM_ROOTDIR}/workspace 30 | \${ITEM_ROOTDIR}/builds 31 | Clojure build server, deploying to https://oss.sonatype.org/. 32 | 33 | $jdks:{ jdk | 34 | $jdk.name$ 35 | $jdk.home$ 36 | 37 | }; separator="\n"$ 38 | 39 | 40 | 41 | 42 | 5 43 | 0 44 | 45 | 46 | 47 | All 48 | false 49 | false 50 | 51 | 52 | 53 | Clojure 54 | false 55 | false 56 | 57 | 58 | 59 | clojure 60 | clojure-test-matrix 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | false 73 | 74 | 75 | 76 | Contrib 77 | false 78 | false 79 | 80 | 81 | 82 | $libs:{ name | $name$}; separator="\n"$ 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | false 95 | 96 | 97 | 98 | Support 99 | false 100 | false 101 | 102 | 103 | 104 | build.ci 105 | build.poms 106 | rebuild-all-libraries 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | false 119 | 120 | 121 | All 122 | 0 123 | 124 | JNLP-connect 125 | JNLP2-connect 126 | 127 | 128 | 129 | false 130 | 131 | 132 | 133 | 134 | -------------------------------------------------------------------------------- /generator/src/main/resources/templates/release_job.st: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | false 6 | 7 | 8 | 9 | $owners:{ name |USER:hudson.model.Item.Read:$name$ 10 | USER:hudson.model.Run.Delete:$name$ 11 | USER:hudson.model.Run.Update:$name$ 12 | USER:hudson.model.Item.Workspace:$name$ 13 | USER:hudson.model.Item.Build:$name$ 14 | USER:hudson.model.Item.Release:$name$}; 15 | separator="\n"$ 16 | 17 | 18 | 19 | -1 20 | 50 21 | -1 22 | -1 23 | 24 | 25 | 26 | 27 | 2 28 | 29 | 30 | origin 31 | +refs/heads/*:refs/remotes/origin/* 32 | git@github.com:clojure/$name$.git 33 | clojure-build 34 | 35 | 36 | 37 | 38 | $branch$ 39 | 40 | 41 | false 42 | 43 | 44 | 45 | 46 | 47 | $branch$ 48 | 49 | 50 | 51 | origin 52 | $branch$ 53 | default 54 | FF 55 | 56 | 57 | 58 | 59 | true 60 | false 61 | false 62 | false 63 | $jdk$ 64 | 65 | 66 | @hourly 67 | false 68 | 69 | 70 | false 71 | 72 | org.clojure 73 | $name$ 74 | 75 | --fail-at-end clean deploy 76 | Maven 3.2.5 77 | true 78 | false 79 | false 80 | false 81 | false 82 | false 83 | false 84 | false 85 | false 86 | 0 87 | false 88 | false 89 | true 90 | 91 | 92 | 93 | 94 | 95 | $name$-test-matrix 96 | 97 | SUCCESS 98 | 0 99 | BLUE 100 | true 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | IS_M2RELEASEBUILD 109 | -DskipStaging=true -Psign release:prepare release:perform 110 | -Dresume=false -DdryRun=true release:prepare 111 | false 112 | false 113 | false 114 | 0 115 | 116 | 117 | 118 | 119 | 120 | git push origin $branch$ `git tag | grep -v ^jenkins` 121 | 122 | 123 | 124 | SUCCESS 125 | 0 126 | BLUE 127 | true 128 | 129 | 130 | -------------------------------------------------------------------------------- /ci_data.clj: -------------------------------------------------------------------------------- 1 | ;;; ci_data.clj 2 | 3 | ;; This is the configuration file for clojure.build.ci.generator. 4 | 5 | { 6 | ;; The versions of Clojure against which we will test 7 | ;; contrib libraries 8 | :clojure-versions 9 | ["1.8.0" "1.9.0" "1.10.3" "1.11.1" "1.12.0-alpha1"] 10 | ;; old versions: "1.2.0" "1.2.1" "1.3.0" "1.4.0" "1.5.1" "1.6.0" "1.7.0" 11 | 12 | ;; Installed Java versions. If :enabled is true we will test contrib 13 | ;; libraries with that Java version. 14 | :jdks 15 | [{:name "Oracle JDK 1.7" :jdk-version "1.7" :enabled false :home "/usr/java/jdk1.7.0-b147"} 16 | {:name "IBM JDK 1.7" :jdk-version "1.7" :enabled false :home "/usr/java/ibm-java-x86_64-sdk-7.0-0.0"} 17 | {:name "Oracle JDK 1.8" :jdk-version "1.8" :enabled true :home "/usr/java/jdk1.8.0_111"} 18 | {:name "Adoptium 8" :jdk-version "1.8" :enabled true :home "/opt/java/sdk/adoptium/jdk8u312-b07"} 19 | {:name "Oracle JDK 9" :jdk-version "9" :enabled false :home "/opt/java/sdk/oracle/jdk-9.0.4"} 20 | {:name "OpenJDK 9" :jdk-version "9" :enabled false :home "/opt/java/sdk/openjdk/jdk-9.0.4"} 21 | {:name "Eclipse J9 JDK 9" :jdk-version "9" :enabled false :home "/usr/lib/jvm/jdk-9+181"} 22 | {:name "Oracle JDK 10" :jdk-version "10" :enabled false :home "/opt/java/sdk/oracle/jdk-10.0.1"} 23 | {:name "OpenJDK 10" :jdk-version "10" :enabled false :home "/opt/java/sdk/openjdk/jdk-10.0.1"} 24 | {:name "Oracle 11 EA" :jdk-version "11-ea" :enabled false :home "/opt/java/sdk/oracle/jdk-11"} 25 | {:name "OpenJDK 11 EA" :jdk-version "11-ea" :enabled false :home "/opt/java/sdk/openjdk/jdk-11"} 26 | {:name "Adoptium 11" :jdk-version "11" :enabled true :home "/opt/java/sdk/adoptium/jdk-11.0.13+8"} 27 | {:name "Adoptium 17" :jdk-version "17" :enabled true :home "/opt/java/sdk/adoptium/jdk-17.0.1+12"} 28 | {:name "Oracle JDK 17" :jdk-version "17" :enabled true :home "/opt/java/sdk/oracle/jdk-17.0.1"}] 29 | 30 | ;; JDK runtime version used when building 31 | ;; (the build.poms parent pom sets source/target version for compilation) 32 | :jdk-default "Adoptium 11" 33 | 34 | ;; The contrib libraries. :owners are Hudson usernames of people with 35 | ;; permission to build and release each library. 36 | :contribs 37 | [{:name "algo.monads" :owners ["konradhinsen"]} 38 | {:name "algo.generic" :owners ["konradhinsen"]} 39 | {:name "core.async" :owners ["alexmiller","stuart.halloway"] :min-clojure "1.10.3"} 40 | {:name "core.logic" :owners ["davidnolen"]} 41 | {:name "core.match" :owners ["davidnolen"]} 42 | {:name "core.unify" :owners ["fogus"]} 43 | {:name "core.memoize" :owners ["seancorfield"]} 44 | {:name "core.cache" :owners ["seancorfield"]} 45 | {:name "core.contracts" :owners ["fogus"]} 46 | {:name "core.rrb-vector" :owners ["michalmarczyk" "afingerhut"]} 47 | {:name "core.specs.alpha" :owners ["alexmiller"] :min-clojure "1.9.0"} 48 | {:name "core.typed" :owners ["ambrosebs"] :min-clojure "1.9.0"} 49 | ;{:name "core.typed.runtime.jvm" :owners ["ambrosebs"] :min-clojure "1.9.0"} 50 | ;{:name "core.typed.analyzer.jvm" :owners ["ambrosebs"] :min-clojure "1.9.0"} 51 | ;{:name "core.typed.checker.jvm" :owners ["ambrosebs"] :min-clojure "1.9.0"} 52 | ;{:name "core.typed.annotator.jvm" :owners ["ambrosebs"] :min-clojure "1.9.0"} 53 | {:name "data.avl" :owners ["michalmarczyk"]} 54 | {:name "data.codec" :owners ["ataggart"] :min-clojure "1.8.0"} 55 | {:name "data.csv" :owners ["jonasenlund"]} 56 | {:name "data.finger-tree" :owners ["Chouser"]} 57 | {:name "data.fressian" :owners ["stuart.halloway"] :min-clojure "1.8.0"} 58 | {:name "data.generators" :owners ["stuart.halloway"]} 59 | {:name "data.int-map" :owners ["ztellman"]} 60 | {:name "data.json" :owners ["stuartsierra"] :min-clojure "1.9.0"} 61 | {:name "data.priority-map" :owners ["markengelberg" "seancorfield"]} 62 | {:name "data.xml" :owners ["ryansenior" "hhochleitner"] :min-clojure "1.8.0"} 63 | {:name "data.zip" :owners []} 64 | {:name "java.classpath" :owners ["stuartsierra"]} 65 | {:name "java.data" :owners ["cosminstejerean" "seancorfield"]} 66 | {:name "java.jdbc" :owners ["seancorfield"] :min-clojure "1.8.0"} 67 | {:name "java.jmx" :owners ["nickbailey"]} 68 | {:name "jvm.tools.analyzer" :owners ["ambrosebs"]} 69 | {:name "math.combinatorics" :owners ["markengelberg" "seancorfield"] :min-clojure "1.8.0"} 70 | {:name "math.numeric-tower" :owners ["markengelberg" "seancorfield"]} 71 | {:name "spec.alpha" :owners ["alexmiller"] :min-clojure "1.10.3"} 72 | {:name "spec-alpha2" :owners ["alexmiller"] :min-clojure "1.10.3"} 73 | {:name "test.check" :owners ["gfredericks"] :min-clojure "1.8.0"} 74 | {:name "test.generative" :owners ["stuart.halloway"] :min-clojure "1.8.0"} 75 | {:name "tools.analyzer" :owners ["nicolamometto"]} 76 | {:name "tools.analyzer.jvm" :owners ["nicolamometto"]} 77 | {:name "tools.build" :owners ["puredanger"] :min-clojure "1.11.1"} 78 | {:name "tools.emitter.jvm" :owners ["nicolamometto"]} 79 | {:name "tools.cli" :owners ["garethjones" "sungpae" "seancorfield"] :min-clojure "1.8.0"} 80 | ;; {:name "tools.deps.alpha" :owners ["puredanger"] :min-clojure "1.10.3"} ;; archived 81 | {:name "tools.deps" :owners ["puredanger"] :min-clojure "1.10.3"} 82 | {:name "tools.deps.cli" :owners ["puredanger"] :min-clojure "1.11.1" :branch "main"} 83 | {:name "tools.deps.graph" :owners ["puredanger"] :min-clojure "1.9.0"} 84 | {:name "tools.gitlibs" :owners ["puredanger"] :min-clojure "1.9.0"} 85 | {:name "tools.logging" :owners ["ataggart"]} 86 | {:name "tools.macro" :owners ["konradhinsen"]} 87 | {:name "tools.namespace" :owners ["stuartsierra"] :min-clojure "1.8.0"} 88 | {:name "tools.reader" :owners ["nicolamometto"]} 89 | {:name "tools.trace" :owners ["lucprefontaine"]}]} 90 | --------------------------------------------------------------------------------