Skip to content

Commit

Permalink
Deploy to an on-disk repo instead of to s3 [#424]
Browse files Browse the repository at this point in the history
  • Loading branch information
tobias committed Dec 7, 2015
1 parent ae20ce0 commit 77f793a
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 11 deletions.
23 changes: 13 additions & 10 deletions src/clojars/promote.clj
Original file line number Diff line number Diff line change
Expand Up @@ -118,25 +118,28 @@
(assoc files [(symbol group name) version :extension extension]
(file-for group name version extension)))

(defn- deploy-to-s3 [info]
(defn- deploy-to-repo [repo info]
(let [files (reduce (partial add-coords info) {}
["jar" "jar.asc" "pom" "pom.asc"])
releases-repo {:url (config :releases-url)
:username (config :releases-access-key)
:passphrase (config :releases-secret-key)}]
["jar" "jar.asc" "pom" "pom.asc"])]
(aether/deploy-artifacts :artifacts (keys files)
:files files
:transfer-listener :stdout
:repository {"releases" releases-repo})))
:repository {"releases" repo})))

(defn promote [db {:keys [group name version] :as info}]
(println "checking" group "/" name "for promotion...")
(let [blockers (blockers db info)]
(let [blockers (blockers db info)
releases-repo (config :releases-repo)]
(if (empty? blockers)
(if (config :releases-url)
(do
(if releases-repo
(let [releases-repo-file (doto (io/file releases-repo)
.mkdirs)]
(println "Promoting" info)
(deploy-to-s3 info)
#_(deploy-to-repo {:url (config :releases-url)
:username (config :releases-access-key)
:passphrase (config :releases-secret-key)}
info)
(deploy-to-repo {:url (.toURL releases-repo-file)} info)
(db/promote db group name version))
(println "Didn't promote since :releases-url wasn't set."))
(do (println "...failed.")
Expand Down
1 change: 1 addition & 0 deletions test/clojars/test/test_helper.clj
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
:subprotocol "sqlite"
:subname ":memory:"}
:repo "data/test/repo"
:releases-repo "data/test/releases_repo"
:bcrypt-work-factor 12})

(defn using-test-config [f]
Expand Down
34 changes: 33 additions & 1 deletion test/clojars/test/unit/promote.clj
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
(db/add-user help/*db* "[email protected]" "testuser" "password"
(slurp (io/resource "pubring.gpg")))
(db/add-member help/*db* "robert" "testuser" nil)
;; TODO: fix this - the test files are for 1.1.2, but the pom has 1.2.0,
;; FIXME: the test files are for 1.1.2, but the pom has 1.2.0,
;; and promote/blockers reads the pom to get the version, and expects
;; that version to be in the db
(db/add-jar help/*db* "testuser" {:group "robert" :name "hooke" :version "1.2.0"})
Expand Down Expand Up @@ -113,3 +113,35 @@
"Ensure your public key is in your profile.")]
(blockers help/*db*
{:group "robert" :name "hooke" :version "1.1.2"}))))

(letfn [(setup-source-repo []
(copy-resource "1.1.2")
(io/copy "dummy hooke jar file"
(file-for "robert" "hooke" "1.1.2" "jar"))
(copy-resource "1.1.2" "jar.asc")
(copy-resource "1.1.2" "pom.asc")
(doseq [file-suffix ["jar" "pom"]
sum-suffix ["" ".asc"]
sig-suffix [".md5" ".sha1"]]
(io/copy "dummy sig" (file-for "robert" "hooke" "1.1.2"
(str file-suffix sum-suffix sig-suffix))))
(db/add-user help/*db* "[email protected]" "testuser" "password"
(slurp (io/resource "pubring.gpg")))
(db/add-member help/*db* "robert" "testuser" nil)
(db/add-jar help/*db* "testuser" {:group "robert" :name "hooke" :version "1.1.2"}))]

(deftest promote-should-copy-to-releases-repo
(setup-source-repo)
(promote help/*db* {:group "robert" :name "hooke" :version "1.1.2"})
(doseq [f (for [file-suffix [".jar" ".pom"]
sum-suffix ["" ".asc"]
sig-suffix ["" ".md5" ".sha1"]]
(io/file (config :releases-repo) "robert" "hooke" "1.1.2"
(str "hooke-1.1.2" file-suffix sum-suffix sig-suffix)))]
(is (.exists f))))

(deftest promote-should-write-to-db-on-success
(setup-source-repo)
(is (not (db/promoted? help/*db* "robert" "hooke" "1.1.2")))
(promote help/*db* {:group "robert" :name "hooke" :version "1.1.2"})
(is (db/promoted? help/*db* "robert" "hooke" "1.1.2"))))

0 comments on commit 77f793a

Please sign in to comment.