Чтобы загрузить в 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
)
}
Код выполняет следующие действия:
- Запуск
npm
производственной сборки
- Извлечение версии из
package.json
в переменную VERSION
.
- Подготовить "пустышку"
pom.xml
файл
- Создайте zip-каталог каталога
dist
, в котором содержится приложение Angular.
- Используйте команду
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>