鉴于这个api 文档,我如何使用HTTPBuilder和Groovy构建我的查询?我尝试了很多东西,但我没有做对.
def http = new HTTPBuilder()
http.request('http://artifactory:8888/libs-snapshot-local/my/jar/1.0/test-jar-1.0.jar', PUT, JSON ) { req ->
body = [
uri: "http://artifactory:8888/libs-snapshot-local/my/jar/1.0/test-jar-1.0.jar",
downloadUri: "http://artifactory:8888/libs-snapshot-local/my/jar/1.0/test-jar-1.0.jar",
repo: "libs-snapshot-local",
path: "c:\\pathtojarfile\\test.jar",
created: "2012-02-03T08:37:12.599-0800",
createdBy: "someuser",
size: "1024",
mimeType: "application/java-archive"
]
response.success = { resp, json ->
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎让我分道扬but,但它上传了一个空的jar文件.好像身体完全被忽略了.删除它会产生相同的结果.我似乎无法找到关于如何做到的好参考.
我们正从常春藤搬到maven.我们在使用常春藤发布的工件中有很多工件,因此工件文件夹/路径结构类似于
artifactory/libs-release/[organization]/[module]/[revision]/[type]s/[module](-[classifier]).[ext]
artifactory/libs-release/[organization]/[module]/[revision]/[type]s/ivy.xml
但是,当我们在maven pom.xml中添加依赖项时,依赖项名称将类似于com.abc.xyz
.但maven试图查看路径com/abc/xyz/
文件夹,而我们在神器中有神器com.abc.xyz/my-artifact/1.0.0/jars/my-artifact.jar
我怎样才能告诉maven(pom.xml)阅读和理解神器中的路径.
我尝试使用ivy-maven-plugin,但它为一些groovy类提供classNotFound错误,即使我在我的本地m2存储库文件夹中需要groovy jar.
*回答 好,这是我们做的.我们手动创建文件夹然后我们现在使用makepom插件将ivy.xml转换为maven pom.xml感谢您提出所有建议,欢迎更多.
我试图将工件上传到artfactory repo请求,但我得到405错误.我有一个工作的bash脚本来实现这个目标,但我真的需要一个python实现.
蟒蛇
import os
import hashlib
import requests
from requests.auth import HTTPBasicAuth
username = 'me'
password = 'secrets'
target_file = '/home/me/app-1.0.0-snapshot.el6.noarch.rpm'
artifactory_url = 'https://artifactory.company.com/artifactory'
def get_md5(fin):
md5 = hashlib.md5()
with open(fin, 'rb') as f:
for chunk in iter(lambda: f.read(8192), ''):
md5.update(chunk)
return md5.hexdigest()
def get_sha1(fin):
sha1 = hashlib.sha1()
with open(fin, 'rb') as f:
for chunk in iter(lambda: f.read(8192), ''):
sha1.update(chunk)
return sha1.hexdigest()
def upload(fin):
base_file_name = os.path.basename(fin)
md5hash = get_md5(fin)
sha1hash = get_sha1(fin)
headers = {"X-Checksum-Md5": md5hash, "X-Checksum-Sha1": sha1hash} …
Run Code Online (Sandbox Code Playgroud) 更新 8/6:
增强的日志记录显示,从缓存中删除旧 jar 存在问题,这会导致致命的“未找到”错误。还有其他类似的线程,但只有当有人用他们的 IDE 锁定文件时。我们正在运行来自 Jenkins 的单个 groovy 脚本,并且没有人登录到此框。
我们在失败后立即运行进程浏览器,并且没有锁定。然后我使用 Jenkins 用来运行脚本的用户登录,并且删除文件没有错误。
此外,IVY 2.1 中似乎有一个修复程序,当无法删除 jar 时不会失败,而我使用的是 Ivy 2.2(Groovy 1.8.4)。是什么赋予了?
Couldn't delete outdated artifact from cache: C:\Users\myUser\.groovy\grapes\com.a.b.c\x-y-z\jars\x-y-z-1.496.jar
Run Code Online (Sandbox Code Playgroud)
然后是假(?)错误:
Caught: java.lang.ExceptionInInitializerError
java.lang.ExceptionInInitializerError
Caused by: java.lang.RuntimeException: Error grabbing Grapes -- [unresolved dependency: com.a.b.c#x-y-z;1.+: not found]
at smokeTestSuccess.<clinit>(smokeTestSuccess.groovy)
Run Code Online (Sandbox Code Playgroud)
有趣的是,每天早上 5 点之后脚本第一次运行时都会发生这种情况。我猜缓存会在凌晨 5 点通过某些默认配置失效?这是某种线索吗??
原帖:
在运行许多共享相同 @Grab 声明的不同 Groovy 脚本时,我间歇性地收到错误消息。(更改文件名以保护无辜者)。首先是完整的 Grab 声明:
@GrabResolver(name = 'libs.release', root = 'http://myserver:8081/artifactory/libs-release', m2compatible = 'true') @Grapes([
@Grab(group = 'com.a.b.c, module = 'x-y-z', version = '1.+', changing …
Run Code Online (Sandbox Code Playgroud) 我们有一个使用220Gb的Artifactory服务器- libs-snapshots-local
存储库使用98%的存储空间.
当我们查看存储库的配置时,我们注意到Maven快照行为设置为:unique
并且Max Unique Snapshots值为0
.
我们将Max Unique Snapshots值更改为5.
当我们仍在处理快照时,这似乎有效,但是如果我们不再部署到快照(已经发布了版本),那么它不会删除任何这些文件.
例如:我们在Snapshots存储库中有以下内容:
com/company/some/app/1.23-SNAPSHOT/.. (50+ artifacts)
com/company/some/app/1.24-SNAPSHOT/.. (5 artifacts)
Run Code Online (Sandbox Code Playgroud)
Artifactory将当前SNAPSHOT目录(1.24-SNAPSHOT
)保留为最多5个工件,但1.23-SNAPSHOT
目录中的工件数量永远不会减少.
似乎Artifactory使用工件的部署来触发清理检查 - 因此,如果您不再部署到该工件,那么不会进行清理吗?
我们如何让Artifactory开始删除1.23-SNAPSHOT
文件夹中的多余工件?
我已经用 groovy 编写了一个 Gradle 插件并使用 Gradle 来构建它。我有一个本地网络 Artifactory 服务器,我使用 Gradle Artifactory 插件和 Gradle 中的 maven-publish 插件发布结果。我有另一个依赖此插件的 Gradle 构建脚本作为依赖项。如果我列出特定版本的依赖项,我就可以让这一切正常工作。我曾尝试使用 maven 版本范围(例如“[1.0,2.0)”),但这失败了,说它找不到 maven-metadata.xml。我检查了 Artifactory,果然,它不在那里。我需要做什么来制作它,最好是在插件的构建过程中?
这是我的自定义 gradle 插件的 build.gradle 文件:
buildscript {
repositories {
maven {
url "${artifactory_contextUrl}/plugins-release"
credentials {
username = "${artifactory_user}"
password = "${artifactory_password}"
}
}
}
dependencies {
classpath group: 'org.apache.directory.studio', name: 'org.apache.commons.io', version: '2.4'
classpath group: 'org.jfrog.buildinfo', name: 'build-info-extractor-gradle', version: '2.0.9'
}
}
plugins {
id 'com.jfrog.artifactory' version '3.0.1'
}
apply plugin: 'groovy'
apply plugin: 'maven-publish'
artifactory {
contextUrl …
Run Code Online (Sandbox Code Playgroud) 我们已经从一个非常古老的Artifactory(6-7岁)升级.当时,由于篇幅限制,部分存储库不是由Artifactory处理的,而是通过Apache httpd服务器通过HTTP提供的.通过Apache httpd提供的工件被部署在SCP上.我们正试图将所有内容从SCP迁移到HTTPS.我们已经迁移了很多东西.但是,我们现在留下了Maven站点,这些站点也部署在SCP上并由Apache提供服务.
我们希望将所有这些网站迁移到Artifactory.我们需要一个单独的存储库吗?我无法在Artifactory中找到它是如何工作的.有人可以提供解释或链接吗?
提前谢谢了!
我有Android Studio项目,可以在发布版本和调试版本中构建AAR或APK.我想将这些发布到我的Artifactory服务器上的不同存储库中.该JFrog例子似乎并没有涵盖这种情况.
这是否意味着仅仅构建版本或仅构建调试版本,并根据构建类型选择上载内容和位置,这被认为是最佳实践?
我们正在使用Artifactory 3.9.2
并且必须合并两个存储库的部分(通过复制工件),这些存储库具有相同的(SNAPSHOT
-versioned)工件.这搞砸了maven-metadata.xml
.在Nexus中,可以简单地重建此工件的元数据,并让存储库管理器为您排序.我似乎无法找到关于如何使用Artifactory执行此操作的任何链接/解释.有人可以告诉我怎么做到这一点?
我已经设置了Artifactory(4.1.2)的实例,我用它来存储java文物.我使用如下配置的gradle插件将工件推送到实例
artifactory {
contextUrl = 'http://example.com/artifactory'
publish {
repository {
// The Artifactory repository key to publish to
repoKey = 'libs-release-local'
username = artifactory_username
password = artifactory_password
}
defaults {
publications('releaseJar')
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够防止按版本覆盖已部署的人工制品.这似乎是一个共同的要求,文档说
您可以通过不授予"删除"权限来阻止用户或组覆盖已部署的版本或唯一快照.可以始终覆盖非唯一快照(前提是已授予"部署"权限).
但是,我已经设置了一个
具有相关权限的deploy
用户组.1 | deployers
1 | CanDeploy
该CanDeploy
权限仅具有Deploy/Cache
该deployers
组的权限.
然而!我可以使用将覆盖的工件覆盖到我心中的内容gradle artifactoryPublish
.
任何建议都会感激不尽:)
编辑:自问这个问题后,功能已开始按预期工作.这非常奇怪,因为我根本没有更改Artifactory设置,但现在403
当我尝试上传与已部署的版本号相同的工件时返回.我只能假设在访问权限的缓存方面存在一些奇怪的东西,或者某些东西导致我通过Web UI进行的更改在一两天内无效 - 令人不安但它目前正在工作.在我确保其工作的同时,会暂时提出问题!
artifactory ×10
maven ×6
gradle ×3
groovy ×2
android ×1
ivy ×1
pom.xml ×1
python ×1
ruby-grape ×1