使用Jenkins建立部署任务
使用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:
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
:
deb https://pkg.jenkins.io/debian-stable binary/
Update your local package index, then finally install Jenkins:
sudo apt-get update
sudo apt-get install jenkins
然而,安装时下载war包时间过长,最终放弃在命令安装。
使用tomcat部署Jenkins
在官网下载Jenkins war包
问题1:
由于Jenkins需要tomcat进行承载,而我的网站也需要tomcat容器,当博客网站需要部署重启时,同一节点会一起重启,这不符合Jenkins持续部署的意义,所以首先需要copy一份tomcat
copy tomcat
修改server.xml 将端口修改成不同博客的端口,防止冲突
定义Jenkins的可视化网站路径
将war放在路径下
注意:Jenkins解压后还有一层目录Jenkins,所以tomcat的 Jenkins的可视化网站路径需要再加一层。
问题2:
权限问题Jenkins运行时会使用shell,所以从一开始copy tomcat的时候,以及后面启动tomcat时,运行在root,虽然这很有风险,特别是部署在对公服务器上。
问题3:
需要服务器有jre(有tomcat,所以早就安装好了)
启动tomcat
sudo sh startup.sh
访问如ip:8081
出现上图既安装成功。
设置Jenkins
第一次未设置帐号前需要查看密码。在服务器中查看密码点击继续。
提示我们安装插件,不知道装什么,可以不装插件,后期还可以安装插件的,或者使用推荐,就是推荐稍微有点多
安装推荐的插件
问题:
在安装插件的时候速度非常的慢,解决方案是修改 Jenkins /update/default.json 这个文件就可以了。
把 “ www.google.com ” 改成 “ www.baidu.com”
全局搜索 “ 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上直接立即执行构建,也可以提交代码触发构建。