init commit
This commit is contained in:
commit
798831fe31
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
.cpcache
|
||||||
|
.clj-kondo
|
||||||
|
.lsp
|
4
README.md
Normal file
4
README.md
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
## Deploy Me
|
||||||
|
|
||||||
|
A simple http server that pulls git changes and restarts your service
|
||||||
|
|
67
src/run.clj
Executable file
67
src/run.clj
Executable file
@ -0,0 +1,67 @@
|
|||||||
|
#!/usr/bin/env bb
|
||||||
|
(ns run
|
||||||
|
(:require [org.httpkit.server :as s]
|
||||||
|
[cheshire.core :as json]
|
||||||
|
[clojure.java.io :as io]
|
||||||
|
[clojure.java.shell :as shell]))
|
||||||
|
|
||||||
|
(def default-port 47331)
|
||||||
|
|
||||||
|
(defn deploy-me [{:keys [project]}]
|
||||||
|
(and
|
||||||
|
(= 0 (:exit (shell/sh "/usr/bin/git" "pull" :dir (str "/root/repos/" project))))
|
||||||
|
(= 0 (:exit (shell/sh "/usr/bin/systemctl" "restart" project)))))
|
||||||
|
|
||||||
|
(defn app [req]
|
||||||
|
(try
|
||||||
|
(condp = (:request-method req)
|
||||||
|
:post (let [body (-> req
|
||||||
|
:body
|
||||||
|
io/reader
|
||||||
|
slurp
|
||||||
|
(json/parse-string true))]
|
||||||
|
|
||||||
|
{:status 200
|
||||||
|
:headers {"Content-Type" "application/edn"}
|
||||||
|
:body {:success (str (deploy-me body))}})
|
||||||
|
:get {:status 200 :body "OK"}
|
||||||
|
{:status 405
|
||||||
|
:headers {"Content-Type" "text/plain"}
|
||||||
|
:body "Method Not Allowed"})
|
||||||
|
(catch Exception ex
|
||||||
|
(.printStackTrace ex)
|
||||||
|
{:status 500
|
||||||
|
:body (str "uncaught exception:\n" (.getMessage ex))})))
|
||||||
|
|
||||||
|
(defonce server (atom nil))
|
||||||
|
|
||||||
|
(defn make-server [_opts]
|
||||||
|
(let [server (s/run-server #'app {:port default-port :legacy-return-value? false})]
|
||||||
|
(println (str "listening on port " default-port "..."))
|
||||||
|
server))
|
||||||
|
|
||||||
|
(defn stop-server []
|
||||||
|
(when-not (nil? @server)
|
||||||
|
(s/server-stop! @server)
|
||||||
|
(reset! server nil)))
|
||||||
|
|
||||||
|
(defn -main [& _args]
|
||||||
|
(reset! server (make-server {}))
|
||||||
|
(loop []
|
||||||
|
(Thread/sleep 1000)
|
||||||
|
(let [status (s/server-status @server)]
|
||||||
|
(if (= status :running)
|
||||||
|
(do
|
||||||
|
(recur))
|
||||||
|
(println "server stopped... exiting")))))
|
||||||
|
|
||||||
|
(comment
|
||||||
|
(reset! server (make-server {}))
|
||||||
|
|
||||||
|
@server
|
||||||
|
|
||||||
|
(s/server-status @server)
|
||||||
|
|
||||||
|
(s/server-stop! @server)
|
||||||
|
;
|
||||||
|
)
|
Loading…
x
Reference in New Issue
Block a user