使用Jenkins建立部署任务

自己的博客系统是用hexo生成的,所以部署时只需要将生成的public文件夹部署到tomcat容器目录下,启动tomcat即可,但项目是由gitee托管,整个hexo项目在仓库里,所以从一开始便不是在本地生成public文件夹部署,而是在本地写好文章与设置后,直接推到仓库,再由自己的云服务器进行拉取,然后在服务器上运行hexo g生成静态文件,由tomcat进行展现。

问题在于我新增文章后,需要推送,部署还需要登录服务器进行部署。中间少了自动化的能力。所以自然而然想到了用Jenkins进行流水作业。

在ubantu中使用Jenkins。首先可以仅通过命令进行安装:

注:需要服务器有对应jre环境

Jenkins Debian Packages

his is the Debian package repository of Jenkins to automate installation and upgrade. To use this repository, first add the key to your system:

1
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -

Then add the following entry in your /etc/apt/sources.list:

1
deb https://pkg.jenkins.io/debian-stable binary/

Update your local package index, then finally install Jenkins:

1
2
sudo apt-get update
sudo apt-get install jenkins

然而,安装时下载war包时间过长,最终放弃在命令安装。


使用tomcat部署Jenkins

官网下载Jenkins war包

问题1:

由于Jenkins需要tomcat进行承载,而我的网站也需要tomcat容器,当博客网站需要部署重启时,同一节点会一起重启,这不符合Jenkins持续部署的意义,所以首先需要copy一份tomcat

  1. copy tomcat

  2. 修改server.xml 将端口修改成不同博客的端口,防止冲突

  3. 定义Jenkins的可视化网站路径

  4. 将war放在路径下

    注意:Jenkins解压后还有一层目录Jenkins,所以tomcat的 Jenkins的可视化网站路径需要再加一层。

问题2:

权限问题Jenkins运行时会使用shell,所以从一开始copy tomcat的时候,以及后面启动tomcat时,运行在root,虽然这很有风险,特别是部署在对公服务器上。

问题3:

需要服务器有jre(有tomcat,所以早就安装好了)

启动tomcat

1
sudo sh startup.sh

访问如ip:8081

出现上图既安装成功。

设置Jenkins

第一次未设置帐号前需要查看密码。在服务器中查看密码点击继续。

提示我们安装插件,不知道装什么,可以不装插件,后期还可以安装插件的,或者使用推荐,就是推荐稍微有点多

安装推荐的插件

问题:

在安装插件的时候速度非常的慢,解决方案是修改 Jenkins /update/default.json 这个文件就可以了。

  1. 把 “ www.google.com ” 改成 “ www.baidu.com”

  2. 全局搜索 “ updates.jenkins-ci.org/download ” 替换成 “ mirrors.tuna.tsinghua.edu.cn/jenkins ”

然后重启tomcat即可

等安装好之后。配置用户名、密码、URL访问地址,就可以使用了。

新建任务

首先明确是使用gitee的仓库,所以它可以设置触发构建。

在这里查看设置选项 https://gitee.com/help/articles/4193#article-header0

其中构建步骤需要设置服务器的动作

很简单的语句,因为前面是设置gitee有提交时触发Jenkins任务,就会跑构建脚本。构建脚本在服务器上写好会拉取git,然后hexo g然后重启tomcat。所以可以这样分离操作。

之后点击保存即可。

可以在Jenkins上直接立即执行构建,也可以提交代码触发构建。