Как загрузить файл с помощью декларативного конвейера Jenkins в Artifactory - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть веб-приложение Angular, которое я хочу опубликовать как артефакт для Artifactory с использованием декларативных конвейеров Jenkins. Как мне это сделать?

1 Ответ

0 голосов
/ 03 апреля 2019

Чтобы загрузить в 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. Создайте zip-каталог каталога dist, в котором содержится приложение Angular.
  5. Используйте команду rtUpload для загрузки zip-файла + pom-файла

Файл pom загружен, чтобы обеспечить корректную работу загруженной версии SNAPSHOT. Без этого в Artifactory не создаются метаданные Maven, и Maven не будет загружать новые версии SNAPSHOT (например, если вы используете этот артефакт в своем приложении Spring Boot на основе Maven). С этим все отлично работает с 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...