如何用Jenkins实现自动化部署svn更新代码

如何用Jenkins实现自动化部署svn更新代码,第1张

Jenkins 配置svn自动部署

Jenkins 环境搭建好之后,就需要配置项目了,这里也介绍一下。

新建一个项目

这里写描述

点击新建

输入项目名称

选择:构建一个自由风格的软件项目

点击 OK

这里写描述

输入项目描述

配置构建保留天数和最大个数

这里写描述

输入svn 项目地址

选择用户名&密码 #如果没有就,点击add 自己添加一个

这里写描述

配置每天 1:15AM 构建

配置每次 SCM 版本变更,构建

这里写描述

配置每次构建前,删除目录,放置构建产生的文件导致,svn 不能正常更新

这里写描述

添加构建:

这里写描述

cd /home/xxx/jenkins/workspace/fft-bill-web/ && ant #打开工作目录,项目会被更新到这个目录下, 执行ant 命令进行打包

cd /home/xxx/jenkins/workspace/fft-bill-web/release/ #打开war 目录,打好的包会被放到这个目录下

mv xxxx-1000war xxxwar #给war包重新命名

scp xxxwar user@192xxxxxxxxx:/opt/tomcat-xxxx/webapps #把war包发送到指定服务器目录

ssh user@192xxxxxxxxx "cd /xxx/xxx/tomcat-xxxx/bin && sh shutdownsh" #远程关闭 tomcat

ssh user@192xxxxxxxxx "cd /xxx/xxx/tomcat-xxxx/bin && sh startupsh" #远程命令启动 tomcat

1

2

3

4

5

6

1

2

3

4

5

6

到这里基本就配置完成了,点击立即构建,试一下。

后面还可以添加一些构建后的操作步骤,例如发送邮件等等。

主机有什么好处

随着互联网的发展,云计算作为一种新型计算模式得到了广泛的应用。其中,云主机作为云计算的基础设施之一,受到了越来越多企业和个人的关注。那么,云主机到底有哪些好处呢?本文将从几个方面详细介绍云主机的好处。

良好的稳定性

相比传统的物理主机,云主机提供商将用户的数据和资源分布在不同的物理服务器上。若某一物理服务器故障,云主机服务商会自动将用户的数据和资源迁移到其他物理服务器上,从而保证用户的业务不会受到影响。此外,云主机服务商还可以通过负载均衡等技术,将用户的业务均衡地分配到不同的物理服务器上,进一步提高云主机的稳定性。

强大的灵活性

云主机的灵活性是它最大的优势之一。在传统的物理主机中,用户需要在购买服务器时就提前规划好服务器的配置和资源。但是,在实际应用中,很难预计到业务的实际需求,这就导致了很多资源的浪费。而云主机则可以根据用户的实际需求动态调整其配置和资源,从而实现了资源的有效利用。另外,云主机还支持自动化部署,用户可以通过脚本自动化地完成应用程序的部署和升级,从而提高了效率。

低廉的维护成本

云主机的另一个优势是其维护成本相对较低。在传统的物理主机中,用户需要自己独立完成服务器的维护和管理工作,包括软件和硬件的维护、安全防护和备份恢复等等。这不仅需要高超的技术水平,还需要花费大量的时间和精力。而云主机则由云服务商提供一体化的服务,用户只需要支付相应的费用,就可以享受到完整的服务,从而将大量的维护工作交给服务商处理,将自己的精力聚焦到业务本身上。

总结

综上所述,云主机作为云计算的基础设施之一,具有良好的稳定性、强大的灵活性和低廉的维护成本等优势。这些优势不仅可以帮助企业实现业务数字化转型,还可以帮助个人更快捷、更高效地建立自己的网站和互联网应用。相信随着云计算和云主机技术的不断成熟,其应用场景和应用效果也将越来越完善和广泛。

三种注册方式

Puppet注册方式基本上有三种:手动注册,自动注册和预签名注册

1手动注册

手动注册是由Agent端先发起证书申请请求,然后由Puppet server端确认证书方可注册成功,这种注册方式安全系数中等,逐一注册(puppet cert --sign certname)在节点数量较大的情况下是比较麻烦的,效率也低,批量注册(puppet cert --sign --all)效率很高,一次性便可注册所有的Agent的请求,但是这种方式安全系数较低,因为错误的请求也会被注册上。

2自动注册

这种注册方式简单来讲是通过Puppet master端的ACL列表进行控制的,安全系统较低,也就是说符合预先定义的ACL列表中的所有节点请求不需要确认都会被自动注册上,也就是说你只需要知道ACL列表要求,其次能和PuppetMaster端通信便可轻易注册成功。当然,它的最大优点就是效率非常高

(1)查询认证情况

代码如下:

root@101133:puppet# puppet cert --list --all

+ "agentdomaincom"     (SHA256) 3F:8E:AE:B8:04:2B:51:9B:7A:B3:1E:86:C0:21:3E:81:D6:2A:55:A4:17:15:CA:5E:7A:8F:95:EC:D3:83:41:C0

+ "localhost"            (SHA256) E4:F5:F3:A9:99:E9:4D:11:53:87:BE:47:95:4C:98:48:58:2D:3D:80:7E:9C:D9:C2:36:93:56:B2:EA:A0:F1:7B

+ "puppetdomaincom"    (SHA256) 5A:E1:80:AA:76:B6:81:22:55:B7:28:4B:AB:7C:B9:87:A8:DD:7E:3A:31:DF:0C:5A:61:8F:4B:D2:16:A4:B6:BF (alt names: "DNS:puppet", "DNS:puppetdomaincom")

(2)在master上清除客户端已经agent注册信息的证书

代码如下:

root@101133:puppet# puppet cert --clean agentdomaincom

Notice: Revoked certificate with serial 7

Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/ca/signed/agentdomaincompem'

Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/certs/agentdomaincompem'

(3)在agentdomaincom端删除注册过的证书

代码如下:

root@101133:puppet# puppet cert --clean agentdomaincom

Notice: Revoked certificate with serial 7

Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/ca/signed/agentdomaincompem'

Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/certs/agentdomaincompem'

(4)在Puppet master端编写ACL列表

代码如下:

root@101133:puppet# cat autosignconf

domaincom

root@101133:puppet# /etc/initd/puppetmaster restart

Stopping puppetmaster:             [  OK  ]

Starting puppetmaster:             [  OK  ]

(5)客户端申请注册证书

代码如下:

root@101134:ssl# puppet agent --test

Info: Creating a new SSL key for agentdomaincom

Info: Caching certificate for ca

Info: csr_attributes file loading from /etc/puppet/csr_attributesyaml

Info: Creating a new SSL certificate request for agentdomaincom

Info: Certificate Request fingerprint (SHA256): FD:70:31:87:C6:44:EC:8D:18:0D:F5:10:E3:CE:5B:DC:EA:31:BD:BC:8C:C7:B2:80:F7:7E:2C:F2:4E:FB:12:90

Info: Caching certificate for agentdomaincom

Info: Caching certificate_revocation_list for ca

Info: Caching certificate for ca

Info: Retrieving pluginfacts

Info: Retrieving plugin

Info: Caching catalog for agentdomaincom

Info: Applying configuration version '1418292313'

Notice: /Stage[main]/Test/File[/tmp/agenttxt]/ensure: defined content as '{md5}fc3ff98e8c6a0d3087d515c0473f8677'

Notice: Finished catalog run in 013 seconds

(6)服务端查看证书

代码如下:

root@101133:puppet# puppet cert --list --all

+ "agentdomaincom"  (SHA256) FE:04:96:32:46:A4:54:BF:A9:4F:20:CA:EF:7E:F7:C6:A6:88:34:4A:D9:7E:50:54:FA:C0:10:29:87:F9:1C:6E

+ "clientdomaincom" (SHA256) E3:B4:46:90:DF:85:37:77:48:BB:F9:FD:9F:13:DE:52:2F:00:1C:71:A3:BC:C2:E2:A5:34:4F:01:DB:27:02:F5

+ "localhost"         (SHA256) E4:F5:F3:A9:99:E9:4D:11:53:87:BE:47:95:4C:98:48:58:2D:3D:80:7E:9C:D9:C2:36:93:56:B2:EA:A0:F1:7B

+ "puppetdomaincom" (SHA256) 5A:E1:80:AA:76:B6:81:22:55:B7:28:4B:AB:7C:B9:87:A8:DD:7E:3A:31:DF:0C:5A:61:8F:4B:D2:16:A4:B6:BF (alt names: "DNS:puppet", "DNS:puppetdomaincom")

3预签名认证

预签名注册是在agent端未提出申请的情况下,预先在puppet master端生成agent端的证书,然后复制到节点对应的目录下即可注册成功,这种方式安全系数最高,但是操作麻烦,需要提前预知所有节点服务器的certname名称,其次需要将生成的证书逐步copy到所有节点上去。不过,如果你的系统中安装了kickstart或者cobbler这样的自动化工具,倒是可以将证书部分转换成脚本集成到统一自动化部署中注:生产环境中建议此方式进行注册,既安全又可靠

(1)查询认证情况

代码如下:

root@101133:puppet# puppet cert --list --all

+ "agentdomaincom"     (SHA256) 3F:8E:AE:B8:04:2B:51:9B:7A:B3:1E:86:C0:21:3E:81:D6:2A:55:A4:17:15:CA:5E:7A:8F:95:EC:D3:83:41:C0

+ "localhost"            (SHA256) E4:F5:F3:A9:99:E9:4D:11:53:87:BE:47:95:4C:98:48:58:2D:3D:80:7E:9C:D9:C2:36:93:56:B2:EA:A0:F1:7B

+ "puppetdomaincom"    (SHA256) 5A:E1:80:AA:76:B6:81:22:55:B7:28:4B:AB:7C:B9:87:A8:DD:7E:3A:31:DF:0C:5A:61:8F:4B:D2:16:A4:B6:BF (alt names: "DNS:puppet", "DNS:puppetdomaincom")

(2)在master上清除客户端已经agent注册信息的证书

代码如下:

root@101133:puppet# puppet cert --clean agentdomaincom

Notice: Revoked certificate with serial 7

Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/ca/signed/agentdomaincompem'

Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/certs/agentdomaincompem'

(3)在agentdomaincom端删除注册过的证书

代码如下:

root@101133:puppet# puppet cert --clean agentdomaincom

Notice: Revoked certificate with serial 7

Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/ca/signed/agentdomaincompem'

Notice: Removing file Puppet::SSL::Certificate agentdomaincom at '/var/lib/puppet/ssl/certs/agentdomaincompem'

(4)puppet server端预先生成agent证书

代码如下:

puppetca --generate  agentdomaincom

(5)agent节点生成目录结构

代码如下:

puppet agent --test

(6)puppet master端copy证书到agentdomaincom上

代码如下:

root@101133:puppet#scp /var/lib/puppet/ssl/private_keys/agentdomaincompem  agentdomaincom:/var/lib/puppet/ssl/private_keys/

root@101133:puppet#scp /var/lib/puppet/ssl/certs/agentdomaincompem  agentdomaincom:/var/lib/puppet/ssl/certs/

root@101133:puppet#scp /var/lib/puppet/ssl/certs/capem  agentdomaincom:/var/lib/puppet/ssl/certs/capem

常用命令

1puppet master

puppet master 默认是以Ruby内建的WEBRick在后台运行的守护进程,同样也可以采用最常用的Web服务器apache和nginx替换WEBRick以提升性能puppet master主要功能是编译配置文件,文件,模版,节点的自定义插件

代码如下:

root@101133:nodes# puppet master --help

puppet master [-D|--daemonize|--no-daemonize] [-d|--debug] [-h|--help]

 [-l|--logdest syslog|FILE|console] [-v|--verbose] [-V|--version]

 [--compile NODE-NAME]

--daemonize: #-D发送到后台守护进程,默认选项

--no-daemonize: #不发送到后台守护进程

--debug: #完整调试

--help: #输出帮助

--logdest: #日志发送方式,默认是syslog

--verbose: #显示详细信息

--version: #打印puppet版本

--compile: #以JSON的方式输出编译的catalog

使用--getconfig输出默认配置文件

代码如下:

root@101133:puppet# puppet master --genconfig puppetconf

puppet不启用后台守护进程的方式运行

代码如下:

root@101133:puppet master --no-daemonize --verbose

2puppet agent

puppet agent 在每个节点以守护进程方式运行,通常每30分钟向master请求一次,以确认新的信息并询问是否有变更然后负责运行编译好的catalog代码

代码如下:

root@101134:tmp# puppet agent --help

puppet agent [--certname NAME] [-D|--daemonize|--no-daemonize]

 [-d|--debug] [--detailed-exitcodes] [--digest DIGEST] [--disable [MESSAGE]] [--enable]

 [--fingerprint] [-h|--help] [-l|--logdest syslog|eventlog|FILE|console]

 [--masterport PORT] [--no-client] [--noop] [-o|--onetime] [-t|--test]

 [-v|--verbose] [-V|--version] [-w|--waitforcert SECONDS]  

使用--noop参数,puppet运行catelog,但不执行配置

root@101134:tmp# puppet agent --noop

3puppet apply

puppet apply 是puppet运行命令,主要在检测manifests时或在没有网络连接的情况下使用不同于puppet agent,puppet apply在运行时不会连接master

代码如下:

root@101134:tmp# puppet apply --help

puppet apply [-h|--help] [-V|--version] [-d|--debug] [-v|--verbose]

 [-e|--execute] [--detailed-exitcodes] [-L|--loadclasses]

 [-l|--logdest syslog|eventlog|FILE|console] [--noop]

 [--catalog catalog] [--write-catalog-summary] file  

(1) 将输出信息输出到日志文件

代码如下:

root@101133:manifests# puppet apply -l /tmp/initpp initpp

root@101133:manifests# cat /tmp/initpp

Fri Dec 12 16:17:46 +0800 2014 Puppet (notice): Compiled catalog for puppetdomaincom in environment production in 004 seconds

Fri Dec 12 16:17:47 +0800 2014 Puppet (notice): Finished catalog run in 004 seconds

4puppet cert

它用于管理本地证书,查看未签名证书,签署证书,废除证书,清除证书

代码如下:

puppet cert action [-h|--help] [-V|--version] [-d|--debug] [-v|--verbose]

 [--digest digest] [host]  

常用操作:

clean #清除证书

fingerprint #打印证书指纹

generate #生成客户端证书

list #查看认证客户端列表

print #打印主机证书的全文信息

revoke #废除已认证的主机

sign #签署认证

verify #验证本地指定的认证

命令参数:

--all #执行所有操作,包括'sign','clean', 'list', and 'fingerprint'

--digest #设置证书指纹加密的方式

--debug #启用完整调试模式|

--verbose #显示详细信息

--version #显示版本

(1)查看请求认证的客户端列表

代码如下:

root@101133:nodes# puppet cert list

(2)为主机agentdomincom签署验证

代码如下:

root@101133:nodes# puppet cert sign agentdomaincom

(3)列出所有签名和未签名的证书

代码如下:

root@101133:nodes# puppet cert list --all

+ "agentdomaincom"  (SHA256) 3C:82:6A:E2:9B:8B:8F:8A:ED:C9:83:EB:64:47:6C:91:E5:8E:86:A6:B3:D7:1D:E5:4E:39:4D:04:5A:21:C5:86  #符号+表示已经签署过认证

"clientdomaincom" (SHA256) E3:B4:46:90:DF:85:37:77:48:BB:F9:FD:9F:13:DE:52:2F:00:1C:71:A3:BC:C2:E2:A5:34:4F:01:DB:27:02:F5

(4)给所有未签署认证的请求颁发认证:

代码如下:

root@101133:nodes# puppet cert sign --all

(5)查看所有已签署认证的客户端列表

代码如下:

root@101133:nodes# puppet cert list --all

+ "agentdomaincom"  (SHA256) 3C:82:6A:E2:9B:8B:8F:8A:ED:C9:83:EB:64:47:6C:91:E5:8E:86:A6:B3:D7:1D:E5:4E:39:4D:04:5A:21:C5:86

5puppet kick

它用于连接到agent客户端主动运行puppet agent --test命令类似主动触发配置

1 在Ubuntu中安装Java8 以下是一个简单的安装方法。 $ sudo add-apt-repository ppa:webupd8team/java $ sudo apt-get update $ sudo apt-get install oracle-java8-installer $ java -version java version "180_60" Java(TM) SE Runtime En

上一章: 运维部署自动化实践(一)利用PXE远程自动化安装Ubuntu1604 server

在上文中,尝试利用Kickstart工具实现PXE远程安装的自动化,但是安装过程中出现了一个分区报错需要人工确认,导致自动化过程中断。查阅了一些技术博客和官方文档,发现Kickstart主要用于Redhat系的linux系统安装,而对于Debian系的支持可能不太好。Debian系Linux采用了特有的debian-installer作为系统安装工具,而运维人员可以通过一个 preseedcfg 配置文件,写入安装各个阶段需要的参数或指令,这样就可以避免安装过程中的人机交互,实现无人值守的自动化安装。

事实上上一文的过程也利用了preseed配置文件(在上文中ubuntu-serverseed文件),只不过大部分安装指令都写在了kickstart配置里。本文在没有kickstart工具的情况下,完全采用preseed配置实现ubuntu系统安装。

这一步可以直接复制上一章的操作,本文尝试用dnsmasq来代替isc-dhcp-server和tftpd-hpa,提供集成的dhcp和tftp服务

安装dnsmasq

sudo apt-get install dnsmasq

编辑/etc/dnsmasqconf,将以下的配置配置激活(去掉注释)

创建tftp目录

sudo mkdir /var/ftpd

启动dnsmasq

sudo service dnsmasq start

注意该步骤配置文件中没有再指定kscfg,后面的安装过程完全通过preseedcfg控制

Dell服务器进入PXE模式,安装过程无需再人工介入。

下一步继续实践在Preseed里添加后处理,执行自动安装软件和配置系统环境。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何用Jenkins实现自动化部署svn更新代码

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情