├── .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 |
--------------------------------------------------------------------------------