我怎样才能在jenkins中自动化构建部署?

时间:2013-03-18 11:53:56

标签: build jenkins continuous-integration release-management

我们正在使用jenkins进行CI。我们得到深夜建设。一旦我们收到邮件或暗示,有没有办法自动化构建部署?任何建议将不胜感激..

3 个答案:

答案 0 :(得分:3)

在Jenkins上部署构建的一种机制是使用工件将最新的二进制文件放在已知位置,然后启动一个新作业(仅在编译/测试阶段成功时)使用(私钥) protected)ssh或scp将工件复制到测试/生产机器,然后执行安装。

我们使用类似的机制进行一些自动化测试。棘手的部分是获取shell命令来处理ssh键,因此我们执行以下操作:

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

只要该私钥在Jenkins服务器上并且公钥在您尝试推送的服务器上,您就可以在其余部分中使用sshscp命令。用于在相关服务器上执行功能的脚本。

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

注意:这里有安全漏洞,如果您要执行此操作而不是部署测试,则可以驾驶卡车。在第一种机制的情况下,构建服务器具有ssh密钥,使其可以访问(可能是破坏性的)目标。对于第二种机制,您相信Jenkins服务器只会提供对您有用的二进制文件。但是,对于测试环境,推送到舞台等,这些技术都可以正常工作。

答案 1 :(得分:1)

这些是我所知道的方式:

  • 使用脚本:

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

  • 使用Maven Deploy插件:

此插件接受war / 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

  • 货物:

Deploy Plugin基于此。您必须编辑pom.xml并执行使用maven部署的目标。

http://cargo.codehaus.org/

答案 2 :(得分:0)

在tomcat中,使用jenkins和tomcat进行配置:

  • 在服务器上安装并下载jenkins,然后启动服务器进入jenkins门户,然后使用“ New Item”创建项目,然后选择pom.xml并创建maven项目。
  • 现在转到您的项目,然后单击“配置”,然后选择“限制此项目的运行位置”,然后在“ Level Expression”中添加母版。
  • 在git上选择“源代码管理” clisck,并配置git信息库以及凭据和分支名称。
  • 选择“构建”添加Root pom:pom.xml以及目标和选项:全新安装-DskipTests
  • 选择“构建后操作”,然后选择“将战争/战争部署到集装箱”
  • WAR / EAR文件:target / test.war
  • 上下文路径:测试
  • 容器选择tomcat并添加凭据
  • Tomcat URL:示例:http://localhost:8080/

更新'apache-tomcat-8.5.5 \ webapps \ manager \ META-INF \ context.xlm文件。取消注释Value标签。并重新启动服务器

context.xml文件

Before : 

<Context antiResourceLocking="false" privileged="true">
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
     allow="192\.168\.0\.9|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>

After change :

<Context antiResourceLocking="false" privileged="true" >
</Context>

for auto deployment: go to 'apache-tomcat-8.5.5\conf\context.xml' and add antiResourceLocking="true" in 'Context' tag