【问题标题】:How to upload a file using Jenkins Declarative Pipeline to Artifactory如何使用 Jenkins 声明式管道将文件上传到 Artifactory
【发布时间】:2019-04-03 11:27:07
【问题描述】:

我有一个 Angular webapp,我想使用 Jenkins 声明式管道将它作为工件发布到 Artifactory。我该怎么做?

【问题讨论】:

    标签: angular maven jenkins artifactory


    【解决方案1】:

    要上传到 Artifactory,请使用 rtUpload 命令。例如:

    steps {
        sh 'npm run build:production'
    
        echo "Deploy to Artifactory"
    
        script {
          VERSION = sh(script: 'cat package.json | grep \'version\' | grep -o -E \'[0-9]+\\.[0-9]+\\.[0-9]+(\\-SNAPSHOT)?\'',
                      returnStdout: true).trim()
        }
    
        sh "sed 's/REPLACE_VERSION_HERE/${VERSION}/g' upload-pom.xml.template > upload-pom-${VERSION}.xml"
    
        zip zipFile: "myapp-webapp-${VERSION}-distribution.zip", archive: true, dir: 'dist'
    
        rtUpload (
            serverId: "main",
            spec:
                """{
                  "files": [
                    {
                      "pattern": "myapp-webapp-(*)-distribution.zip",
                      "target": "reponame/com/company/product/myapp-webapp/{1}/myapp-webapp-{1}-distribution.zip"
                    },
                    {
                      "pattern": "upload-pom-(*).xml",
                      "target" : "reponame/com/company/product/myapp-webapp/{1}/myapp-webapp-{1}.pom"
                    }
                 ]
                }""",
            failNoOp: true
        )
      }
    

    代码执行以下操作:

    1. 运行npm 生产构建
    2. 将版本从package.json 提取到VERSION 变量中。
    3. 准备一个“虚拟”pom.xml 文件
    4. 创建包含 Angular 应用程序的 dist 目录的 zip。
    5. 使用rtUpload命令上传zip文件+pom文件

    上传 pom 文件以确保以这种方式上传的 SNAPSHOT 版本正常工作。没有它,Artifactory 不会生成 Maven 元数据,Maven 将不会下载新的 SNAPSHOT 版本(例如,如果您在基于 Maven 的 Spring Boot 应用程序中使用此工件)。有了这个,Maven 一切正常。

    upload-pom.xml.template 应如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
        http://maven.apache.org/xsd/maven-4.0.0.xsd"
      xmlns="http://maven.apache.org/POM/4.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.company.product</groupId>
      <artifactId>myapp-webapp</artifactId>
      <version>REPLACE_VERSION_HERE</version>
      <packaging>zip</packaging>
      <description>Dummy pom.xml for Artifactory</description>
    </project>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-12
      • 2021-01-15
      • 1970-01-01
      • 2022-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多