我们正在使用jenkins进行CI。我们得到深夜建设。一旦我们收到邮件或暗示,有没有办法自动化构建部署?任何建议将不胜感激..
答案 0 :(得分:3)
在Jenkins上部署构建的一种机制是使用工件将最新的二进制文件放在已知位置,然后启动一个新作业(仅在编译/测试阶段成功时)使用(私钥) protected)ssh或scp将工件复制到测试/生产机器,然后执行安装。
我们使用类似的机制进行一些自动化测试。棘手的部分是获取shell命令来处理ssh键,因此我们执行以下操作:
eval `ssh-agent -s`
ssh-add ~/.ssh/your_private_key_here
只要该私钥在Jenkins服务器上并且公钥在您尝试推送的服务器上,您就可以在其余部分中使用ssh
和scp
命令。用于在相关服务器上执行功能的脚本。
如果您希望完全从目标服务器端运行该进程,则可以创建一个在服务器上运行的小脚本,该脚本将检查Jenkins服务器构建的工件目录中的新文件。感谢latest
路径,您无需知道要执行此操作的内部版本号。要查找特定路径,您可以登录Jenkins服务器(一旦保存了至少一个工件),找到您正在使用的项目并查看 Last Successful Artifacts ,这将是是工件的最后成功构建的URL。这些URL保持不变并始终指向最近成功的构建,因此除非项目名称或服务器名称发生更改,否则不必担心它们会发生变化。
注意:这里有安全漏洞,如果您要执行此操作而不是部署测试,则可以驾驶卡车。在第一种机制的情况下,构建服务器具有ssh
密钥,使其可以访问(可能是破坏性的)目标。对于第二种机制,您相信Jenkins服务器只会提供对您有用的二进制文件。但是,对于测试环境,推送到舞台等,这些技术都可以正常工作。
答案 1 :(得分:1)
这些是我所知道的方式:
在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
Deploy Plugin基于此。您必须编辑pom.xml并执行使用maven部署的目标。
答案 2 :(得分:0)
在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