• 欢迎来到本博客,希望可以y一起学习与分享

Jenkins自动发布代码实战篇

笔记 benz 2年前 (2019-11-07) 22次浏览 0个评论 扫描二维码
文章目录[隐藏]

一、检查插件是否安装并安装插件

在通过Jenkins发布php代码之前,我们首先需要在Jenkins服务的web页面上检查一下 “Git plugin” 和 “Publish Over SSH” 两个插件是否已安装:

“系统管理” → “管理插件” → “已安装”,然后搜索Git plugin看看是否已安装,一般这个插件都是默认安装的:

然后到 “可选插件” 里安装 Publish Over SSH 插件:


安装完插件后,直接在linux机器上重启jenkins服务,而不是勾选“空闲时重启”
重启Jenkins服务:
docker restart jenkins_01

确保两个插件都安装好。

二、配置密钥认证

在Jenkins服务器上生成密钥对

进入到Jenkins容器中:docker exec -it jenkins_01 bash,执行命令:ssh-keygen -t rsa 在Jenkins上生成一对秘钥

执行命令:ssh-copy-id 远程主机IP地址把jenkins本地的ssh公钥文件安装到远程主机对应的账户下

远程主机创建对应的用户



三、配置Publish over SSH插件

系统管理–>系统设置,找到之前安装的Publish over SSH插件,Passphrase填写之前生成秘钥时设置的密码,没有则留空,Path to key留空,Key粘贴jenkins容器的私钥文件内容:cat /var/jenkins_home/.ssh/id_ras


四、构建项目

回到首页,点击“创建一个新任务”,自定义任务名称,选择“构建一个自由风格的软件项目”


配置项目名称与描述:

配置远程仓库的地址:

构建触发器,以及构建环境都不需要配置,因为我们发布的是php代码。“构建” ,最核心的一步,选择 “Send files or execute commands over SSH” :

简单说明:

  • Name :选择需要的服务器
  • Source files: 需要上传的文件。支持通配符。需要特别注意的是,需要上传的文件必须位于当前的workspace中,否则会上传失败。
  • Remove prefix:移除指定前缀。例如我指定了移除test,这个文件会直接上传到/home/test/html/下,否则会上传到/home/test/html/test下。
  • Remote directory:远程目录。注意! 此目录是基于之前设置服务器时设置远程目录的,即这里的目录是位于服务器设置目录下的相对目录。
  • Exec command:需要执行的命令。这里不做太多说明。

设置完成后点击 “保存”,就可以使用这个刚刚创建的任务去工作了。
回到首页,点击左面的 “立即构建” ,就能把git上的代码发布到指定的服务器上:

构建输出完成

进阶:php源码线上发布(发布、回滚)

实现功能:

# -1-代码发布

# -2-版本回滚(通过git服务器版本切换再rsync同步到服务器上完成回滚)

# -3-添加git tag版本标签

# -4-删除git tag版本标签

# -5-代码回滚(通过发布时拷贝的备份文件恢复完成回滚)

环境介绍
线下服务器:192.168.0.210 安装了docker jenkins 、gitblit(非docker)

线上服务器:39.108.100.130

实现思路简介
在192.168.0.210服务器搭建好gitblit,然后在docker jenkins的映射工作目录上拉取git代码,并使用git tag标记发布版本号,再通过rsync命令同步到39.108.100.130服务器上对应的发布目录上。回滚的话,将git代码切换到上一个版本号代码,再通过rsync同步到线上服务器上就可以了。 我这里功能做得完善些,所以设置步骤会比较多。
创建好后打开项目–>再点击配置

设置构建包数和保留天数等

参数构建化过程(我这里设置了几个功能选项)


Git源码管理

我在192.168.0.210服务器上做了ssh免密,这里的设置主要是为Tag这个选项参数读取git版本号用。

构建shell

shell 代码如下 :

配置项根据实际情况修改填写

实现功能:

# -1-代码发布

# -2-版本回滚(通过git服务器版本切换再rsync同步到服务器上完成回滚)

# -3-添加git tag版本标签

# -4-删除git tag版本标签

# -5-代码回滚(通过发布时拷贝的备份文件恢复完成回滚)

注意:jenkins_workspace=”/var/jenkins_home/workspace” 这个是docker jenkins 默认的可读写目录

以上有个调用39.108.100.130服务器的备份脚本如下:

# 备份代码(在远程服务器上/usr/local/jenkins目录下创建脚本backups131.sh脚本)
last_version=tail -1 $on_log | awk -F "::" '{print $2}'
$ssh_local $ssh_remote “/data/shell/codeBAK.sh $last_version”

设置完成后可以开始测试

五、配置邮箱

系统管理 → 系统设置,找到邮件通知进行配置,这里我使用的是QQ邮箱


收到了,邮件配置成功。点击保存,进入到之前的任务中,点击配置

找到构建后操作,选择E-mail Notification,Recipients这里填入接收邮件的邮箱地址

勾选保持默认即可,点击保存。
现在点击“立即构建”,看是否能接收邮件邮件收到,如果收到邮件,那么邮箱配置成功。
使用自带的邮箱通知功能有一点不好,只有构建失败才会发邮件提示,我想让它不管构建成功还是失败都发邮件提示。

使用插件email-ext配置邮件

想让它不管构建成功还是失败都发邮件来提示,就必须要安装一个插件,该插件名字是Email Extension Plugin。如果你是按照上面步骤来的,那么该插件就已经安装。系统管理 → 插件管理查看是否安装此插件,没有就安装。

系统管理 → 系统设置 → Extended E-mail Notification,填写SMTP server,勾选Use SMTP Authentication,再填写User NamePassword,Password这里填邮箱授权码,然后SMTP port这里填25


往下拉,定位到Default Triggers,选择always,表示不管什么情况都会发邮件提示。之后再清空之前设置的邮箱通知,应用、保存即可


打开任务(我这里是server_01)→ 配置,去掉构建后操作,点击增加构建后操作步骤,选择Editable Email Notification,在Project Recipient List那里添加自己的邮箱,然后点击Advanced Setting,定位到Triggers,可以在Add Trigger处增加发邮件的条件


现在可以测试,看是否能接收邮件。

破解管理员密码

人难免会犯些错误,如果我们不小心忘记了管理员密码,我们如何去修改回来呢?

Jenkins服务器上编辑admin配置文件:

重启服务,进入浏览器界面修改新的管理员密码。
回到浏览器界面,使用123456去登录,系统管理 → 管理用户 → admin右侧设置齿轮图标,设置新的管理员密码,应用、保存即可

参考

Jenkins发布PHP代码
Jenkins入门(一)
docker jenkins+gitblit php源码线上发布(发布、回滚)


文章 Jenkins自动发布代码实战篇 转载需要注明出处
喜欢 (0)

您必须 登录 才能发表评论!