通过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。之后只要远程仓库里的源文件的内容发生改变,需要同步到线上则只需要点击该任务的 “立即构建” 即可。
- Linux :MAC 地址克隆方法
- 解决WordPress修改数据库表前缀后无法登陆的问题
- 解决启用WP-Super-Cache后出现的几个问题
- Shell下制作自解压安装包,实现脚本的简单加密
- WordPress(Twenty Ten主题)文章副标题修改教程
- ipvsadm启动报错解决办法,另附ipvsadm详细参数
- Linux:mv 命令的10个实用例子
- Linux优化方法收集与整理
- 常用MySQL语句搜集整理
- ASM 翻译系列第十二弹:ASM Internal amdu - ASM Metadata Dump Utility
- 分享一个Linux无法创建文件夹,但是目录权限却显示正常的问题和解决
- 桌面白屏(Active故障)修复批处理
- ASM 翻译系列第十三弹:ASM 高级知识 - Forcing the issue
- ASM 翻译系列第十四弹:ASM Internal Rebalancing act
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- 最大连续子序列和(最大子数组和)四种最详细的解法
- 玩转 Linux 环境下日期的语法
- dubbo学习之事件通知实践
- Panasonic Programming Contest 2020 A ~~C
- 采用递归生成排列
- UCF Local Programming Contest 2015 A~~H
- python之循环控制语句
- python之结合if条件判断和生成随机数的相关知识,完成石头剪刀布的游戏
- AtCoder Beginner Contest 172
- python的import与 from……import
- 题目 1159: [偶数求和]
- 回溯法求组合问题
- P1567 统计天数
- P1089 津津的储蓄计划(模拟训练)
- 二分练习 --D - Trailing Zeroes (III)