转载

通过jenkins构建发布普通网站(jenkins+nginx+svn)

本次实验介绍:

nginx:web网站

svn:代码存储仓库

jenkins:自动化运维工具

开发人员通过将代码提交到svn上,运维人员通过配置jenkins自动发布到nginx目录上。

实验环境:

192.168.0.188 Jenkins

192.168.0.189 nginx

192.168.0.19 svn

Jenkins、nginx、svn环境都已经准备完成,这里不进行再次搭建

步骤:

1.Jenkins安装ssh插件,并配置远程服务器

2.建立项目(job)配置Jenkins

3.将代码上传svn

4.用Jenkins发布文件

5.查看测试结果

1.Jenkins安装ssh插件,并配置远程服务器

在Jenkins系统管理——插件管理

通过jenkins构建发布普通网站(jenkins+nginx+svn)

选择插件publish over ssh插件并安装,已安装则忽略

安装完成后开始配置系统管理——系统配置

翻到最后面,找到SSH Servers 选项然后新增

通过jenkins构建发布普通网站(jenkins+nginx+svn)

测试是可以连接保存即可

释义:

SSH Server配置为Publish Over SSH中运程机的配置,分“基本设置”和“高级设置”两部分。“基本设置”主要是运程机IP、SSHusername、SSHport、连接超时时间等。“高级设置”和大部分“全局设置”中的选项相同。

Name:建立这台机器的名称

Hostname:远程机器的地址,最好是ip地址

Username:用户名

Remote Directory:远程目录

Use password authentication, or use a different key:使用密码连接

高级设置

高级设置里能够设置SSHport、重试时间以及又一次设置“全局设置”中的选项

全局配置:

每一项都能够被SSH Server的设置所覆盖,这种设计有一个优点。在server环境比較规范的情况下,能够省去每个SSH Server分别配置的繁琐步骤。

參数说明

Passphrase:SSH的password

使用username/password登录时为username的password。使用私钥登录时为私钥的password。

Path to key:SSH私钥的文件路径

私钥文件的路径,能够是绝对路径。也能够是相对$JENKINS_HOME的相对路径

Key:私钥

私钥导出后的文本内容

扩展例子:如果不使用密码而使用秘钥远程连接该怎么做呢1.jenkins所在服务器生成公私钥对2.将公钥(idrsa.pub)传到要远程的机器上或者将公钥内容输入到远程机器authorizedkeys文件中(/root/.ssh/authorizedkeys)chmod 600 /root/.ssh/authorizedkeys3.jenkins设置私钥所在路径文件,在输入生成公私钥的密码即可(Passphrase/Password字段需要输入公私钥密码)(Path to key字段输入jenkins所在服务器的私钥文件所在路径)

假设“Key”和“Path to key”都设置,则“Key”的优先级较高,私钥的password是“Passphrase”中设置的内容。

Disable exec:禁止在目标机上运行命令

勾选后将会忽略在Job配置中“Exec command”选项中设置的命令。Jenkins的说明文档中的“The Disable exec in the advanced settings for individual configurations will be ignored.”没有全然理解。从实际效果来看,仅仅要“Disable exec”被勾选后,无论SSH Server中是否勾选“Disable exec”。Job中设置的命令都将补忽略。

2.建立job任务

点击新建任务

输入名称,并选择自由风格项目然后确定

源码管理选择svn

其中

Repository URL:项目的svn地址

Credentials:凭证

点击添加,添加相应用户名即可

选择构建后操作,选择send build artifacts over SSH

通过jenkins构建发布普通网站(jenkins+nginx+svn) 通过jenkins构建发布普通网站(jenkins+nginx+svn)

參数说明:

Name

“系统管理>系统设置”设置的SSH Sverver的名字列表。

Source files

拷贝到运程机上的文件。相对workspace的路径,也支持表达式,如上图中的“* / .war”。

Remove prefix

文件复制时要过滤的文件夹,如上图中的target文件夹。

Remote directory

文件得到到远程机上的文件夹,此文件夹是相对于“SSH Server”中的“Remote directory”的。假设不存在将会自己主动创建。

Exec command

在这里能够填写在运程机器上运行的脚本,如:应用部署脚本

这里是直接将svn发布文件拷到nginx发布目录上,也可以将远程目录修改其他的,然后运行命令拷贝到nginx上也可,这种方法比较安全

这是nginx发布前

通过jenkins构建发布普通网站(jenkins+nginx+svn)

修改文件将文件传到svn

通过jenkins构建发布普通网站(jenkins+nginx+svn)

点击构建

查看日志

通过jenkins构建发布普通网站(jenkins+nginx+svn)

刷新页面,发布成功

通过jenkins构建发布普通网站(jenkins+nginx+svn)
原文  https://blog.51cto.com/jiaxinwang/2465213
正文到此结束
Loading...