August 4, 2022
By: Kevin
重新生成blog的自动化脚本
Blog的发布流程
你会发现, 除了头两步, 后面的其实和写博客都没啥关系....
而且还得有权限, 我们可以使用一个脚本把这部分优化掉.
+--------------+
| Write Blog |
+--------------+
|
v
+--------------+
| Push to GIT |---------+
+--------------+ |
| |
v |
+--------------+ |
| open Jenkins | |
+--------------+ |
| |
v |
+--------------+ |
| Login | |
+--------------+ |
| | 这些步骤可以用脚本执行!
v |
+--------------+ |
| find blog Job| |
+--------------+ |
| |
v |
+---------------+ |
| Start a build | |
+---------------+ |
| |
v |
+---------------+ |
| DONE |<-------+
+---------------+
自动化
什么是我们的首选呢, 当然是clojure!
需要的库, 在project.clj添加一下
[com.offbytwo.jenkins/jenkins-client "0.3.8"]
需要执行的脚本(需要问马老师设置一个低权限用户....)
(import [com.offbytwo.jenkins JenkinsServer]
[com.offbytwo.jenkins.model JobWithDetails Job ]
[java.net URI])
(def server (JenkinsServer.
(URI. "http://47.104.73.40:8888/")
"mahaiqiang"
"Marvin.Ma"))
(when-let [job (.getJob server "blog_auto_deploy")]
(.build job true))
如果你用emacs
每次写完blog, C-c C-c, 搞定.
也可用curl直接调用jenkins提供的api
curl --user marvin:0b73d8f30555c647815cdef5cecee42d http://106.14.1.13:8080/view/%E5%8D%9A%E5%AE%A2/job/blog_auto_deploy/build?token=Abcd1234
blog的.git/hooks目录下新建pre-receive文件,内容如下:
#!/bin/sh
curl --user marvin:0b73d8f30555c647815cdef5cecee42d http://106.14.1.13:8080/view/%E5%8D%9A%E5%AE%A2/job/blog_auto_deploy/build?token=Abcd1234
给可执行权限
chmod +x pre-receive