- 查看插件:
系统管理
–>插件管理
,“可选插件”是未安装的插件,“已安装”是已经安装的插件,其中勾选为灰色的是不可卸载的插件。
检查是否有“Git plugin”和“Publish over SSH”两个插件,如果没有,在“可选插件”中安装。发现“Publish over SSH”没有,安装它
安装完插件后,直接在linux机器上重启jenkins服务,而不是勾选空闲时重启
# systemctl restart jenkins
重新在浏览器上登录jenkins,并在linux机器上生成一对秘钥
# cd ~/.ssh/
# ls #如果之前有生成过密钥对,那可以直接用,不需要再生成
authorized_keys known_hosts
# ssh-keygen -f ~/.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:
SHA256:VF7nN5V6pPco5DDnm8PUeu8OEg3VMj/IkgfYkqd/Hx4 root@lzx
The key's randomart image is:
+---[RSA 2048]----+
| = . o.o|
| * = +ooo|
| . = = *=.|
| . .oooO =o|
| S .B+.+.o|
| .=ooE.|
| oo=+ o|
| *..+ |
| o ++|
+----[SHA256]-----+
# cat jenkins #查看私钥
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAu+H7NOAvrPYWwNPur64cwZYJz80MZdmQP44KJy1Zcqsfmawt
axjbgzZSPyXSM9fDqo32dR4OR8PdqFdnSDWU8gXl2tgTcsUiy+y+1TB7ZdgzmI8Z
LAAGKQsrWOFMBB9GCfBlAL6eGg4nnsnc4bDT2sJhZuzgfW/qK5AyWSCIm2wvfFw5
1m2WcaslRzNwGkg2cFK4tuY0ZkiF/UfA+YC88RAhSbjFD5FQKLzSHmkZbxbSGC09
cYtsZb3g4VwmkZUEuU/jy5nBUpxv54B6NjkvMxCVx9M/zviiTSZt+yRDaMySISxB
/3Y9FP7R/3Rcf1ZXYGK32hmQ55pDlbcM0gCEFQIDAQABAoIBAD0uSFweiMfc1unx
2W7R1sFfN1C4p8nev+9CNKIvTUpe2Qp0m9GdJZYjsUKo8Ts6jpfSZKgcom/SIzL3
S0WjVR4+t2u9IxAji8I2FKpdgEFY1uxd5MeENn1VCseFjfhlqqv/4RQN/nPjmhlG
CKxhpYs98vPOPQf70phe+1Y0ludtEztiJEM7viIsF8PLlCwf6P7S1JFIXXOAo+xQ
JAHt3AlzUj+HVfq97SbS+cbhuR/MwvIMQs54AsyPOVtt1Q7AOniDw/bnX8JpE9mU
diww6KHn/qQIB0DSWgvfyGwC6qM6C3nUv+EyybdJBcEsYAUH3SgZpBvu3smT2XN9
MCAFegECgYEA524LrSj57hPSKdGO3RT/jVReq0fHJscqSELHAl40lPSKQm+vFK2L
Z20jnQhPg9ebJQjqdkZ/J8EHuwuZjtiqYAeWUERcp5cEEm/BQZ5fB+vYlTZ+QXNa
S6Z9ex2/+qBwY8bJeZR5LPEzVN2cENH8t6FiJO1/csgS3T+KAxnGZoECgYEAz9Ri
CyGwoJs9IpEb3y9Q1AVeFvUQ47XQGJo4xD5nivJ3W/4XApajJl6hXoVp96Z0gXIR
Hhqp+/d4MOlDSeAUPeHcW6gE0h8BYl25fXbvXSpA7rSv8QU+BtQ4vMpsKF5bpRNt
vQjeJrPtHLuFJrOZ6yzov3s4EXlt0AbOBlWXW5UCgYEAvmn6zXRjfxFr3+B97UUz
pnL+mWqrXyqLjXz0BOzB0rUJdPQzV44anvRbUv7dfZrOGcCmOL50LJ9T3wACTlfS
hsR3Vn+IxJMqVIkCtxy5D+lrAAogA3YHmyrXH48wv+N11YJfjtssgF/MXk0f9W7w
wZ3VBJEsRaJ8cvGuejKg3QECgYEAzvoAun1O3mQ8OlSxoVAJ+11tGwftThofqKDO
sAJGNEbNQDyIxfcnfGr54pyTsCOCG/hxu71qVJlchbmJXeVfw1FQl6d5RZnDUyds
N9te/zW5fQFNx4clAsAP0VT26i0ur/PtcjmGpJzEI71NGgH75A7RrQEWEbERAAAG
5qAPIRECgYEAjpNyIsvDYcEtBj/oCQCa3FdPsGqRaYmBZLqJ4nCP5DolYgJkewKx
n5+AIYsXYYKB7W4a0uPKN6gMVVAkm0Icletpf9UpT51uMSR5JpqIwqOFNgI0+NkV
+jlerYcD909WjV3OqrwZm7yPqwa2RPkIfCbeHnXbkAcv+DuWn4L8RdI=
-----END RSA PRIVATE KEY-----
系统管理
–>系统设置
,找到之前安装的Publish over SSH
插件,Passphrase
填写之前生成秘钥时设置的密码,没有则留空,Path to key
留空,Key
粘贴/root/.ssh/jenkins
文件内容。
然后新增SSH Servers
,填入对应的hostname,这就是PHP代码要发布的机器
接下来还需要把公钥拷贝到对应的hostname机器(lzx1)上
# cat jenkins.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC74fs04C+s9hbA0+6vrhzBlgnPzQxl2ZA/jgonLVlyqx+ZrC1rGNuDNlI/JdIz18OqjfZ1Hg5Hw92oV2dINZTyBeXa2BNyxSLL7L7VMHtl2DOYjxksAAYpCytY4UwEH0YJ8GUAvp4aDieeydzhsNPawmFm7OB9b+orkDJZIIibbC98XDnWbZZxqyVHM3AaSDZwUri25jRmSIX9R8D5gLzxECFJuMUPkVAovNIeaRlvFtIYLT1xi2xlveDhXCaRlQS5T+PLmcFSnG/ngHo2OS8zEJXH0z/O+KJNJm37JENozJIhLEH/dj0U/tH/dFx/VldgYrfaGZDnmkOVtwzSAIQV root@lzx
到lzx1上粘贴jenkins.pub
# cd ~/.ssh/
# ls
authorized_keys
# vim authorized_keys #写入下面内容
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC74fs04C+s9hbA0+6vrhzBlgnPzQxl2ZA/jgonLVlyqx+ZrC1rGNuDNlI/JdIz18OqjfZ1Hg5Hw92oV2dINZTyBeXa2BNyxSLL7L7VMHtl2DOYjxksAAYpCytY4UwEH0YJ8GUAvp4aDieeydzhsNPawmFm7OB9b+orkDJZIIibbC98XDnWbZZxqyVHM3AaSDZwUri25jRmSIX9R8D5gLzxECFJuMUPkVAovNIeaRlvFtIYLT1xi2xlveDhXCaRlQS5T+PLmcFSnG/ngHo2OS8zEJXH0z/O+KJNJm37JENozJIhLEH/dj0U/tH/dFx/VldgYrfaGZDnmkOVtwzSAIQV root@lzx
lzx上登录lzx1测试
# ssh lzx1
root@lzx1's password:
Last login: Thu Sep 20 20:51:25 2018 from 192.168.33.1
#exit
logout
Connection to lzx1 closed.
[root@lzx .ssh]# #ssh登录没问题
浏览器上测试连接有没有问题,点击Test Configuration
,如果没问题,左侧会显示Success,如下图
这就说明我们前面的配置是没问题的。点击应用
,出现“已保存”
如果有多台web server ,可以继续新增,重复以上操作,最后点击保存
。
- 新建任务:
回到首页,点击创建一个新任务
,自定义任务名称,选择构建一个自由风格的软件项目
点击确定
描述
自定义;源码管理
选择Git
(如果使用SVN就选择Subversion
);Repository URL
选择自己公共仓库的地址,这里为了方便我使用别人的公共仓库;Branches to build
默认为*/master,意思是发布代码的分支为master分支;构建触发器
和构建环境
留空;构建
选择Send files or execute commands over SSH
,Name
选择对应的服务器,Source files
填入**/**
,表示要发布的代码为全部文件,Remote directory
填入/tmp/jenkins_test(自定义一个存放PHP代码的文件夹名),Remove prefix
和Exec command
可以留空
点击Add Server
可以增加更多台服务器,在生产环境下通常也是多台服务器一起发布代码。点击保存
点击左侧立即构建
,会出现构建历史
,其中#1
表示第一次构建
点击#1
,点击控制台输出
可以查看构建成功,通常构建完,不管是成功还是失败都会有邮件通知。这里因为没有配置邮件,所以没办法接收到邮件。
到lzx1上查看
# ll !$
ll /tmp/jenkins_test/
total 100
drwxr-xr-x 2 root root 66 Sep 21 02:42 D11Z
drwxr-xr-x 2 root root 260 Sep 21 02:42 D12Z
drwxr-xr-x 2 root root 24 Sep 21 02:42 D13Z
drwxr-xr-x 2 root root 4096 Sep 21 02:42 D14Z
drwxr-xr-x 2 root root 4096 Sep 21 02:42 D15Z
drwxr-xr-x 2 root root 25 Sep 21 02:42 D17Z
drwxr-xr-x 2 root root 76 Sep 21 02:42 D18Z
drwxr-xr-x 2 root root 155 Sep 21 02:42 D19Z
drwxr-xr-x 2 root root 83 Sep 21 02:42 D20Z
drwxr-xr-x 2 root root 200 Sep 21 02:42 D21Z
drwxr-xr-x 2 root root 128 Sep 21 02:42 D22Z
-rw-r--r-- 1 root root 18044 Sep 21 02:42 LICENSE
-rw-r--r-- 1 root root 419 Sep 21 02:42 README.md
-rw-r--r-- 1 root root 66243 Sep 21 02:42 习题答案.txt
和我们发布的源是一致的,如下图
如果在源上面做了变更,继续点击立即构建
,如果构建成功,那么在目标机器上也可以看到变更的内容。