ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Jenkins的安装与部署

2022-05-16 11:01:58  阅读:144  来源: 互联网

标签:插件 部署 点击 ssh jenkins Jenkins 安装


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 文件中,将字符串修改成自己定义的字符串,这样密码就修改成功了。

 

标签:插件,部署,点击,ssh,jenkins,Jenkins,安装
来源: https://www.cnblogs.com/wangluf/p/16276127.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有