【问题标题】:Jenkins + maven Cargo + 2 tomcatsJenkins + maven Cargo + 2 只雄猫
【发布时间】:2014-07-26 18:11:44
【问题描述】:

我正在由 Jenkins 使用 maven 构建战争文件,我需要同时将其部署到 2 个正在运行的 tomcat 上。我在 pom.xml 中写了两个配置文件(每个 tomcat),但是当我运行时

cargo:deploy -Pprofile1,profile2

它仅部署到 profile2。所以我需要运行命令 2 次:

cargo:deploy -Pprofile1 
cargo:deploy -Pprofile2

这就是我的 pom.xml 的样子:

        <plugin>
            <groupId>org.codehaus.cargo</groupId>
            <artifactId>cargo-maven2-plugin</artifactId>
            <version>1.4.8</version>
            <configuration>
                <container>
                    <containerId>tomcat7x</containerId>
                    <type>remote</type>
                </container>
                <configuration>
                    <type>runtime</type>
                    <properties>
                        <cargo.remote.uri>${cargo.manager.url}</cargo.remote.uri> 
                        <cargo.remote.username>${cargo.username}</cargo.remote.username>
                        <cargo.remote.password>${cargo.password}</cargo.remote.password>
                    </properties> 
                </configuration>
                <deployables>
                    <deployable>
                        <groupId>com.softserveinc</groupId>
                        <artifactId>oms</artifactId>
                        <!-- <version>1.0.0-BUILD-SNAPSHOT</version> -->
                        <type>war</type>
                    </deployable>
                </deployables>
            </configuration>
        </plugin>       
    </plugins>
</build>
<profiles>
    <profile>
        <id>profile1</id>
            <properties>
            <cargo.manager.url>http://<here shuold be ip addres>/manager/text</cargo.manager.url>
            <cargo.username>admin</cargo.username>
            <cargo.password>admin</cargo.password>
       </properties>
    </profile>
    <profile>
        <id>profile2</id>
        <properties>
            <cargo.manager.url>http://<here shuold be ip addres>/manager/text</cargo.manager.url>
            <cargo.username>admin</cargo.username>
            <cargo.password>admin</cargo.password>
        </properties>
    </profile>
</profiles>

但我需要通过 1 个命令为 2 个 tomcat 执行此操作吗?有人知道怎么做吗?

【问题讨论】:

    标签: maven tomcat jenkins cargo


    【解决方案1】:

    编写了调用 Cargo deploy 命令的脚本。

    这是 Jinja 模板,它从 ansible 库存文件动态创建:

    #!/bin/sh
    function deploy
    {
    echo "Changing working directory to om"
    cd /home/install/some
    
    {% for host in groups['app'] %}
    echo "Deploying application to {{host}} server"
    {{installation_folder}}/maven/bin/mvn cargo:redeploy -P{{host}}
    {% endfor %}
    }
    
    echo "Downloading the latest version of oms.war"
    wget "http://{{groups['CS'][0]}}:8081/nexus/service/local/artifact/maven/redirect?r=snapshots&g=com.softserveinc&a=oms&v=1.0.0-BUILD-SNAPSHOT&p=war" -O /tmp/some.war
    
    deploy
    
    echo "Removing some.war"
    rm -rf /tmp/oms.war
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-02
      • 1970-01-01
      • 2022-01-13
      • 2011-07-06
      • 2011-08-05
      • 2011-09-13
      • 2016-11-17
      • 1970-01-01
      相关资源
      最近更新 更多