Jenkins的安装与部署
当我们在实施一个项目时,从新代码中获得反馈的速度越快,问题越早得到解决。获得反馈的一种常见方法是在新代码之后运行测试,但这就导致了当代码正在编译并且正在运行测试时,开发人员无法在测试完成之前继续工作,从而使生产效率大大降低。Jenkins 通过提供持续集成功能解决了该问题。合并新代码后,Jenkins 可以自动进行构建,运行测试和部署应用程序。这篇文章会向大家介绍Jenkins的安装方式和使用方法。
Jenkins安装
- 安装jdk1.8
- 安装jenkins
- 了解jenkins 的初始化过程
安装jdk1.8
Jenkins是基于java8编写的软件,所以在安装之前需要在主机上安装Java8的运行环境,及安装jdk 1.8
# yum install -y java-1.8.0-openjdk //安装jdk 1.8
# vi /etc/yum.repos.d/jenkins.repo //配置yum源
添加如下内容
[jenkins]
name=Jenkins
baseurl=http://pkg.jenkins.io/redhat
gpgcheck=1
#yum clean all #清除缓存
#yum repolist #查看yum源是否成功
#rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key #导入密钥
Jenkins是什么?
Jenkins是一个独立的开源软件项目,是基于Java开发的一种可扩展的持续集成(CI)工具,用于监控持续重复的工作,自动的构建和测试软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
持续集成(CI)是什么?
持续集成(CI)是在源代码变更后自动检测、拉取、构建和(在大多数情况下)进行单元测试的过程。
# yum -y install epel-release
# yum -y install daemonize
# yum install -y jenkins //安装jenkins
# systemctl start jenkins //启动jenkins
# netstat –ltnp //查看Jenkins是否启动(8080端口是否监听)
# systemctl stop firewalld //关闭防火墙
输入ip加端口进入jenkins
# less /var/lib/jenkins/secrets/initialAdminPassword #查看管理员密码
自定义jenkins
- 安装基础插件
- 创建第一个管理员用户
安装插件
登陆后,会出现如下页面,这里涉及到jenkins的插件安装,建议选择“安装推荐的插件”,点击“安装推荐的插件”后,进入“新手入门”页面,等待全部插件安装成功即可
创建第一个管理员用户
插件安装完成后,会出现“创建第一个管理员用户”页面,填写正确信息后,点击“保存并完成”,这样第一个管理员用户就创建完毕了
Jenkins相关配置及代码发布
了解jenkins各配置及插件的作用,学会发布代码。
Jenkins发布php代码
- 解如何安装插件。
- 了解如何配置Publish Over SSH、添加公钥、增加SSH Server
- 了解构建一个新的任务的流程。
安装插件
先进入“系统管理”,再进入“管理插件”,在“已安装”中检查是否有“Git plugin”和“Publish Over SSH”两个插件,如果没有则需要安装,到“可选插件”中搜索并安装。
查看已经安装过的 Publish Over SSH 和 Git plugin。
插件完成后,点击 “返回首页”回到服务器中重启 jenkins后,登录。
#systemctl restart jenkins //重启jenkins
配置Publish Over SSH
首先需要在服务器上/.ssh目录下生成一对密钥
# cd ~/.ssh
# ssh-keygen -t rsa
检查是否生成成功
# ls -al
密钥生成成功后,登录Jenkins,点击“系统管理”然后点击“系统设置”,下拉找到“Publish Over SSH”将刚才生成的服务器的私钥填入 “Publish over SSH” 中的“key”
查看key
#cat id_rsa
错误记录:提示 .ssh目录不存在
解决方案:创建~/.ssh目录,并把目录权限设置为700。
# mkdir ~/.ssh
#chmod 700 ~/.ssh
增加SSH Server
“Publish over SSH”配置完成后,为了实现代码的成功发布,我们需要先查看并复制服务器的公钥
# cat id_rsa.pub
然后将复制的服务器公钥,添加到需要添加“SSH Servers”的远程机器的.ssh/authorized_keys目录下,若要增加服务器的“SSH Servers”,则需要将服务器的公钥添加到服务器的.ssh/authorized_keys目录下。
再新加一台主机jenkins2,在新主机上生成密钥,进行以下操作
# mkdir ~/.ssh #创建文件
# cd ~/.ssh/ #进入.ssh
# chmod 700 ~/.ssh #权限设置为700
# ssh-keygen -t rsa #生成密钥
# ls -al #查看是否生成成功
# touch authorized_keys
# chmod 600 authorized_keys #权限设置为600
然后把localhost主机上的生成的公钥添加到jenkins2的.ssh/authorized_keys目录下。
# vi .ssh/authorized_keys
在服务器上尝试登录远程机器
ssh 192.168.200.222
试登陆成功后,登录jenkins,进入“Manage Jenkins”,点击“Configure System”,下滑找到“SSH Servers”,填写所需要连接机器的各项设置,然后点击“Test Configuration”,显示“success”,即成功。
错误记录:.ssh目录下无authorized_keys文件
解决方案:创建名为authorized_keys的文件,并且把它的用户权限设成600。
# cd ~/.ssh
# touch authorized_keys
# chmod 600 authorized_keys
# ls –al
构建新的任务
点击新建ltem
输入任务名称,并选择构建软件项目的风格,应实验要求这里选择自由风格
填写“描述”
配置“源码管理”,选择管理源码的方式(这里选择git),将代码仓库的地址填入“Repositories URL”中,若代码仓库是私有仓库,还需要点击“添加”来添加凭证,其他保持默认即可。
https://gitee.com/ 到gitee创建代码仓库,然后把代码仓库的地址填入“Repositories URL”中。
配置“构建触发器”“构建环境”,应实验要求此处保持默认即可
配置“构建”,此处用到了我们之前安装的 “publish over ssh” 插件,首先增加名为“Send files or exeute commands over SSH”的构建步骤
然后在“Name”下选择机器名称(此处SSH Server个数由第3步中添加的数量决定);“Source files”表示要发布那些代码,在其下填写“/”(表示全部);
“Remote directory”表示把代码发送到远程机器的位置,填写“/tmp/Jenkins2”(此处可自定义);“Exec command”下填写想要执行的命令,此处自定义可以为空
点击“高级”,出现如下页面,其中“Pattern separator” 设置模式分隔符,“Exec timeout(ms)” 设置超时时间,此处保持默认即可
通常情况下我们需要添加多个机器来进行任务,点击左下角“Add Server”来添加多个机器。
完成以上设置后,应用保存即可。
将代码发布到对方机器
首先进入任务,然后点击“立即构建”,查看“控制台输出”,最后登录各机器查看代码发布是否成功。
进入任务
Jenkins邮件配置
配置“邮件通知”,对邮件进行配置,这样当项目构建失败时,我们能第一时间收到通知。
首先进入“Manage Jenkins”,然后进入“Configure System”,填写“Jenkins location”, 设置系统管理员邮件地址,这里的邮件地址需要和后续要设置的发邮件地址一致。
找到“邮件通知”,“SMTP服务器”中填写“smtp.163.com”,接着勾选“使用SMTP认证”,填写所使用邮箱的用户名及密码,“SMTP端口”使用25端口,接着勾选“通过发送测试邮件测试配置”,向其中填写用于发送测试邮件的邮箱地址后,点击“Test configuration”进行测试,发送成功后,保存。
注意SMTP认证使用的密码是网易邮箱的授权码!!!
1.“使用SMTP认证”下的密码需要我们去相应的邮箱获取。
获取步骤如下(以163邮箱为例):
登录163邮箱,点击上方“设置”,点击“POP3/SMTP/IMAP”,开启“IMAP/SMTP服务”和“POP3/SMTP服务”,找到“授权密码管理”,点击“新增授权密码”;接着按照提示步骤操作就可以了。
2.“使用SMTP认证”下的用户名中所填邮箱地址,要与“系统管理员邮箱地址”相同,否则会发送错误
收到邮件
完成以上邮件配置后,我们还需要进入已经构建过的job里去配置接收邮件的地址。在已经构建过的项目test中,点击“配置”
然后在“增加构建后操作步骤”中,选择“E-mail Notification”,最后在“Recipients”中填写邮箱地址并勾选“每次不稳定的构建都发送邮件通知”,保存。
最后在“Recipients”中填写邮箱地址并勾选“每次不稳定的构建都发送邮件通知”,应用保存。
插件email-ext
安装并配置插件“Email Extension Plugin”
插件“Email Extension Plugin”可以实现无论构建成功或失败,都会发送邮件通知构建结果。
安装插件
进入“Manage Jenkins”,然后进入 “Manage Plugins”,找到并安装插件“Email Extension Plugin”,插件安装成功后,重启jenkins。
配置 Extended E-mail Notification
我们要使用 Extended E-mail Notification(email-ext) 去代替 “邮件通知”,所以我们需要先把“邮件通知”里设置的内容删掉
删除邮件通知的配置后,配置Extended E-mail Notification,“SMTP server”中填入“smtp.163.com”;“SMTP Port”中填入端口号为“25”;“SMTP Username”和“SMTP Password”中分别填入邮箱用户名与密码。
然后下滑找到”Default Tiggers”,勾选”Always”,其他保持默认,保存。
配置对应任务
进入任务2.1所创建的项目test,下拉找到“构建后操作”,然后点击“增加构建后操作步骤”,选择“Editable Email Notification”,其中Project Recipient List为接收邮件的收件人,可以在默认内容后面增加额外的收件人邮箱,用英文逗号分隔。
如下图,点击右下角的“Advanced settings”,找到“Triggers”(触发器,设置在什么情况下发送邮件),然后点击下方的“Add Trigger”,增加发邮件的条件,保存。
Jenkins破解管理员密码
学会在服务端破解管理员密码
可以手动设置随机字符串
破解管理员密码
# cd /var/lib/jenkins/users/
# ls -la
# cd admin_3069767462100961470/
# vim config.xml
搜索定位到 <passwordHash>那一行,修改为
<passwordHash>#jbcrypt:$2a$10$usctvlMlqJ8XswbJ0QCcRuZ6ItKL30r0mEXXi5cXCrnWITuyP2E5W</passwordHash>
# systemctl restart jenkins //重启jenkins
新密码为000000
手动设置随机字符串
若不想使用上述的密码,我们也可以自己定义一个随机字符串,进入jenkins界面,点击右上角admin,点击设置,下拉找到“密码”,自己定义一个随机字符串,将自己定义的随机字符串保存下来,位置自由,若以后忘记了密码,可在 /var/lib/jenkins/users/admin 文件中,将字符串修改成自己定义的字符串,这样密码就修改成功了。