2013-03-18 56 views
5

我们使用jenkins的CI。我们得到深夜建设。只要我们收到邮件或暗示,是否有办法自动化构建部署?任何建议,将不胜感激..我怎样才能在jenkins中自动构建部署?

+0

您能否介绍一下您正在构建或部署的内容?在一个网站的情况下,你通常会寻找某种类型的存储库推送,但它可能像使用像'vagrant'这样的工具来站立一个新的虚拟机并填充它一样复杂。但是,如果您正在构建iOS应用,则可以直接部署到下载服务。而且,对于桌面应用,您可以将其部署到已知的网站位置。使用jenkins进行连续部署时有很多机会,但更多信息将有助于找到正确的方向。 – gaige 2013-03-18 11:55:05

+0

@ gaige:感谢您的关注。我们主要尝试部署其中包含.o和其他库文件的rpm。我们ld会使用jenkins将它部署在Linux机箱中。我的期望是通过Linux盒子中的某些脚本来部署最新的可用发行版本的自动化过程。 – Sujith 2013-03-18 12:10:22

+0

我对如何设置构建和部署作业有一些详细的解释。请参阅“[如何从Jenkins中的其他作业提升特定内部版本号?](http://stackoverflow.com/questions/15126059/how-to-promote-a-specific-build-number-from-another-job-在jenkins)“和”[jenkins连续交付与共享工作区]“(http://stackoverflow.com/questions/15140580/jenkins-continuous-delivery-with-shared-workspace)”。 – Slav 2013-03-18 14:19:00

回答

3

一个机制部署在詹金斯的构建是使用工件将最新的二进制文件放在已知的位置,然后启动一个新的工作(只有在编译/测试阶段),它使用(私有密钥保护)ssh或scp将工件复制到测试/生产机器,然后执行安装。

我们使用类似的机制进行一些自动化测试。最棘手的部分是获得shell命令来处理SSH密钥,所以我们执行以下操作:

eval `ssh-agent -s` 
ssh-add ~/.ssh/your_private_key_here 

只要知道私钥是詹金斯服务器和公钥是你想在服务器上要推送到,您可以在脚本的其余部分使用sshscp命令在相关服务器上执行功能。

如果您希望完全从目标服务器端运行此进程,则可以创建一个小脚本,该脚本在服务器上运行,用于检查Jenkins服务器构建的工件目录中的新文件。感谢latest路径,您不必知道内部版本号就可以做到这一点。要找到特定的路径,您可以登录到Jenkins服务器(一旦至少保存了一个工件),然后查找您正在使用的项目,并查看上一次成功的工件,这将成为最后一个URL成功构建的文物。这些URL保持不变,始终指向最近的成功构建,所以除非项目名称或服务器名称更改,否则不必担心它们发生更改。

注意:这里有安全漏洞,你可以驾驶卡车通过,如果你这样做是为了部署测试以外的任何事情。在第一种机制的情况下,您的构建服务器具有一个ssh密钥,该密钥允许其访问目标(可能具有破坏性)。在第二种机制的情况下,您相信Jenkins服务器只会提供对您有用的二进制文件。但是,对于测试环境,推到舞台等等,这些技术将运行良好。

+0

非常感谢回复......我在这里没有多少澄清......我们也曾经做过部署测试[tats我们使用发布版本号的原因]因此,在这种情况下,它将复制文件并且不部署它实际上。有没有办法使用jenkins的内部版本号来部署它?对不起,如果我的理解不正确... – Sujith 2013-03-18 12:39:46

+0

@Sujith我不认为我正在跟踪你。部署必须在'ssh'脚本中完成,因为Jenkins中没有预定义的机制将任意程序包部署到其他服务器。但是,我不确定这是否是您的问题。如果您想手动部署,则可以设置需要手动触发的项目。如果您想随身携带内部版本号,您可以使用内部版本号作为脚本中的变量,以便在'ssh'命令中传递该版本号。你能澄清你想用内部编号完成什么吗? – gaige 2013-03-18 12:43:35

1

这是我所知道的方式:

  • 随着脚本:

在詹金斯的配置,你都可以Maven目标执行后执行窗口/ shell命令。就我而言,我在Linux上有一个Glassfish,并通过ssh执行部署的asadmin参数。我在服务器中安装了一个实例,我遵循的过程是:停止实例,取消部署应用程序,部署应用程序,启动实例(命令)。

  • 有了一个Maven插件部署:

这个插件需要战/ EAR文件并部署,要在构建结束正在运行的远程应用服务器。目前支持的容器列表包括:

Tomcat 4.x/5.x/6.x/7.x JBoss 3.x/4.x Glassfish 2.x/3。X

https://wiki.jenkins-ci.org/display/JENKINS/Deploy+Plugin

  • 随着货运:

的部署插件是基于此。你必须编辑你的pom.xml并用maven执行部署的目标。

http://cargo.codehaus.org/