专栏首页程序猿的大杂烩通过Jenkins发布php代码

通过Jenkins发布php代码

笔记内容:通过Jenkins发布php代码 笔记日期:2018-02-26

26.4/26.5 通过Jenkins发布php代码

我们都知道Jenkins是一个用于持续集成的工具,所以本文简单介绍一下如何通过Jenkins来发布php代码到远程的机器上,实验环境如下: 两台机器,一台安装了Jenkins作为Jenkins服务器,一台作为远程的服务器:

  • 192.168.77.130 Jenkins服务器
  • 192.168.77.128 远程服务器
  • 一个远程的公开的git仓库(php代码在这个仓库里)

如果没有安装过Jenkins的话,可以参考我另一篇关于安装Jenkins的文章。

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

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

然后再搜索Publish Over SSH,可以看到如果没有安装是搜索不到的:

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

安装完成:

重启Jenkins服务:

systemctl restart jenkins.service

确保两个插件都安装好后,点击“系统管理” → “系统设置”,下拉页面,大概在网页的最下面可以找到 “Publish Over SSH” :

然后在服务器上先生成一对密钥:

[root@server ~]# ssh-keygen -f /root/.ssh/jenkins
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/jenkins.
Your public key has been saved in /root/.ssh/jenkins.pub.
The key fingerprint is:
75:f0:ac:f1:56:6d:f4:a8:9c:d5:57:9b:e8:e3:5f:83 root@server
The key's randomart image is:
+--[ RSA 2048]----+
|          .     o|
|           +  .==|
|          o +.+o*|
|         . *.= ..|
|        S . *o   |
|           .. o  |
|             E ..|
|              . o|
|               . |
+-----------------+
[root@server ~]# ls .ssh/
id_rsa           jenkins      jenkins.pub
authorized_keys  id_rsa.pub  
[root@server ~]# 

生成密钥对后,首先把公钥拷贝到远程的机器上去,也就是把公钥的内容粘贴到 .ssh/authorized_keys 文件里,和我们之前配置远程登录的密钥验证是一样的。

拷贝完公钥之后,我们来使用以下命令手动测试一下能否通过ssh登录远程的机器:

ssh -i .ssh/jenkins 192.168.77.128

能正常登录则代表没有问题,如果出现让你出入用户密码的情况则是密钥没有配置成功,配置成功的情况下登录是不需要密码的。

完成测试确保能够正常通过ssh登录远程机器后,接着就是把私钥的内容粘贴到 “Key” 这一栏里:

然后完成远程机器的配置,点击 “Apply” 后如果不需要再继续添加远程机器则点击 “保存” 即可:

注:Jenkins SSH Key 这一栏默认会使用Jenkins管理员admin账户的密码,可以不填则设置为空密码。


以上我们配置完了插件以及远程机器,现在就可以开始新建任务了:

配置项目名称与描述:

配置远程仓库的地址:

构建触发器,以及构建环境都不需要配置,因为我们发布的是php代码:

最后就是 “构建” ,最核心的一步,选择 “Send files or execute commands over SSH” :

简单说明:

  • SSH Server,Name 选择对应的服务器,Transfers, Source files填写**/**,表示全部文件
  • Remove prefix可以指定截掉的前缀目录,这里留空即可,Remote directory指定远程服务器上代码存放路径,比如/data/wwwroot/www.aaa.com,Exec command为文件传输完成后要执行的命令,比如可以是更改文件权限的命令,设置完成后点击 “Add Transfer Set”,如果还有另外的机器,可以点击 “Add Server”重复以上操作

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

构建中:

构建完成:

点击查看输出日志:

输出日志如下:

到远程机器上,看看是否已经存在jenkins_test这个目录:

[root@client ~]# ll /tmp/jenkins_test/
总用量 108
drwxr-xr-x 2 nobody nobody    64 2月  26 15:04 D11Z
drwxr-xr-x 2 nobody nobody  4096 2月  26 15:04 D12Z
drwxr-xr-x 2 nobody nobody    23 2月  26 15:04 D13Z
drwxr-xr-x 2 nobody nobody  4096 2月  26 15:04 D14Z
drwxr-xr-x 2 nobody nobody  4096 2月  26 15:04 D15Z
drwxr-xr-x 2 nobody nobody    24 2月  26 15:04 D17Z
drwxr-xr-x 2 nobody nobody    73 2月  26 15:04 D18Z
drwxr-xr-x 2 nobody nobody   148 2月  26 15:04 D19Z
drwxr-xr-x 2 nobody nobody    80 2月  26 15:04 D20Z
drwxr-xr-x 2 nobody nobody  4096 2月  26 15:04 D21Z
drwxr-xr-x 2 nobody nobody   122 2月  26 15:04 D22Z
-rw-r--r-- 1 nobody nobody 18044 2月  26 15:04 LICENSE
-rw-r--r-- 1 nobody nobody   419 2月  26 15:04 README.md
[root@client ~]# 

如上,可以看到文件都同步成功了,而且文件的属主属组也是我们设置的nobody。之后只要远程仓库里的源文件的内容发生改变,需要同步到线上则只需要点击该任务的 “立即构建” 即可。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 正则表达式及grep命令

    正则就是各种各样的字符组合在一起形成的一串有规律的字符串,编程语言、shell脚本都需要用到正则表达式,可以利用正则来完成一些复杂的需求。

    端碗吹水
  • Mybatis动态SQL

    通过修改对象属性的方式,可以满足大多数的数据传输对象(Data Transfer Object,DTO)以及绝大部分领域模型的要求。 但有些情况下你想使用不可变...

    端碗吹水
  • 第三个页面:构建新闻详情页面

    在编写从文章列表跳转到新闻详情页的代码之前,先来修改一下之前的页面,之前我们编写了两个模板文件,但是还有两个细节没有完善好,一个是post.wxss中的.pos...

    端碗吹水
  • 给网站配置免费的HTTS证书

    最近看到网上说 https 的网站 Google 会优先收录,所以就抽时间记录下配置博客的过程。

    搜云库技术团队
  • Verilog实现偶数、奇数、半整数、分数(小数)分频,画电路图用D触发器实现分频

    通常我们说对原时钟进行N分频,即分频后的时钟的一个周期是原时钟周期的N倍。N可以为偶数、奇数、半整数、分数(小数)。

    FPGA开源工作室
  • Java代码规范

    本Java代码规范以SUN的标准Java代码规范为基础,为适应我们公司的实际需要,可能会做一些修改。本文档中没有说明的地方,请参看SUN Java标准代码规范。...

    WindWant
  • 一起挖矿病毒事件的深度分析

    有了攻击脚本的话,我们就能更加快速的了解他的攻击方式了,所以让我们来分析下脚本到底干了些什么:

    FB客服
  • NeurIPS 2019 程序委员会主席发声明:19 篇论文因一稿多投被拒收!

    本文是 NeurIPS 2019 程序委员会主席对近期作者反馈阶段工作的几点说明,主要介绍了审稿进度以及本届 NeurIPS 为防止一稿多投现象做所的努力,并宣...

    AI科技评论
  • keepalived(4)——演练故障出现时keepalived的状态

    keepalived的主要作用体现在处理单点故障,像前面我们设置的两台主机,就可以进行故障演练,现在的状态是master主机开启着keepalived:

    gzq大数据
  • 分布式架构技术

    参考:https://www.cnblogs.com/expiator/p/10201004.html

    hhss

扫码关注云+社区

领取腾讯云代金券