如何使用Gradle将RPM文件上传到Artifactory? Gradle总是使用不适合YUM存储库的maven样式直接布局来上传文件。从Gradle上传RPM到Artifactory
3
A
回答
3
这里的问题是,Gradle坚持要以maven样式的目录格式group-id/version/artifact
上传所有内容,而yum存储库需要平面布局。这里有两种方法 - 使用Artifactory插件或Gradle更新的发布机制。我只能得到这个与后者合作。
我在这里假设您使用的是Gradle ospackage plugin,并且已经创建了RPM版本。在我的情况下,RPM任务的名称是distRpm
。例如:
task distRpm(type: Rpm) {
packageName = 'my_package'
version = version
release = gitHash
arch = 'X86_64'
os = 'LINUX'
// Etc
}
添加常春藤发布插件到您的项目:
apply plugin: 'ivy-publish'
,然后添加一个出版块:
publishing {
publications {
rpm(IvyPublication) {
artifact distRpm.outputs.getFiles().getSingleFile()
/* Ivy plugin forces an organisation to be set. Set it to anything
as the pattern layout later supresses it from appearing in the filename */
organisation 'dummy'
}
}
repositories {
ivy {
credentials {
username 'yourArtifactoryUsername'
password 'yourArtifactoryPassword'
}
url 'https://your-artifactory-server/artifactory/default.yum.local/'
layout "pattern", {
artifact "${distRpm.outputs.getFiles().getSingleFile().getName()}"
}
}
}
}
常春藤出版允许你指定的目录和上传的文件名模式。这被覆盖为简单的RPM的确切文件名。
0
这是我的代码片段与摇篮Artifactory的插件
应用插件:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.4.0"
}
}
apply plugin: 'ivy-publish'
apply plugin: 'com.jfrog.artifactory'
配置artifactory的
artifactoryPublish {}.dependsOn(buildRpm)
publishing.publications.create('yum-publication', IvyPublication) {
artifact buildRpm.outputs.getFiles().getSingleFile()
}
artifactory {
contextUrl = 'https://artifactory.acme.com/artifactory' //The base Artifactory URL if not overridden by the publisher/resolver
publish {
//A closure defining publishing information
repository {
repoKey = 'demo-yum' //The Artifactory repository key to publish to
username ="${artifactory_user}"
password = "${artifactory_password}"
ivy {
artifactLayout = "${buildRpm.outputs.getFiles().getSingleFile().getName()}"
}
}
defaults {
//List of Gradle Publications (names or objects) from which to collect the list of artifacts to be deployed to Artifactory.
publications ('yum-publication')
publishBuildInfo = false //Publish build-info to Artifactory (true by default)
publishArtifacts = true //Publish artifacts to Artifactory (true by default)
publishPom = false //Publish generated POM files to Artifactory (true by default).
publishIvy = false //Publish generated Ivy descriptor files to Artifactory (true by default).
}
}
}
相关问题
- 1. 使用gradle将神器上传到artifactory
- 2. 使用gradle将不同的罐子上传到Artifactory
- 3. IOException从Jenkins Slave上传到Artifactory
- 4. gradle artifactory插件
- 5. Nexus/Artifactory缓存RPM和NPM?
- 6. Gradle不从Artifactory检索最新版本
- 7. 从Artifactory下载Gradle的最新版本
- 8. Gradle发布到artifactory的方式
- 9. Gradle发布到Artifactory的特定回购
- 10. 如何通过gradle将文件上传到artifactory时更改jar文件
- 11. 如何使用gradle将文件上传到artifactory通用存储库?
- 12. 用python上传工件到artifactory
- 13. 使用Java客户端上传到Artifactory
- 14. gradle RPM发布问题
- 15. 从詹金斯上传rpm到Redhat卫星
- 16. 从rpm安装RPM
- 17. Jenkins Artifactory插件如何将解析器凭证传递给Gradle?
- 18. 将属性添加到工件,同时上传到Artifactory
- 19. Gradle脚本无法解析artifactory
- 20. 从Maven部署到JFrog Artifactory
- 21. 从Archiva迁移到Artifactory
- 22. 从Bamboo发布到Artifactory 6
- 23. 当使用Gradle上传到Nexus时NoTransporterException
- 24. 更改artifactory temp上传目录
- 25. Artifactory/Jenkins使用分类器上传Spec?
- 26. Artifactory的REST部署搞砸了上传
- 27. artifactory使用powershell上传校验和
- 28. Artifactory - 使用Jenkins管道脚本上传
- 29. 从android studio传递-P参数到gradle
- 30. 上下文URL不能为空 - Artifactory Gradle插件
我得到了 “摇篮发布attemps上传RPM来artifactory的YUM回购两次” http://stackoverflow.com/questions/40001668/gradle-publish-attemps-to-upload-rpm-to-artifactory-yum-repo-twice-second-time#comment69674847_40001668用这种方法 – popalka
这是一个**错误的解决方案**,很简单,因为它在使用多个发布时会中断,或者像@popalka一样,上传多个工件时会中断。您应该使用真实模式,而不是硬编码您期望的单个文件的名称。 –
由于Ivy占位符'[originalname]'尚未在Gradle中实现,所以应该使用另一个占位符(例如'[module]')并将文件名放入该属性中。看看[这个最简单的例子](https://stackoverflow.com/a/48829037/3950370)。 –