8

我们正在使用 jenkins 进行 CI。我们得到深夜构建。一旦我们收到邮件或通知,有什么方法可以自动化构建部署?任何建议,将不胜感激..

4

3 回答 3

3

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

我们对我们所做的一些自动化测试使用类似的机制。棘手的部分是让 shell 命令来处理 ssh 密钥,因此我们执行以下操作:

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

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

如果您更喜欢完全从目标服务器端运行该过程,您可以创建一个在服务器上运行的小脚本,用于检查 Jenkins 服务器构建的工件目录中的新文件。多亏了latest路径,您不必知道内部版本号即可执行此操作。要找到具体路径,您可以登录到您的 Jenkins 服务器(一旦您保存了至少一个工件),然后找到您正在使用的项目并查看Last Success Artifacts,这将是最后一次成功构建的 URL的文物。这些 URL 保持不变,并且始终指向最近的成功构建,因此您不必担心它们会发生变化,除非项目名称或服务器名称发生变化。

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

于 2013-03-18T12:27:49.657 回答
1

这些是我知道的方式:

  • 使用脚本:

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

  • 使用 Maven 部署插件:

这个插件需要一个 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/

于 2013-08-20T14:57:00.623 回答
0

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

  • 在您的服务器上安装并下载 jenkins 并启动服务器转到 jenkins 门户,然后使用“New Item”创建项目并选择 pom.xml 并创建 maven 项目。
  • 现在转到您的项目并单击配置并选择“限制此项目可以运行的位置”并在您的关卡表达式中添加主控。
  • 选择 git 上的“源代码管理”clisck 并配置您的 git 存储库和凭据和分支名称。
  • 选择“构建”添加根 pom:pom.xml 和目标和选项:干净安装 -DskipTests
  • 选择“构建后操作”并选择“将战争/耳朵部署到容器”
  • WAR/EAR 文件:target/test.war
  • 上下文路径:测试
  • 容器选择tomcat并添加Credentials
  • Tomcat URL:示例:http://localhost:8080/

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

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
于 2019-09-11T05:40:11.640 回答