linux 学习笔记-106-jenkins-jenkins 发布 php 代码

发布于 2018-06-06  246 次阅读


jenkins 发布 php 代码

这个实验需要借助 git 仓库

检查与安装必需的插件

linux 学习笔记-106-jenkins-jenkins 发布 php 代码

linux 学习笔记-106-jenkins-jenkins 发布 php 代码

第一个插件为 Git plugin

linux 学习笔记-106-jenkins-jenkins 发布 php 代码

第二个插件为 Publish Over SSH,没安装,需要安装一下

linux 学习笔记-106-jenkins-jenkins 发布 php 代码

linux 学习笔记-106-jenkins-jenkins 发布 php 代码

linux 学习笔记-106-jenkins-jenkins 发布 php 代码

回到服务器,重启一下 jenkins

[root@am-01:~#] systemctl restart jenkins.service

配置 ssh 密钥验证

服务器上生成密钥

[root@am-01:~#] cd /root/.ssh/

[root@am-01:~/.ssh#] 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:

da:9f:bf:01:fb:75:55:63:72:05:f0:e5:95:b1:fd:56 root@am-01

The key's randomart image is:

+--[ RSA 2048]----+

|            ...o*|

|             . +=|

|             ..=E|

|              + =|

|        S .     +|

|       o   o   ..|

|      . . . . . .|

|         . o o . |

|          o.+.   |

+-----------------+

[root@am-01:~/.ssh#] ls

authorized_keys  jenkins  jenkins.pub  known_hosts

[root@am-01:~/.ssh#] cat jenkins

-----BEGIN RSA PRIVATE KEY-----

MIIEowIBAAKCAQEAsasJE2af4iZNiG8BZzQV7S54epIJRMc/+nf74C2pCd24d2bT

xDr0lcfo0EB9/mMX4uDWQREnh5uJlmAntbaQjIWtThpyBB0UmGD4i+h6ci8/fX+E

2EIU+muSRMe/Emj0RXuS+F4Lwmm4XoHfP1XVFATcuc/UdBwC2kE240BK1yIMqbnu

UIJPoF1IBvf+TRGINPRT/8GdnY60c49DOOQurPHRd2okGLf1CgJ1gZdDd5veHaq2

vRJFR3QKhAYtmA6jf+Gbhd5u8teoeYljvwvWhZt4GYs1Np25cxcgJGco+aufoCJj

2d/uKDya4wYtmbX2OKzusR1EPvjawLYLFb7L0QIDAQABAoIBADPtrKpp/WMpFNJC

t6NFev8m7PnOQz1CC3YWqZy9W8HRd0AW4uBg5un8UxTDNNAsgGfElXrRG7+r+0vj

cNfQs3EPBTdlzVtccI+VEDA8U8WZ/7GbmuVmcyE6XbcStssXuAWy96L2QfOh2Mxu

oySs3qmKPkVk9FC3ezH1i6hiOz2jbmXulTWjAapxhVqgTjyub0m7UrQ4KtKcPs85

0LC7LOEwU3IwfuVunBTCn4u2t5lgjktOh/3fyfb+ekYjfvhhDiU4Bl34s+sTX6/S

K3alXy/oeoJ0zxGKeQrMxXl54jRYW6NoM6sNjELmE4WIO5zO7zb7oWJbh+VKQmKx

jmVCqd0CgYEA2RHu3nuCtsHhcSuwn0QrCy5Ke8Ye2IflyNY31GaQyZMwLZQBuqXB

6AweAzct5i0LTqFyVyr4Q2cdSK3848SI0aQ53MpbYYCmIcjGp6gT8nQr0PIGzVx3

SuXrEw57NDgAK0AEIl7kMqxTGrfad5s1ccvF0nuGH1uEudfkkLBvzgMCgYEA0YgX

CbwcTOX6lDtVyyRDHoW2jHC2mjok+pcQrnhbT99nUDf67XB7XqUWkrxNOkZMnnSa

zM7YzaZv8ir1WMvdTDwJ9D6eRx4V9UDwxay1SJ67VNeh5PsSypcXVQ0OX9TCpHpe

VptE+tcDtACDmE+JuahuV52Ktiop+O+3GFd5sJsCgYEAi6a46dPGRbO4SWnVSLG/

i4LtknHk2GOd1rbS1khiL/0MytXkwuLvPE3HZUQzuFkUZDMD78aKUDrfoSmmgBap

+03PmBdr8O+mcifMfoJoytwocFW1QJuTd9EximIPq4m3uhuGTWKFJ4CsOo079SUa

nip+C6tCn5vuaO3Xc6q/U2cCgYBRKA0EUEAF6O3tjC3myNzWbaQPMXkIs4yvIuPr

L+LuRPGXOJeQcAjY18iufRDMiX4TwcZTnaqLvPOPMORmyE+mv3p7h+V2Vkja/ZRE

fGibACA+9GZYcocMwQjggHYY2Cer3Vm84dcN8UoV5j0SOXx21K4ocXTQqfQn33Fj

lD4mEQKBgFpwaHXPR+banHf+GKGYLkVuYJ1yPPJJaY9mvkrmi9s8zUcGzgtO/8Y7

uj6mypc8uCgHMCWM+KBpD1i/PBN8MoXvNgGHfKO/wqwz/YXVBEJr7SejtYIsRXeR

I5NSNeXOpzAQWAMtJPW1grDN8oytYPZg+cRgncun2BRJd0HMN48/

-----END RSA PRIVATE KEY-----

web 页面配置密钥验证

key 填写装了 jenkins 的服务器的私钥,ssh servers 是被 jenkins 做管理的服务器,name 填写被管理机器的名称,hostname 填写被管理机器的 IP 地址,username 填写 root,目录填写根目录即可

先别点击保存,还需要测试一下是否能用

linux 学习笔记-106-jenkins-jenkins 发布 php 代码

测试密钥登陆

拷贝公钥到被管理机器上

[root@am-02:~#] vim /root/.ssh/authorized_keys

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxqwkTZp/iJk2IbwFnNBXtLnh6kglExz/6d/vgLakJ3bh3ZtPEOvSVx+jQQH3+Yxfi4NZBESeHm4mWYCe1tpCMha1OGnIEHRSYYPiL6HpyLz99f4TYQhT6a5JEx78SaPRFe5L4XgvCabhegd8/VdUUBNy5z9R0HALaQTbjQErXIgypue5Qgk+gXUgG9/5NEYg09FP/wZ2djrRzj0M45C6s8dF3aiQYt/UKAnWBl0N3m94dqra9EkVHdAqEBi2YDqN/4ZuF3m7y16h5iWO/C9aFm3gZizU2nblzFyAkZyj5q5+gImPZ3+4oPJrjBi2ZtfY4rO6xHUQ++NrAtgsVvsvR root@am-01

测试是否能用密钥登陆

[root@am-01:~/.ssh#] ssh -i jenkins 172.17.1.242

Last login: Wed Jun  6 18:59:33 2018 from am-01

[root@am-02:~#] exit

logout

Connection to 172.17.1.242 closed.

回到 web 页面测试一下

点击 Test,提示 Success 则配置正确,最后点击应用再点击保存即可

linux 学习笔记-106-jenkins-jenkins 发布 php 代码

linux 学习笔记-106-jenkins-jenkins 发布 php 代码

创建任务

任务名称可以任意取,项目类型我选择第一个

linux 学习笔记-106-jenkins-jenkins 发布 php 代码

linux 学习笔记-106-jenkins-jenkins 发布 php 代码

任务的相关配置

General 模块做个描述就好了

linux 学习笔记-106-jenkins-jenkins 发布 php 代码

源码管理模块

Repository URL 填写仓库地址,如果是私有仓库,还要配置 Credentials,Branch Specifier 配置需要发布的分支,其他的保持默认即可,以后需要用到再说

测试项目地址:https://git.coding.net/aminglinux/aminglinux-book.git

linux 学习笔记-106-jenkins-jenkins 发布 php 代码

构建触发器和构建环境暂时不需要设置,因为这个实验用的是 php,不需要做这两个模块的配置

linux 学习笔记-106-jenkins-jenkins 发布 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”重复以上操作

linux 学习笔记-106-jenkins-jenkins 发布 php 代码

最后点击保存

linux 学习笔记-106-jenkins-jenkins 发布 php 代码

构建

linux 学习笔记-106-jenkins-jenkins 发布 php 代码

linux 学习笔记-106-jenkins-jenkins 发布 php 代码

查看输出

linux 学习笔记-106-jenkins-jenkins 发布 php 代码

linux 学习笔记-106-jenkins-jenkins 发布 php 代码

到 am-02 上检查发布的结果

查看有没有这个目录,并且权限所有者所属组是不是 nobody

[root@am-02:~#] ls /tmp/am-php

D11Z  D12Z  D13Z  D14Z  D15Z  D17Z  D18Z  D19Z  D20Z  D21Z  D22Z  LICENSE  README.md  习题答案.txt

[root@am-02:~#] ls -l /tmp/am-php

总用量 108

drwxr-xr-x 2 nobody nobody    64 6 月   6 22:40 D11Z

drwxr-xr-x 2 nobody nobody  4096 6 月   6 22:40 D12Z

drwxr-xr-x 2 nobody nobody    23 6 月   6 22:40 D13Z

drwxr-xr-x 2 nobody nobody  4096 6 月   6 22:40 D14Z

drwxr-xr-x 2 nobody nobody  4096 6 月   6 22:40 D15Z

drwxr-xr-x 2 nobody nobody    24 6 月   6 22:40 D17Z

drwxr-xr-x 2 nobody nobody    73 6 月   6 22:40 D18Z

drwxr-xr-x 2 nobody nobody   148 6 月   6 22:40 D19Z

drwxr-xr-x 2 nobody nobody    80 6 月   6 22:40 D20Z

drwxr-xr-x 2 nobody nobody  4096 6 月   6 22:40 D21Z

drwxr-xr-x 2 nobody nobody   122 6 月   6 22:40 D22Z

-rw-r--r-- 1 nobody nobody 18044 6 月   6 22:40 LICENSE

-rw-r--r-- 1 nobody nobody   419 6 月   6 22:40 README.md

-rw-r--r-- 1 nobody nobody 66243 6 月   6 22:40 习题答案.txt

在实际环境中,如果对代码做了修改,可以直接点击立即构建,就可以自动的更新原有的代码