Jenkins在将大文件部署到Artifactory时挂起

uurv41yg  于 2023-10-17  发布在  Jenkins
关注(0)|答案(2)|浏览(154)

当我们的Jenkins项目管道生成大小接近60 MB或更大的jar文件并尝试将它们部署到Artifactory时,它们只是挂起,永远不会完成。
对于较小的jar文件-低于10 MB -没有问题。
我们使用Jenkins版本2.414.1和Artifactory商业许可证版本7.68.7 rev 76807900。Jenkins使用Artifactory Plugin 3.18.9、Maven Integration Plugin 3.23和JFrog Plugin 1.5.0。
我们已经这样配置了Artifactory tomcat:
tomcat:connector:extraConfig:“maxPostSize='-1'connectionSize ='1500000'”
Artifactory或Jenkins中没有记录表明存在问题。
我们已经在stackoverflow和类似的网站上搜索了类似的问题,但我们没有找到任何。
大多数使用这种类型的安装的开发人员都可以很好地处理大型WAR文件。我们的应用程序基于Sping Boot 3,它会生成非常大的jar文件。我们的问题会不会是Jenkins或Artifactory被非常大的jar文件弄糊涂了?

q0qdq0h2

q0qdq0h21#

对于使用Jenkins将工件发布到Artifactory,JFrog推荐使用官方插件。https://plugins.jenkins.io/artifactory/
JCasC(Jenkins Configuration as Code)设置后的示例配置:

JCasC:
  configScripts:
    artifactory: |-
      unclassified:
        artifactorybuilder:
          useCredentialsPlugin: true
          jfrogInstances:
            - instanceId: <your-instance-id>
              platformUrl: <your-platform-url>
              artifactoryUrl: <your-artifactory-url>
              deployerCredentialsConfig:
                credentialsId: <your-artifactory-credentials>

配置好之后,可以在声明性管道中使用插件提供的函数来发布maven工件。所有可用的功能都可以在这里找到https://jfrog.com/help/r/jfrog-integrations-documentation/declarative-pipeline-syntax
样品名称:

stage('Publish jars to Artifactory') {
    steps {
            rtMavenRun(
                    pom: "<your-pom-path>",
                    goals: "<your-maven-command>"
                )
            rtPublishBuildInfo(
                    serverId: "<your-instance-id>"
                )
    }
}

这里需要注意的一点是,需要在maven命令中使用“install”,而不是“deploy”来部署工件(参考:https://devpress.csdn.net/cicd/63179e8f26059229d1c850c0.html)。
我已经使用了这个设置与1000的jar与500+ MB和它的工作没有任何问题。
此配置还提供了构建UI上的反馈和直接链接,可用于直接从Artifactory访问所需的jar

kqlmhetl

kqlmhetl2#

我找到了解决办法。
首先,你应该在Jenkins上安装JFrog Cli。在项目的jenkinsfile中,您应该添加:

jfrog 'jfrog-cli'

到工具。在部署阶段,你应该有以下步骤:

jf 'rt mvn-config'
jf 'rt mvn clean install -DskipTests -DskipITs  deploy:deploy' // build & deploy artifacts
jf 'rt bp' // publish build info

最后,在pom.xml中,您应该添加:

<distributionManagement>
        <repository>
            <id>libs-release-local</id>
            <url>artifactory-server-url/artifactory/libs-release-local</url>
        </repository>
        <snapshotRepository>
            <id>libs-snapshot-local</id>
            <url>artifactory-server-url/artifactory/libs-snapshot-local</url>
        </snapshotRepository>
    </distributionManagement>

记住在maven settings.xml中为您的存储库ID添加Artifactory凭据。

相关问题