1、安装jdk8
检查是否安装了jdk
java -version
如果出现版本提示则说明安装了,没有则需要进行安装
注意 安装jdk1.8版本,亲测jdk7、10会导致失败(当前版本[Jenkins ver. 2.131])
安装jdk
由于在服务器中下载包极其挫折(并且不想安装 openSDK ),直接到官网下载安装包(tar.gz),传到服务器上某路径下。
cd到该路径下解压
tar -xzvf xxx.tar.gz
#(xxx为你下载的文件名)
配置环境变量
vi /etc/profile
在文件底部中添加
# set java environment
JAVA_HOME=/usr/java/jdk1.8.0_171 JRE_HOME=$JAVA_HOME/jre CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin export JAVA_HOME JRE_HOME CLASS_PATH PATHT
其中,/usr/java/jdk1.8.0_171 是我解压后的文件地址,根据自己实际情况而定
使配置文件生效
source /etc/profile
2、安装jenkins
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
yum install jenkins
3、修改配置
vi /etc/sysconfig/jenkins
配置文件中找到以下两项,根据实际情况进行修改
JENKINS_USER="jenkins" 自动创建一个jenkins用户
JENKINS_PORT="8080" 服务启动默认端口
4、配置java路径
查询java路径,如果which查不到自行寻找路径
which java
查询java路径,记下
打开配置文件
vi /etc/init.d/jenkins
找到配置块如下,查看是否存在本机的java路径,如没有,添加上。
candidates="
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/bin/java
"
5、启动和关闭
启动
sudo service jenkins start
关闭
sudo service jenkins stop
若提示 Warning: jenkins.service changed on disk. Run 'systemctl daemon-reload' to reload units.
则执行
systemctl daemon-reload
后重新启动
sudo service jenkins start
在浏览器输入 服务器ip地址:服务端口号
如 10.51.38:8080 (默认 8080)
若无法打开网页,请检查上述配置的端口号是否输入正确,以及jdk是否为jdk8(1.8)
根据指引找到密码登录,后选择默认插件安装,等待安装完成后,创建账户。
欢迎界面
完成账户创建后即可进入到欢迎界面
推荐插件
文件推送远程服务器插件(重要): Publish Over SSH
SVN插件: SVN Publisher plugin
Maven插件: Maven Integration plugin (Maven集成,否则新建的时候没有Maven Project)
插件安装方法: 系统管理/插件管理/可选插件 ,搜索插件进行安装即可
6、实战演练
这里我们以前端项目为例。(先安装好node以及相关的环境)
我们的需求是点击"开始构建"项目后:
1、自动从git上把项目下载、pull下来
2、进行依赖检查安装
3、执行项目编译
4、把编译出来的文件包压缩,发送到远程服务器
5、在远程服务器上解压文件,部署到相应位置;同时把前一个项目包进行备份
配置远程服务器
由于要把包发送到远程服务器,所以先把相应的远程服务器配置好
系统管理/系统设置 ,页面查找 “Publish Over SSH”,找到配置页面
公共的配置:
(提前配置好服务器之间的ssh免密登录)
*Passphrase:密码(key的密码,如果你设置了)
Path to key:key文件(私钥)的路径
Key:讲私钥复制进来
私有配置
私有配置:
SSH Server Name:标识的名字 (自行取名)
Hostname:需要连接ssh的主机名或ip地址
Username:用户名
Remote Directory:远程目录
Use password authentication, or use a different key:可以替换公共配置(选中展开的就是公共配置的东西,这样做扩展性很好)
私有配置的高级:
Port:端口(默认22)
Timeout (ms):超时时间(毫秒)默认即可
Disable exec:禁止运行命令
Test Configuration:测试连接
配置完成后点击 “test Configuration”进行测试,成功即可。
创建新任务
这里主要配置重要项,其他项自行选择
配置源码管理
这里在 Repository URL 填写git 项目地址,涉及到服务器验证的话做好ssh免登录即可无需选择凭证,或者选择选择相应的验证方式。如果验证没通过,输入地址后几秒,页面即会报错提示。
Branch Specifier (blank for 'any') 为分支选择
构建
在构建中输入要执行的shell脚本,值得注意的是 首行要加入 “source /etc/profile” ,以载入环境变量,不然会出现 cnpm 命令找不到的情况。
source /etc/profile
cnpm I
cnpm run buildxhtest
echo "完成构建"
至此,已经完成了需求的1、2、3点
构建后操作
构建完成后,我们还需要把文件包压缩发送至远程服务器。
点击增加构建步骤,选择 Send build artifacts over SSH
Name: 远程服务器
Source files: 包的路径,相对路径
Remove prefix: 需要移除前缀路径, 如果包的路径为 demo/a.jar,如果此项为空,则发到服务器则为/root/demo/a.jar, 如果移除前缀路径为 demo/,则服务器路径为/root/a.jar
Remote directory: 上传到远程服务器的目录, 注意这是一个相对路径, 根目录取决于你的SSH Service配置
Exec command:上传完成后需要执行的命令(注意,根目录是当前用户目录)
比如,当前我要把打包压缩好的 dist.tar.gz 文件发送到远程服务器上的 /home/jenkins_test 路径下, 而在配置该远程服务器时默认目录为 /home,所以,
Source files : dist.tar.gz
Remove prefix:
Remote directory: jenkins_test
为了不出现意想不到的路径错误,shell脚本里直接指定绝对路径。
cd /home/jenkins_test
要实现需求4、5,shell脚本如下:
# 这里还是用户目录
cd /home/jenkins_test
# 创建文件夹
curDate=$(date "+%Y-%m-%d-%H-%M-%S")
mkdir web_history/$curDate
# 删除原有的dist
rm -f -r dist
# 解压dist
tar vxf dist.tar.gz
# 把历史版本存起来
cp dist/index.html web_history/$curDate/index.html
cp -r dist/static web_history/$curDate/static
# 删除历史版本
rm -r -f static
rm -f index.html
# 把新的文件放入目录
cp -r dist/static static
cp dist/index.html index.html
echo "成功!"
配置好以上后,点击保存。
在项目界面点击 立即构建 ,即可开始构建项目
查看控制台输出
在构建的过程中,可以点击任务查看档次任务详情,控制台输出
在控制台中查看运行状态。