【问题标题】:Ant build for multiple serversAnt 构建多台服务器
【发布时间】:2016-06-21 20:59:29
【问题描述】:

我需要有关为多台服务器创建 Ant 构建的建议。我有大约 25 台服务器。如果可能的话,我想通过运行一次 ant 来为所有服务器实现部署战争文件。我有以下问题需要考虑

  • 并非所有服务器的配置参数都相同。
  • 一些配置参数我必须设置部署应用程序的服务器主机 ip。 25
    服务器,想要一些关于如何处理这个问题的建议。

【问题讨论】:

  • ..你可以使用像 Jenkins 这样的持续集成服务器 它有一组插件、脚本接口,可以做 ssh ......你可以让你的服务器成为 jenkins 的奴隶(在目标机器上运行一个小进程),增加部署和监控的灵活性。

标签: ant


【解决方案1】:

您可以在 Ant 中手动编写逻辑代码来执行此操作,但这可能需要大量工作,具体取决于您的服务器配置的不同程度。相反,我建议使用适当的配置管理工具,例如 ChefPuppet 来自动化您的部署,并且只使用 Ant 来构建部署的文件。

【讨论】:

    【解决方案2】:

    我有同样的目标。

    您可以编写一个 maven 脚本,以便在 Jenkins 上设置持续集成,正如 Jayan 提到的那样

    或者你可以像你提到的那样创建一个 ANT 脚本。

    <!-- Define custom properties -->
    <property name="build.dir" location="${basedir}/target" />
    <property name="host.dev" value="YOUR IP" />
    <property name="host.live" value="YOUR IP 2" />
    <property name="ssh.timeout" value="60000" />
    <property name="username.dev" value="username" />
    <property name="username.live" value="username 2" />
    <property name="password.dev" value="password" />
    <property name="password.live" value="password 2" />
    

    创建您自己的 ssh macrodef 任务以使用 ssh 命令:

    <!-- Define ssh commands sshexec -->
    <macrodef name="ssh_cmd">
        <attribute name="host" />
        <attribute name="command" />
        <attribute name="usepty" default="false" />
        <attribute name="username" />
        <attribute name="password" />
        <sequential>
            <echo>Executing command : @{command} on @{username}@@@{host}</echo>
            <sshexec host="@{host}" failonerror="true" username="@{username}" password="@{password}" timeout="${ssh.timeout}" command="@{command}" usepty="@{usepty}" trust="true" />
        </sequential>
    </macrodef>
    

    向您的服务器发送命令,例如:

    <ssh_cmd host="${host.dev}" command="YOUR COMMAND (ex: sudo start yourservice onlinux)" username="${username.dev}" password="${password.dev}"/>
    

    不要忘记导入 sshexec / scp ant 任务,例如:

    <property environment="env" />
    <taskdef resource="net/jtools/classloadertask/antlib.xml">
        <classpath>
            <fileset dir="${ant.home}/lib" includes="ant-classloader*.jar" />
        </classpath>
    </taskdef>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-19
      • 2023-04-08
      • 2014-04-20
      • 1970-01-01
      相关资源
      最近更新 更多