hexo使用jenkins自动部署到阿里云

本地安装hexo

npm install hexo-cli -g
hexo init blog
cd blog
npm install
hexo server
复制代码

使用github pages服务部署hexo

我们用来托管博客的服务叫做 Github Pages,它是 Github 用来提供给个人/组织或者项目的网页服务,只需要部署到你的 Github Repository,推送代码,便可以实时呈现。

首先,你需要有一个 Github 的账号。然后创建一个名称为 .github.io 的仓库来托管网页即可。

以我的 Github 为例,我的用户名是 dumingcode,所以创建一个名为 dumingcode.github.io 的仓库,创建的仓库地址便是:https://github.com/dumingcode/dumingcode.github.io.git 创建完后,我们可以暂时不用管它,不需要往仓库里面 push 任何的东西。

hexo部署配置

接着,我们来配置一下本地的 Hexo。

在博客的根目录下有一个名为 _config.yml 的文件,这是博客的主配置文件。前面的其他部分我们先不理会,后文再谈,我们先看最后的 Deployment 配置项:

# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:type:
复制代码

根据官方的文档显示,现在 Hexo 支持 Git、Heroku、Rsync、OpenShift、FTPSync 等部署方式,我们选择 Git 来部署的话,需要首先安装 hexo-deployer-git 插件: cnpm install hexo-deployer-git --save然后编辑上面的配置文件:

deploy:type: gitrepo: <repository url>branch: [branch]message: [message]
复制代码

我们需要把刚才创建的仓库地址添加进来,branch 和 message 项可以不填,默认情况下推送到 master 分支,这里我建议使用 SSH 加密的仓库地址(参看 Github 官方文档配置 SSH 免密操作)。

保存配置文件之后,我们在博客的跟目录键入: hexo g -d便可以把博客部署到 Github 了。现在,所有人都可以通过 http://.github.io 来访问自己的博客。

hexo使用第三方模板

找了半天发现hexo-theme-BlueLake主题很简洁,于是使用下面的命令安装(进入blog根目录执行)。

git clone https://github.com/chaooo/hexo-theme-BlueLake.git themes/BlueLake
cnpm install hexo-renderer-jade@0.3.0 --save
cnpm install hexo-renderer-stylus --save
复制代码

本人搭建好的github个人主页:dumingcode.github.io/,欢迎访问。

hexo部署到阿里云

虽说利用github pages服务能够对外发布博客,但是作为一个码农还是希望有自己的域名博客,但是我比较懒,不想手动发布博客。我想自动化地既发布到github也能同时发布到个人网站。所以决定采用CICD的方法,CICD工具使用开源的jenkins,jenkins也搭建在阿里云个人服务器上。

下载并运行jenkins

注意端口使用的是8081

mkdir /usr/local/jenkins
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
nohup java -jar jenkins.war --ajp13Port=-1 --httpPort=8081 &
复制代码

安装nginx

  1. 安装nginx依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
wget http://nginx.org/download/nginx-1.13.10.tar.gz
tar xvf nginx-1.13.10.tar.gz
./configure --prefix=/usr/local/nginx
make
make install
cd /usr/local/nginx/sbin
./nginx -s reload
nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or direc
需要设置nginx.conf
./nginx -c /usr/local/nginx/conf/nginx.conf
复制代码
  1. nginx.conf配置
upstream jenkins {server 127.0.0.1:8081;keepalive 64;
}
server {listen       80;server_name  jenkins.buyasset.com;client_max_body_size 60M;client_body_buffer_size 512k;location / {port_in_redirect on;proxy_pass              http://jenkins/;proxy_set_header        Host $host:$server_port;proxy_set_header        X-Real-IP $remote_addr;proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header        X-Forwarded-Proto $scheme;}}复制代码

以上通过nginx 反向代理jenkins,在浏览器输入jenkins.buyasset.club就能够进入jenkins管理后台。

配置jenkins

在jenkins页面提示目录中找到默认密码,输入jenkis域名,登陆jenkins。

安装jenkins社区推荐的插件

配置github

获取sercret text

登陆github网站,进入 github->Settings->Developer settings-> Generate new token,点击生成完毕一定记录下下面的secret text。 secret text一定要记住,忘记的话只能重新生成。

GitHub webhooks 设置

进入GitHub上指定的项目(hexo 仓库) --> setting --> WebHooks&Services --> add webhook --> 输入刚刚部署jenkins的服务器的IP

图片中标红区域是变化的,后缀都是一样的为github-webhook。

jenkins中的github配置

配置GitHub Plugin

系统管理 --> 系统设置 --> GitHub --> Add GitHub Sever

API URL 输入 https://api.github.com,Credentials点击Add添加,Kind选择Secret Text,具体如下图所示。 设置完成后,点击TestConnection,提示Credentials verified for user UUserName, rate limit: xxx,则表明有效。

创建一个freestyle任务

  1. General 设置
    填写GitHub project URL, 也就是你的项目主页 eg. https://github.com/your_name/your_repo_name
  2. 配置源码管理
  3. 构建触发器,构建环境
  4. 构建
  5. 构建脚本 将上图的构建脚本替换如下:
cd /var/www/blog(hexo目录)
git pull
hexo clean
hexo g -d
复制代码
  1. 构建后操作

  2. 构建前clone hexo
    将hexo初始代码拉取到/var/www/blog目录中,以后jenkins会监控github的push操作,一旦发现push会自动更新。 cd /var/www git clone https://github.com/dumingcode/dumingcode.github.io.git blog

nginx反向代理hexo

hexo为静态网站,所以直接用nginx反向代理即可,nginx脚本如下:注意root指向的是hexo部署目录。

server
{listen 80;server_name blog.buyasset.club;index index.html index.htm index.php default.html default.htm default.php;root  /var/www/blog;  #error_page   404   /404.html;location ~ .*\.(ico|gif|jpg|jpeg|png|bmp|swf)${access_log   off;expires      1d;}location ~ .*\.(js|css|txt|xml)?${access_log   off;expires      12h;}location / {try_files $uri $uri/ =404;}}复制代码

测试CICD效果

进入本地hexo目录,修改发布的博客,然后执行hexo g -d,登陆jenkins发现jenkins已经获取到了push操作,并且执行了自动构建任务。以下为jenkins的变更记录

Site updated: 2018-04-21 13:35:51 (commit: 76f3c53) (details)
Commit 76f3c530d077782fd66a8ca375afaa17cd188286 by duming
Site updated: 2018-04-21 13:35:51(commit: 76f3c53)
复制代码

参考链接

手把手教你搭建Jenkins+Github持续集成环境
Jenkins+Github持续集成
Jenkins最佳实践 hexo自动部署
基于 Hexo 的全自动博客构建部署系统

hexo使用jenkins自动部署到阿里云相关推荐

  1. Hexo自动部署到阿里云(Ubantu16.04)【超详细踩坑记录】

    文章目录 前言 修改Apache端口号 思路 正文 1. 服务器创建git用户 2. 服务器打开RSA认证 2.1 开启认证配置 2.2 建立ssh信任关系 3.创建blog.git空仓库 4. he ...

  2. github仓库项目自动部署到阿里云

    原文链接 前言 我的博客之前一直是手动更新的,需要自己打包,然后上传到网站.但是项目已经托管在github了,所以何不搞个自动部署呢? 想象一下,网站有修改之后,git push之后等几分钟,网站就自 ...

  3. 将hexo博客部署到阿里云服务器

    将hexo博客部署到阿里云服务器 一.本地的准备 为了使本地可以跟远程的github建立联系,需要在本地配置 SSH 密钥,这样我们就可以在本地直接提交代码到 GitHub 上或者远端 git 仓库. ...

  4. Hexo部署到阿里云

    Hexo部署到阿里云 参考文章 赋予权限 设置密码 测试使用ssh git 登录服务器 如果之前配过,则把本地的know_hosts删掉即可. 安装宝塔部署 然后安装Nginx 然后去阿里云搞个免费S ...

  5. SpringBoot 部署: 项目打包 手动部署到阿里云服务器上

    SpringBoot 部署: 项目打包 & 手动部署到阿里云服务器上 文章目录 SpringBoot 部署: 项目打包 & 手动部署到阿里云服务器上 前言 正文 1. 环境准备 &am ...

  6. 王者荣耀全栈项目部署到阿里云服务器笔记

    王者荣耀全栈项目部署到阿里云服务器笔记 原创Charles_GX 最后发布于2020-03-27 01:27:00 阅读数 177  收藏 展开 王者荣耀全栈项目部署到阿里云服务器笔记 学习的项目来自 ...

  7. 使用Jenkins自动部署博客

    使用Jenkins自动部署博客 title: 使用Jenkins自动部署博客 toc: true comment: true date: 2017-12-17 19:48:10 tags: ['Jen ...

  8. 将Hexo个人博客部署到个人云服务器--最详细踩坑教程

    将Hexo个人博客部署到个人云服务器–最详细踩坑教程 文章目录 将Hexo个人博客部署到个人云服务器--最详细踩坑教程 一. 背景 *二. 获取体验产品--服务器(选读节) (一)说明 (二)购买体验 ...

  9. Flask框架项目部署:阿里云CentOS操作系统

    Flask框架部署:阿里云CentOS操作系统 写在前面 一. 部署前的准备 1. 一个已在开发环境中完成的Flask项目 1)关于依赖包 2)关于环境变量 2. 阿里云CentOS操作系统云服务器 ...

最新文章

  1. 【辟谣】代码规范固然重要,但是不要再黑程序员了...
  2. 3.strcpy使用注意(3)
  3. 车品觉 | 大数据的价值:找到别人的“集体智慧”
  4. 数字语音信号处理学习笔记——语音信号的短时时域分析(1)
  5. Linux shell的和||
  6. stright 在mysql_MySQL优化的奇技淫巧之STRAIGHT_JOIN
  7. 第九十四期:GitHub 发布 2019 年年度报告
  8. 使用 Akka 实现 Master 与 Worker 之间的通信
  9. android 复选框 textview,Android CheckedTextView:简单点,有我就够了
  10. python的shutil模块
  11. Atitit git 使用法v2 目录 1. Git客户端工具 1 1.1. Tortoisegit git gui 图形化工具。。 1 1.2. Ide中的git插件(eclipse idea
  12. RBF神经网络——案例二
  13. Android 多线程断点下载
  14. python arp断网攻击_局域网arp断网攻击
  15. Prometheus的函数和计算公式
  16. Excel分列小技巧
  17. spring boot V部落 V人事项目
  18. 互联网金融牌照有哪些?金融牌照一览表
  19. 基于eBox的LTC1446驱动
  20. python 福利吧_福利吧自动签到脚本

热门文章

  1. 【extjs6学习笔记】1.1 初始:创建项目
  2. onsubmit阻止表单提交
  3. 总结C#保留小数位数
  4. js数组去重(多种方法)
  5. 神马搜索上线奥运会人气榜单 中国女排包揽前三
  6. 简明Python3教程 8.控制流
  7. JQuery实现倒计划按钮
  8. 如何使用Exchange邮件组仲裁
  9. ASP.NET页面事件:顺序与回传详解
  10. 脱机多维数据集CUB文件的生成