Jenkins 部署
Jenkins 是持续集成服务器,可以帮你自动化运行测试用例。 这有助于确保所有测试保持通过,应用程序总是准备就绪的。
环境: Ubuntu 16.04
参考链接
安装搭建
-
安装java(如果没有)
sudo apt-get update sudo apt-get install openjdk-8-jre-headless
-
添加源并安装Jenkins(更多安装方式见官网)
wget -q -O - http://pkg.jenkins-ci.org/debian-stable/jenkins-ci.org.key | sudo apt-key add - sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list' sudo apt-get update sudo apt-get install jenkins
-
一些命令和配置所在位置
# 启动服务(使用apt安装的,不需要输入此命令) sudo systemctl start jenkins # 查看状态 sudo systemctl status jenkins # 日志文件 tail -f /var/log/jenkins/jenkins.log # 配置文件 vi /etc/default/jenkins
-
初始化Jenkins
- 使用浏览器访问:http://your_domain_or_IP:8080
-
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
获取密钥,填写到网页中 - (此处进行较长时间的等待...原因不详)
- 点击
Install suggested plugins
,等待读条 - 填写用户,然后保存
部署项目
- 创建一个新任务
- 填写项目名,选择“构建一个自由风格的软件项目”
- 需要注意的有:
- 源码管理:选择git,填写仓库URL,本地库的格式 =>
/path/projectName/.git
,可选分支,默认master - 构建触发器:主要的有3种,“触发远程构建”中可以指定TOKEN并构造URL来触发构建,可以用于git的钩子,每次提交的时候就构建; "Build periodically"是周期性构建,无论代码是否有修改,都会执行的构建,一般用于每天跑测试; "Poll SCM"是根据版本控制软件(git)的版本号来判断,如果有变化则checkout后构建。 后两种的内容采用crontab的周期格式,并且每次构建除了"Poll SCM"之外,默认不会checkout代码
- 构建:可以指定"Execute Shell",这是真正做的内容,可以checkout代码,执行一些测试脚本,编译代码,提交到远程库等
- 构建后操作:构建结束会得到结果(成功/失败),可以选择"E-mail Notification"或"Editable Email Notification"来进行邮件提示。“不稳定”的含义是相比于上一次构建的结果,从失败到成功、成功到失败、失败到失败,这三种情况的总和。一般勾选此选项,责任人是触发此构建的用户
- 源码管理:选择git,填写仓库URL,本地库的格式 =>
例子
- 拉取测试分支到本地:
git clone git@git.oschina.net:tyruschin/test_jenkins.git
- 进入Jenkins,http://localhost:8080/
- 左侧新建,填入item name,选择“构建一个自由风格的软件项目”
- 填入描述
- 源码管理选择git,填入仓库路径/.git
-
构建触发器选择“Poll SCM”,填入
* * * * *
,表示每分钟自动检测git的版本号是否有变化,如果有,则checkout后构建 - 仓库中有两个脚本,一个是执行出错的脚本
ls not_exist_dir
,一个是正常执行的脚本,可以多次尝试。先在构建中增加构建步骤Execute shell,填入仓库路径/ok.sh - 选择增加构建后操作步骤中的E-mail Notification,勾选“每次不稳定的构建都发送邮件通知”,
Recipients
中可以用空格分隔多个默认收件邮箱,每个不稳定状态都会提醒这些人。同时也可以勾选“单独发送邮件给对构建造成不良影响的责任人”,发送给造成不稳定状态的构建用户 - 保存
- 点击左侧“立即构建”,记录git仓库中的代码到工作空间,可以看到构建历史上多了一个
#1
(配置成功的情况是蓝色的,如果红色则需要查看Output),蓝色球代表成功,红色球代表失败,点击进去可以看到一些过程信息,Console Output中可以看到一些输出,最后几行有执行脚本的输出和执行状态:Started by user admin Building in workspace /var/lib/jenkins/workspace/temp Cloning the remote Git repository Cloning repository /server/www/test_jenkins/.git > git init /var/lib/jenkins/workspace/temp # timeout=10 Fetching upstream changes from /server/www/test_jenkins/.git > git --version # timeout=10 > git fetch --tags --progress /server/www/test_jenkins/.git +refs/heads/*:refs/remotes/origin/* > git config remote.origin.url /server/www/test_jenkins/.git # timeout=10 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 > git config remote.origin.url /server/www/test_jenkins/.git # timeout=10 Fetching upstream changes from /server/www/test_jenkins/.git > git fetch --tags --progress /server/www/test_jenkins/.git +refs/heads/*:refs/remotes/origin/* > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10 Checking out Revision 5b2707a3967d620e224fe7df79970cce4253a30d (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 5b2707a3967d620e224fe7df79970cce4253a30d First time build. Skipping changelog. [temp] $ /bin/sh -xe /tmp/hudson6040940560717864847.sh + /server/www/test_jenkins/ok.sh 标准的输出,没有错误 Finished: SUCCESS
- 回到项目主页面,点击”配置“,将Execute shell改为
err.sh
,并保存 - 回到主页面,点击立即构建,出现红球,并且相应的邮箱收到邮件提醒
See <http://localhost:8080/job/temp/2/display/redirect> ------------------------------------------ Started by user admin Building in workspace <http://localhost:8080/job/temp/ws/> > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url /server/www/test_jenkins/.git # timeout=10 Fetching upstream changes from /server/www/test_jenkins/.git > git --version # timeout=10 > git fetch --tags --progress /server/www/test_jenkins/.git +refs/heads/*:refs/remotes/origin/* > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10 Checking out Revision 5b2707a3967d620e224fe7df79970cce4253a30d (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 5b2707a3967d620e224fe7df79970cce4253a30d > git rev-list 5b2707a3967d620e224fe7df79970cce4253a30d # timeout=10 [temp] $ /bin/sh -xe /tmp/hudson2967294202264901782.sh + /server/www/test_jenkins/err.sh 以下尝试访问一个不存在的目录 ls: cannot access 'not_exist_dir': No such file or directory Build step 'Execute shell' marked build as failure
- 尝试提交一个git修改到本地(与源码管理中填写的库对应),1分钟内仍然会收到一个错误提醒,构建出现红色球
- 将配置中的
err.sh
改回ok.sh
,点击立即构建,邮箱收到纠正提醒,构建出现蓝色球 - 多次点击立即构建或提交修改,由于上一次状态是正确,当前状态也是正确的,不会发送提醒邮件
用户管理
忘记密码
http://www.cnblogs.com/zz0412/p/jenkins_jj_11.html
然后进入之后,点击右上角的名字 - 设置,修改密码