angular - 如何使用 Jenkins 声明式管道将文件上传到 Artifactory
问题描述
我有一个 Angular webapp,我想使用 Jenkins 声明式管道将其作为工件发布到 Artifactory。我该怎么做呢?
解决方案
要上传到 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
文件 - 创建
dist
包含 Angular 应用程序的目录的 zip。 - 使用
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>
推荐阅读
- angular - Angular 6 Material Nested Tree 不适用于动态数据
- node.js - Node js 延迟响应问题(api 响应慢)
- jquery - 我可以将 jqgrid 与 JSON Web 令牌一起使用吗?
- ssis - 说明:由于包没有有效的 XML 格式,无法将包加载为 XML
- angular - 一旦应用程序关闭并打开,除非我移至下一页,否则不会显示离子滑块图像
- android - Oreo 仅在 FCM 中播放默认通知
- angular - 如何从视图容器角度删除特定视图
- node.js - 无法通过 NodeJs 连接到我的 MongoDB EC2 实例
- java - java.util.concurrent.CopyOnWriteArrayList 中的 ConcurrentModificationException。
(CopyOnWriteArrayList.java:141) - javascript - angular - 基于 mat-select 选项的条件元素