Hugo 博客是使用 Go 语言编写的静态博客引擎,可以快速将 markdown 博文转换成 HTML 文件。
环境:Ubuntu 16.4 + Nginx
Jenkins 的安装
wget -q -O - https://jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins
sudo apt-get update
sudo apt-get install jenkins
sudo service jenkins start # 启动Jenkins
sudo service jenkins stop # 停止Jenkins
sudo service jenkins restart # 重启Jenkins
http://localhost:8080
配置文件:/etc/default/jenkins
安装路径:/var/lib/jenkins
日志路径:/var/log/jenkins
Jenkins 安装好后,默认端口是8080,如果发现使用上述路径 ( http://localhost:8080
) 无法访问Jenkins,可能是因为其他的程序占用了该端口,需要修改为其他的端口:
修改文件:/etc/default/jenkins
HTTP_PORT=8081
然后重新启动Jenkins :
sudo service jenkins restart
然后根据Jenkins 提示进行配置
使用 Nginx 进行方向代理
在 Nginx 配置目录: /etc/nginx/conf.d
添加配置文件:
server {
listen 443;
server_name Jenkins;
debug_http;
client_max_body_size 60M;
client_body_buffer_size 512k;
location / {
proxy_pass
http://localhost:8081;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
ssl_certificate /etc/letsencrypt/live/Jenkins/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/Jenkins/privkey.pem; # managed by Certbot
}
server {
listen 80;
server_name Jenkins;
if ($host = Jenkins) {
return 301 https://$host$request_uri;
} # managed by Certbot
}
Jenkins 是指你自己的域名
我这里将所有HTTP 请求重定向到了 HTTPS
现在我们可以通过 https://Jenkins
来访问 Jenkins
了。
安装 Jenkins 插件:
这里我们需要安装两个插件:
Gogs plugin
Publish Over SSH
登录 Jenkins ,在 系统管理
--> 插件管理
中搜索上述两个插件并安装
Jenkins 持续集成配置:
在进行配置之前,我们需要添加两个凭证:
在 Jenkins 主页点击 凭证
--> 系统
--> 全局凭证
进入凭证列表页面,点击 添加凭证
,我们需要添加两个凭证:
Username with password # 用来登录 Gogs
SSH Username with private key # 用来登录 VPS
配置 Jenkins 持续集成:
添加任务,配置如下:
- 在 Gogs Webhook 下选择 Use Gogs secret
- 在 Source Code Management 下选择 Git 并在
Repository URL
填写 git 地址,在 Credentials
选择我们上面配置的凭证 - 在 Build 下添加两个命令:
rm -rf public
hugo
- 在 Post-build Actions 添加在上面添加的登录 VPS 的凭证,并在
Source files
添加:
public/**
- 在
Exec command
添加需要在你服务器执行的命令,也可以不填,默认文件会复制到 SSH Server
服务器配置的目录下。
以下是图片配置截图:
添加 Gogs 钩子:
在 Gogs 博客的 git 项目 下,点击 仓库设置
--> 管理 WEB 钩子
添加一个钩子,以便在你 push 后可以通知 Jenkins 来自动生成博客,并将博客部署到 VPS。
https://<Jenkins Server Address>/gogs-webhook/?job=<Jenkins 任务名称>
- 在
数据格式
下选择 application/json
,保存。
可以在底部点击测试推送,查看 Jenkins 是否可以收到推送并进行自动部署到 VPS 。
That's All.