【问题标题】:Jenkins deploy WAR to Tomcat over SSH?Jenkins 通过 SSH 将 WAR 部署到 Tomcat?
【发布时间】:2016-07-18 04:59:07
【问题描述】:

是否有 Jenkins 插件可以通过 SSH 封装对 Tomcat 管理器的调用?

我的公司即将在“云端”部署一些应用程序,我们似乎要使用 Jenkins。问题是,我在将 Tomcat 管理器打开到 Internet 时感到不舒服。

或者,Jenkins 是否可以在部署之前打开与目标服务器的 VPN 连接?

【问题讨论】:

    标签: tomcat jenkins jenkins-plugins


    【解决方案1】:

    你可以使用Publish Over SSH Plugin

    【讨论】:

      【解决方案2】:

      也许你可以编写一个 Ansible 脚本来完成这项工作并在 Jenkins 中使用它。

      【讨论】:

        【解决方案3】:

        为什么不为tomcat启用SSL并在它前面放置一个反向代理?

        server.xml 中的连接器看起来像这样:

        -->

         <Connector  address="<localhost IP>" port="<port>" protocol="org.apache.coyote.http11.Http11NioProtocol"
                    maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
                    clientAuth="false" sslProtocol="TLS"
                    ciphers="<Cipher1>,
                             <Cipher2>,
                             <Cipher3>" 
                    keystoreFile="<keystore directory>"          
                    keystorePass="<keystore password>"
                    URIEncoding="UTF-8"
                    connectionTimeout="120000"
                    maxPostSize="-1"
                    maxKeepAliveRequests="-1"
                    />
        

        要部署您的战争文件,您可以使用 ant 在您的詹金斯脚本中执行的 xml 文件:

        <project name="Deploy" default="deploy">
        <path id="tomcat.class.path">
        <fileset dir="<TomcatHome>/lib">
                <include name="**/*.jar"/>
            </fileset>
        <pathelement location="<TomcatHome>/bin/bootstrap.jar"/>
        <pathelement location="<TomcatHome>/bin/tomcat-juli.jar"/>
        </path>
        <target name="tomcat-start">
            <echo>Stop Tomcat</echo>
        <java classname="org.apache.catalina.startup.Bootstrap" fork="true" classpathref="tomcat.class.path">
            <jvmarg value="-Dcatalina.home=<TomcatHome>"/>
        </java>
        <sleep seconds="15"/>
        </target>
        
        <target name="tomcat-stop" depends="tomcat-check-status" if="tomcat.started">
            <echo>Start Tomcat</echo>
            <java classname="org.apache.catalina.startup.Bootstrap"     fork="true" classpathref="tomcat.class.path">
        <jvmarg value="-Dcatalina.home=<TomcatHome>"/>
                <arg line="stop"/>
            </java>
            <sleep seconds="15"/>
        </target>
        
        <target name="tomcat-check-status">
            <condition property="tomcat.started">
                <socket server="localhost" port="8000"/>
            </condition>
        </target>
        <target name="deploy">
            <sequential>
                <antcall target="tomcat-stop"/>
                    <echo>Deploy to server</echo>
                    <copy todir="<TomcatHome>/webapps">
                        <fileset dir="<Current directory of WarFiles>">
                        <include name="*.war"/>
                        </fileset>
                    </copy>
                <antcall target="tomcat-start"/>
            </sequential>
        </target>
        </project>
        

        这可能是您的管道脚本的样子:

        dir("<directory of build.xml>") {
               stage('deploy'){
                 def antHome = tool 'Ant <version>';
                        withAnt(installation: 'Ant <version>') {
        
                    bat "ant deploy"
                    }
                }
                }
            }   
        

        【讨论】:

          猜你喜欢
          • 2018-09-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-17
          • 2018-05-18
          相关资源
          最近更新 更多