我们正在使用Jenkins进行持续集成。我们通常在深夜才能完成构建。是否有任何自动化的方法,可以在收到邮件或者通知后自动进行构建部署?如有建议,请不吝赐教。
在Jenkins上部署构建的一种机制是使用工件将最新的二进制文件放置在已知位置,然后启动一个新作业(仅在编译/测试阶段成功时)使用(私钥保护的)ssh或scp将工件复制到测试/生产机器上,然后执行安装。
我们在一些自动化测试中使用类似的机制。麻烦的部分是让shell命令处理ssh密钥,因此我们采取以下步骤:
eval `ssh-agent -s`
ssh-add ~/.ssh/your_private_key_here
ssh
脚本中完成。但是,我不确定这是否是你要问的问题。如果您想手动部署,可以设置需要手动触发的项目。如果您想将构建编号一起传递,可以在脚本中使用构建编号作为变量,在您的ssh
命令中传递它。您能否澄清您希望如何处理构建编号? - gaige我知道的方法有以下几种:
在Jenkins配置中,您可以在执行maven目标后执行windows/shell命令。在我的情况下,我在Linux上有一个Glassfish,并通过ssh执行asadmin参数进行部署。我在服务器上安装了一个实例,遵循的流程是:停止实例、卸载应用、部署应用、启动实例(命令)。
该插件将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
部署插件基于此。您必须编辑pom.xml文件并使用Maven执行部署目标。
在Tomcat中,与Jenkins和Tomcat的配置:
更新'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
vagrant
这样的工具来启动新的虚拟机并填充它一样复杂。然而,如果你正在构建一个iOS应用程序,你可以直接部署到下载服务。对于桌面应用程序,你可以部署到已知的Web位置。在使用Jenkins进行持续部署时有很多机会,但更多的信息将有助于找到正确的方向。 - gaige