项目使用Jenkins部署,已经是工作中的常态了,这里来给服务器安装一个Jenkins。
安装Jenkins之前,需要给服务器先安装JDK。
服务器安装linux,可以直接参考 官方教程 中对应的这部分内容,下面是实际安装过程。
安装之前,需要先确保java的安装正确
jenkins的安装程序只会去/bin:/usr/bin:/sbin:/usr/sbin
这几个路径,去寻找java指令,如果没有,那么安装过程会报错,所以安装之前需要先确保一下。
# 输入,查询java路径在正确的位置
type -a java
# 输出
java is /usr/bin/java
java is /usr/lib/jdk1.8.0_202/bin/java
java is /usr/lib/jdk1.8.0_202/jre/bin/java
可以看到java指令存放的位置,如果上面要的几个位置中没有,那么就需要做一个软链接,来完成要求:
# 做一个软链接,注意 /jdk1.8.0_202/bin/java 需要根据自己的java位置来修改,其实就是上面打印出来的java的位置
ln -s /jdk1.8.0_202/bin/java /usr/bin/java
安装
对于【Debian/Ubuntu】的linux系统,官方安装主要就下面四行命令,依次复制到服务器进行安装即可,至于其他版本的linux。。。我暂时还没有遇到。
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins
官方还有一些说明,大意是:
原文:
- 将Jenkins设置为启动时启动的守护进程。查看
/etc/init.d/jenkins
获取更多细节- 创建一个'jenkins'用户来运行此服务
- 直接将控制台日志输出到文件
/var/log/jenkins/jenkins.log
。如果您正在解决Jenkins问题,请检查此文件/etc/default/jenkins
为启动填充配置参数,例如JENKINS_HOME- 将Jenkins设置为在端口8080上进行监听。使用浏览器访问此端口以开始配置
如果你的/etc/init.d/jenkins
文件无法启动Jenkins,编辑/etc/default/jenkins
, 修改 ----HTTP_PORT=8080----为----HTTP_PORT=8081----
在这里,“8081”也可被换为其他可用端口。
执行 service jenkins start
时,可能会报错:
service jenkins start
Failed to start jenkins.service: Unit jenkins.service not found.
可通过指令 systemctl list-unit-files --type=service
查找全局服务中,是否有 Jenkins,如果有,那说明安装成功,但系统指令未加载,那就执行以下指令,重载一下系统指令:
systemctl daemon-reload
再次执行 service jenkins start
,可能还会报以下错误:
service jenkins start
Job for jenkins.service failed because the control process exited with error code.
See "systemctl status jenkins.service" and "journalctl -xe" for details.
执行完上面的四剧指令后,jenkins安装完成。
打开浏览器,输入我的【服务器ip + 端口号】,打开了jenkins界面,但还是一个大意【请稍等,jenkins正在初始化】的提示。
如果打算直接【服务器ip + 端口号】打开,就不用配置服务器代理了。
后面就需要用浏览器访问 jenkins了,这里建议先配置域名解析,解析一个域名到当前服务器IP很简单,不再说明,但当打开域名时,凡事http访问的域名,进入的都是80端口,可我们服务器中,启动着jenkins服务的端口不同,是不能访问到的。
这时就需要我们在服务器配置一下代理,这里我使用的web服务器的是nginx。
我使用nginx监听了所有请求到当前ip的80端口的请求,所以上面配置了域名解析,当访问时,也会进入到我的nginx中,这时我需要用nginx配置一下反向代理。
nginx的其他配置不贴了,只贴一下代理jenkins项目的配置项,把下面代码贴到nginx配置文件的对应位置,然后重启nginx即可:
# jenkins项目 反向代理
server {
listen 80;
# 后面是jenkins项目的域名,比如域名是 jenkins.temp.com,那下一行这么写
server_name jenkins.temp.com;
access_log /var/log/nginx/access.jenkins.log; # 输出一下该网站的访问日志,非必须
location / {
# 反向代理,我服务器中jenkins服务的端口是8092,就写成下面那样
proxy_pass http://localhost:8092/;
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;
}
}
解析和配置完nginx后,重启nginx,在浏览器输入我们配置的域名,就能看到一个jenkin正在初始化的等待页面。
页面初始化完成后,会出现页面,提示你从服务器某个文件中复制 Jenkins 密码,写到页面下面的输入空中,这里直接去服务器取得密码输入继续就行。
再后面,会要求选择安装推荐的插件,还是自定义插件,选择推荐的插件,点击后显示了插件安装进度界面,这里等待安装完成后,会要求创建第一个管理员用户。
创建完第一个管理员用户,会再要求定义当前Jenkins项目的域名,这个域名最好就写成这个jenkins项目即将使用的域名,以后部署项目各种连接服务器,都会进行校验。
写完确认后,就可以进入自己的 Jenkins 页面了。
jenkins是可以直接在当前服务器执行shell,来执行任务的。
但正常情况,jenkins只能控制当前自己的文件夹(工作空间),没有权限进入其他文件夹,这时如果需要进入其他的目标文件夹,只有两种方法:
正常来说,应该使用方案一,但实际我们会犯懒,直接提升jenkins权限。。。下面就提升jenkins为root:
# jenkins用户加入到root组
gpasswd -a jenkins root
修改jenkins执行时使用的用户组,要求其使用root,我们需要修改jenkins自己的配置文件。
可能由于安装方式不一样,配置文件也不一样,要么是
/etc/default/jenkins
,要么是/etc/sysconfig/jenkins
,我们可以试一下,哪个文件存在有配置,就是哪个。
我这里的是/etc/default/jenkins
文件:
# 编辑文件
vim /etc/default/jenkins
# 把以下两行,修改成以下
JENKINS_USER="root"
JENKINS_GROUP="root"
修改完成后,重启jenkins服务,就有权限访问其他文件夹了。
service jenkins restart
当我们创建了构建流程,点击构建后,如果使用npm、gitbook等我们自己安装在服务器的工具,可能仍然会报错,提示类似:
/usr/bin/env: node: No such file or directory
但我们打开服务器,却能发现,node指令完全没问题。。。
原因应该是,jenkins使用这些指令时,只会从/usr/bin/
目录下查找有没有,不会全局查找。
这就需要我们自己定义一下软连接,和上面处理JDK的方式一样:
type -p {你的指令}
查看指令的位置。ln -s {上一行输出的位置} /usr/bin/{你的指令}
,来创建软连接。这样,jenkins就可以使用用户安装的指令了。
在 jenkins 首页,点击「新建任务」,进入如下页面。
任务名称可以直接使用汉字,为这个构建起一个名字,然后选择下面列表中的第一项「构建一个自由风格的软件项目」,当然如果有其他需求可以选择其他,但我一般就使用这个就足够了。
之后进入此项目的配置页面,如下图所示:
上图中:
但如果需要使用 git,选择Git后,会展开一个新模块,需要你填写远程仓库地址(支持https和ssh两种地址),后面再选择对应的的凭证,这个凭证可以点击「添加」按钮来新增。
且当写完仓库地址、选择凭证后,jenkins 会自动测试一下,检测这个远程仓库使用对个凭证是否可以正常登录,如果不能会有提示,如下图所示,且可以指定拉取的分支。
项目第一次部署时,Jenkins 会创建一个属于这个项目的工作空间,默认位置为:
/var/lib/jenkins/workspace/【项目名称】
比如我的这个项目,位置就是:/var/lib/jenkins/workspace/一个测试项目
这里选择使用Git,项目拉取后,就是存放在服务器的这个目录下。
进行完是否使用Git后,我们可以进行后续步骤,后面有一个关键的配置,就是「构建」中的「增加构建步骤」下的「执行 shell」:
之后会出现一个文本框,你可以在这里写一些shell指令,可以使用所有指令,比如复制文件、去其他目录、拉取git、使用node等等:
进行完之后,就可以保存,然后去执行这个构建项目了。