大家好,今天来为大家分享jenkins迁移到另一台服务器的一些知识点,和10分钟教会你Jenkins数据迁移和备份的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

一、jenkins上使用shell脚本nohup部署jar服务到remote服务器

先贴一下,我的jenkins里最后核心配置

remove_jar.sh脚本:

start_jar.sh脚本内容:

jenkins迁移到另一台服务器 10分钟教会你Jenkins数据迁移和备份

remove_jar.sh和 start_jar.sh在jenkins服务器上,需要将这两个shell在0.0.0.0(不能暴露)的远端去执行

没错,客官您一眼就看出来了,觉得简单的不值一提吧,先别着急,对搜这个问题的小菜鸡来说这里面也是大有文章,听我一一道来。

1、第一个问题:ps-ef|grep xxx.jar查到多余的pid

现象:在0.0.0.0上行 ps-ef| grep alk-wxapi-test.jar| grep-v grep| awk'{print$2}'只能查到一个pid,但是把这句话放到shell脚本里,在本地使用命令上远端执行,就会找到3个pid,而且kill时提示失败的错误。

现在已经知道原因了,但是当时确实是个问题。

已经解决不方便复现了,因此就描述一下就行了。

原因:shell里的这个命令也是通过bash在远程执行的,所以找到的别的无关紧要的pid其实是bash,因此在grep是除了排除grep本身( grep-v grep)外还要排除bash( grep-v bash)

最后命令是:

2、远程执行脚本,里面有nohup j*a-jar,发生错误: nohup: failed to run mand‘j*a’: No such file or directory

这是因为nohup时j*a环境变量没有读到,处理方式就是在nohup执行前加入

3、其他思路

4、第二条说jdk的路径因为每个服务企业都不一样,所以需要手动传改,这一点已经在脚本上做了修改,启动脚本上携带的第一个参数就是jdk的安装路径

这两个也都是比较好的思路,以后肯定有机会体验的,本篇到此。

ps-ef|grep-v在shell sh脚本中貌似无效?

linux下搭建zookeeper集群遇到的坑

nohup: cannot run mand异常解决

Zookeeper not starting, nohup error

二、10分钟教会你Jenkins数据迁移和备份

在IT行业中,数据安全至关重要。无论是因为停电、服务器故障、网络中断,还是人为误操作,都可能导致数据丢失,这对工作环境的安全与稳定*构成严重威胁。因此,定期备份数据与迁移数据以备不时之需显得尤为重要。

在使用Jenkins进行自动化部署、接口测试或UI测试时,许多关键配置和信息都存储在系统中。那么,如何实现数据的迁移与备份呢?以下将为你详细解答。

系统迁移

在迁移Jenkins系统时,关键步骤包括查看主目录、打包所需数据,以及将数据迁移到目标机器上。

查看主目录有多种方式,可以通过Jenkins网站的系统管理->系统配置页面查看,或使用Linux命令如`cat/etc/sysconfig/jenkins`或`cat/etc/profile`,在Windows系统中则可以通过“此电脑属*->高级系统设置->环境变量”找到JENKINS_HOME变量,来获取主目录信息。

打包需要迁移的数据时,主要关注`config.xml`、`jobs`、`users`和`plugins`文件夹。`config.xml`存放配置信息,`jobs`目录包含创建的工程项目,`users`目录存储用户账号信息,`plugins`目录则是插件的存放处。

将这4个文件夹打包并复制到目标机器的Jenkins主目录下。在打包和复制时,建议先停止两台机器的Jenkins服务,确保数据完整迁移。如果目标机器未安装Jenkins,覆盖这4个文件夹即可;若目标机器已安装Jenkins并有部分插件、用户和项目,则需注意避免名称冲突,特别是项目名称重复时,可能需要在目标机器上修改项目名称以避免覆盖。

数据备份

数据备份有两种常见方式:手动备份和自动备份。

手动备份流程与迁移步骤相似,先打包数据,然后将备份文件存放到指定路径,如在原始机器上创建备份文件夹,或复制到另一台机器。这种方式便于在数据丢失时快速恢复。

自动备份可以通过编写脚本来实现,Linux系统中使用shell脚本,例如:`cp-r/home/jenkins/需要备份的文件夹名/home/backups/目标文件夹名`。Windows环境下可使用批处理命令,如:`xcopy D:\jenkins\需要备份的文件夹名\*.* D:\backups\目标文件夹名\/s/e`。

对于跨平台备份,可以使用pscp工具,通过命令`pscp`实现文件传输。例如,将Windows文件传至Linux命令为:`pscp D:\jenkins :/mnt/backups`,反之亦可。

总结

备份工作往往在项目正常运行时被忽视,因为它涉及到额外的时间成本与存储空间占用。然而,一旦数据丢失,恢复所需的时间与成本远超备份。因此,备份是维护数据安全不可或缺的一环。记得定期清理过时的备份数据,释放存储空间。

三、如何设置jenkins服务器环境变量

启动Jenkins

1、安装jdk

从略,建议1.6或以上版本,配置好环境变量。

2、安装tomcat

从略,安装完调试下tomcat是否正常。

3、安装ant

zip包,解压后配置好环境变量。

4、安装jenkins

war包,命名为Jenkins,拷贝到tomcat/webs目录下。

5、安装Android SDK

安装,完成后配置好Android_SDK_HOME环境变量。此步骤主要用于进行android自动化测试,若不进行此项可略过。

安装完成后启动tomcat/bin/startup.bat文件(linux下是startup.sh),在浏览器输入://localhost:8080/jenkins,8080为tomcat端口,即可访问jenkins服务器。

配置Jenkins

1、 JDK配置

新增JDK,指定JDK名字和J*A_HOME

2、 ANT配置

新增ANT,指定ANT名字和ANT_HOME

3、 M*en配置

从略,本文未使用到M*en,具体配置方法参考Google。

4、 Subversion

选择1.6版本SVN,勾选Update default Subversion credentials cache after suessful authentication

5、邮件通知

填写SMTP server、Default user E-mail suffix、System Admin E-mail Address、Jenkins URL、勾选Use SMTP Authentication,填写User Name、Password、Use SSL、SMTP port、Chareset(UTF-8)、Default Content Type(默认)、Default Recipients(默认收件人),配置完成后可进行测试邮件。

6、 Jenkins URL

配置该URL,用于别人访问。

插件管理

1、 Hudson Subversion Plug-in,jenkins的svn插件。

2、 Android Emulator Plugin,android模拟器插件。

3、 JUnit Attachments Plugin,junit测试报告附件插件。

4、 Email-ext plugin,邮件扩展插件。此处说明下,默认Jenkins只会发送构建失败的邮件,我们需安装此插件才能自定义不同场景。

5、 Deploy to container Plugin远程发布插件。

自动化测试

打包源工程

Android程序

本小节讲诉如何打包一个Android工程,当前使用的是ant进行编译源码。

1、首先构建一个自由风格的Job。

2、添加源码路径,选择所使用的版本控制器,输入源码路径。

3、构建触发器可根据需要选择是否定时构建。

4、构建环境,此处Jenkins安装了Android Emulator Plugin插件,可以启动已有模拟器或添加新的模拟器,本文案例中使用真机调试。

5、构建,卸载手机中原程序 adb–s uninstall .XXXXXX

6、生成bulid.xml文件,-p后面跟工程所在的本地jenkins下路径

android update project-n*** c:\被测工程Job路径\workspace

7、 Ant进行编译程序,并安装到当前手机中

ant debug install-f c:\被测工程Job路径\workspace\build.xml

8、构建后操作,本案例中构建完成后自动启动构建下一个测试Job

Bulid other projects,选择测试工程的Job.

打包测试工程

Android程序

本小节讲诉如何构建一个Android测试工程,包括邮件发送和测试报告展示。

1、构建步骤1-7和Android程序章节一样,从略。

2、本文案例中测试程序是通过命令行启动运行的,所以在此处增加一个批处理运行。P.S. adb shell am instrument-w-e class .megafon.test.MegafonTest#testDeleteContact .megafon.test/android.test.InstrumentationTestRunner,此处是通过批处理来单独运行一个个的测试用例。避免了Junit3的无序执行的问题。

3、删除Workspace中原来存在的测试报告文件,一般不删除也会覆盖。

如何让测试程序生成xml格式的测试报告,其他文章会重点介绍。

4、从手机中拷贝测试报告,最终测试是在手机上运行,所以报告也生成在手机中,使用adb pull命令把测试报告全部拷贝到workspace下制定目录。

5、构建后操作,发布测试报告,如果报告中包含附件,此处使用到JUnit Attachments Plugin插件。

6、邮件通知,此处使用到Email-ext plugin插件,前面的默认,使用我们在系统管理里面设置的默认值。

7、右下角高级按钮,可选择不同场景下发送邮件。

8、测试结果展示,在本次构建的控制台可以显示当前所有的构建日志。

9、测试报告Test Result可以显示所有测试记录。

四、jenkins部署源代码到远程服务器

jenkins要想在远程服务器执行命令,发送文件等操作,必然要处理jenkins与远程机的免交互问题。

下面如何让jenkins与目标主机实现免交互。

系统管理--插件安装--搜索ssh--安装 Publish Over SSH

安装完成后,在jenkins端生成秘钥对(公钥id_rsa.pub私钥id_rsa)

输入一次密码,以后就免密了。输入完可以用ssh登陆试一下。

我们以最简单的一个例子来演示,部署一个Html页面到远程服务器的nginx网站目录下,实现页面上线。

首先,刚才jenkins配置ssh插件,注意填写远程服务器信息的那里的remote directory这个地方指的发送到远程服务器的哪个目录下。

在job配置中

上图的配置就是,将jenkins上的项目文件init.html发送到远端主机192.168.1.112的/var//html下

保存,退出。

远端主机的nginx配置:

构建。

结果:部署成功

例子比较简单,后期会更新j*a的部署过程。