最近我们开始使用Artifactory.我们将settings.xml配置为Artifactory建议.但是,在运行"mvn compile"时我们在下载jar时遇到问题,即使它们出现在Artifactory repo中.显式添加repo1-cache解决了编译问题,但是从远程存储库而不是Artifactory执行下载.
<repository>
<id>My Repository</id>
<name>MyRepository-releases</name>
<url>http://mvn-srv:8081/artifactory/repo1</url>
</repository>
Run Code Online (Sandbox Code Playgroud)
应该添加到settings.xml中以自动解决依赖关系并从工件中获取它们而不是每次访问远程服务器?
<?xml version="1.0" encoding="UTF-8"?>
<settings
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"
xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<profiles>
<profile>
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>libs-release</name>
<url>http://mvn-srv:8081/artifactory/libs-release</url>
</repository>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>snapshots</id>
<name>libs-snapshot</name>
<url>http://mvn-srv:8081/artifactory/libs-snapshot</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>plugins-release</name>
<url>http://mvn-srv:8081/artifactory/plugins-release</url>
</pluginRepository>
<pluginRepository>
<snapshots />
<id>snapshots</id>
<name>plugins-snapshot</name>
<url>http://mvn-srv:8081/artifactory/plugins-snapshot</url>
</pluginRepository>
</pluginRepositories>
<id>artifactory</id>
</profile>
</profiles>
<activeProfiles>
<activeProfile>artifactory</activeProfile>
</activeProfiles>
<servers>
<server>
<id>MyRepository</id>
</server>
</servers>
Run Code Online (Sandbox Code Playgroud)
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 14.355s
[INFO] Finished at: …
Run Code Online (Sandbox Code Playgroud) Artifactory可以在Jenkins中用作"SCM"或源来触发特定工件部署的构建吗?
在Artifactory Jenkis插件描述中(和Jenkins方面)看不到(或遗漏)类似的东西
例如,如果只能访问Artifactory存储库,而不是使用二进制文件来自的代码的SCM,则可能需要这样做.
这些功能似乎适用于Nexus(通过nexus-webhook-plugin).很难相信Artifactory缺少此功能.
我有一个Jenkins自由式构建,基于使用SBT的Scala项目.我正在尝试使用Jenkins Artifactory插件将生成的工件发布到Artifactory存储库,特别是在artifactoryonline.com上托管的存储库.但是,我很难找到一个理智的配置.我倾向于怀疑有一些我缺少的东西,但是我的机智已经结束了,我发现的任何文档似乎都没有详细介绍这个用例,而且我已经厌倦了Artifactory插件源代码.任何帮助都表示赞赏.
场景如下.我想要:
以下是我尝试过的方法.
第一种方法是使用自由式构建,然后使用Generic-Artifactory集成.对于"已发布的工件",我已将其设置为
目标/阶-2.11/*=> com.mycompany/MY-module_2.11
构建成功,jar和sources-jar以及javadoc-jar和ivy文件以及POM文件都在该目录中生成.但是,发布失败,209冲突.Artifactory日志不喜欢目标路径:
发送HTTP错误代码409:目标部署路径'com/mycompany/my-module_2.11/my-module_2.11-1.0.6.pom'与POM的预期路径前缀'com/mycompany/my-module_2不匹配. 11/1.0.6' .请验证您的POM内容是否正确,并确保源路径是有效的Maven存储库根路径.
我可以通过不使用标准的maven-2路径(其中包括需要禁用此repo的POM一致性检查)来消除209错误,这表明我必须更新所有下游配置才能够与这个回购合作.
我可以更新插件的目标路径设置以包含版本号:
目标/阶-2.11/*=> com.mycompany /我的-module_2.11/1.0.6
但这意味着我已经为每个版本修改了我的Jenkins构建,这似乎打败了目的.我无法想象这是使用这些工具的正确方法.
在这种情况下,我坚持使用自由式SBT构建.在"构建环境"下,我选择了"Maven3-Artifactory Integration".我针对我的全局工件存储库配置了插件,选中"将工件部署到Artifactory",并将"包含模式"设置为
目标/斯卡拉-2.11/*
我运行了一个构建,它生成了工件(包括目标/ scala-2.11目录中的POM和ivy.xml文件),但是在工件的部署方面似乎没有发生任何事情.Artifactory日志中没有任何内容,没有新的构建,控制台输出或Jenkins日志中没有任何内容表明它曾尝试将任何工件部署到我的存储库.
在这种情况下,我坚持使用自由式构建,但在"构建环境"下,我选择了"Ant/Ivy-Artifactory Integration".我选择了全局配置的Artifactory存储库,选中"将工件发布到Artifactory"和"使用Maven兼容模式".我将我的SBT项目配置为"publishLocal"(根据插件说明),并设置了常春藤配置的以下路径截图.构建项目并将工件部署到〜/ .ivy2/local,但显然插件没有拦截,没有任何东西被推送到我配置的Artifactory仓库(也许这个插件与自由风格不兼容?)
我修改了SBT构建来做"发布"而不是"publishLocal",希望插件能够启动并拦截Ivy发布,但是因为我的built.sbt没有配置了publishTo存储库目标,所以我自然得到了一个错误"未指定用于发布的存储库".
下一步方法:跳过通用,转到完整的maven.我在一个Maven项目Jenkins中设置了一个新版本.它有一个预构建步骤,它运行我的SBT构建,生成pom工件以及二进制和源jar.然后我配置Build步骤以使用由我的SBT构建生成的POM.不幸的是,jenkins/maven插件的"Root POM"参数不接受通配符,所以我能够处理它的唯一方法是指定完整(版本化)路径:
目标/斯卡拉2.11/MY-resource_2.11-1.0.6.pom
所以,这是不幸的,也是站不住脚的,因为每次增加版本号时我都不愿意更新我的Jenkins构建版本.不过,我想看看这种方法是否有效,所以我继续推进.我在全局配置的Artifactory中添加了"将Artifacts部署到Artifactory"的构建后步骤.随着maven目标"帮助:帮助",没有任何东西被推动,因此maven拦截器没有任何东西可以拦截并推动我的神器(这是我对它如何工作的理解,无论如何).所以我再次尝试,用"部署"替换Build步骤中的maven目标.这一次,拦截器将我的大多数(全部?)依赖项推送到我的Artifactory服务器.但是,在推送所有依赖项之后,它显然未能尝试编译我的"maven"项目.我没有'
再一次,任何帮助表示赞赏.看起来这应该是一个相当主流的用例,Artifactory插件的文档明确指出支持自由式build + Maven部署,但我显然遗漏了一些东西.任何帮助是极大的赞赏!谢谢.
我们使用Gradle构建Java项目,并将生成的工件推送到Artifactory.
我们使用的摇篮Artifactory的插件,这意味着我们看到建立在Artifactory的接口,我们也看到关于构建使用许可证信息许可证选项卡.
但是,我无法解决可能只使用Gradle插件运行许可证检查.是否有设置让我提供许可证警报的电子邮件地址?或者我是否需要使用其中一个CI集成才能获得该功能?
我正在使用已推送到 Artifactory 存储库的自定义映像运行 Docker 堆栈。
docker-compose.yml:
version: "3"
services:
app:
image: repo.example.com/my_image:latest
Run Code Online (Sandbox Code Playgroud)
我可以很好地提取映像,并且可以很好地部署堆栈,但如果我尝试重新部署堆栈,则会收到错误。
$ docker stack deploy --with-registry-auth -c docker-compose.yml my_stack
Creating network my_stack_default
Creating service my_stack_app
$ docker stack deploy --with-registry-auth -c docker-compose.yml my_stack
Updating service my_stack_app (id: 8po6oepjdgo8kwsb7n4ig64dt)
unable to pin image repo.example.com/my_image:latest to digest: unauthorized: The client does not have permission for manifest
Run Code Online (Sandbox Code Playgroud)
我希望 Docker 在重新部署堆栈时更新映像,就像我使用 Docker Hub 中的映像一样。
我以前见过Docker说过unable to pin image
,但那是当我没有指定存储库(例如docker.io)时。我知道我已经获得了许可,repo.example.com
因为我将图像推到了那里,我仍然可以从中提取图像,并且可以启动堆栈。我只是无法更新它。
此错误意味着什么client does not have permission for manifest
?如何解决此问题?
是注册表的JFrog产品组合枢轴或者是某组的附加功能?无论哪种方式,该功能都很有趣,但是很高兴了解细节。
artifactory docker kubernetes docker-registry jfrog-container-registry
我正在尝试在单个Jenkins作业中构建多个Maven配置文件.每个配置文件修改一些代码,然后通过执行创建一个罐子mvn -Pdev install
,然后mvn -Pprod install
在命令行中(根据使用Maven mvn -Pdev,prod install
应该工作,但它不工作对我来说).以下是我项目中的两个配置文件pom.xml
:
<profiles>
<!-- prod profile -->
<profile>
<id>prod</id>
<build>
<plugins>
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<version>1.5.2</version>
<executions>
<execution>
<phase>process-resources</phase>
<goals>
<goal>replace</goal>
</goals>
</execution>
</executions>
<configuration>
<file>src/main/java/com/IQzone/android/configuration/AbstractHoldingRefreshable.java</file>
<replacements>
<replacement>
<token>TrUe</token>
<value>TOAST_SWITCH</value>
</replacement>
</replacements>
</configuration>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>prod</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- dev profile -->
<profile>
<id>dev</id>
<build>
<plugins>
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<version>1.5.2</version>
<executions>
<execution>
<phase>process-resources</phase>
<goals>
<goal>replace</goal> …
Run Code Online (Sandbox Code Playgroud) 我尝试将artifactory设置为docker注册表,如本视频所示:http://www.jfrog.com/video/artifactory-docker-integration/
但是,我没有在artifactory中安装SSL,因此我使用了--insecure-registry标志.(如docker build publish插件中的错误和远程访问私有docker-registry中所示)
无论如何,我不知道如何找出作为docker注册表URL的神器,所以我可以这样做:curl -k -uusername:password" http://sdpvvrwm812.ib.tor.company.com:8081/artifactory/api/docker/docker-images "
这个页面http://www.jfrog.com/confluence/display/RTF/Docker+Repositories在底部显示可能需要一个称为反向代理的东西?这是真的,如果是这样,我该如何安装这样的东西?
我们正在使用Artifactory Version 4.7.0.我已经为Artifactory配置了LDAP,我能够成功登录.当我尝试使用加密密码来部署工件时,它无法正常工作.在Artifacts选项卡中,我点击"Set Me Up"并在输入我的凭据后生成Maven设置.然后我下载了settings.xml文件,其中包含以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<servers>
<server>
<username>${security.getCurrentUsername()}</username>
<password>${security.getEscapedEncryptedPassword()!"*** Insert encrypted password here ***"}</password>
<id>central</id>
</server>
<server>
<username>${security.getCurrentUsername()}</username>
<password>${security.getEscapedEncryptedPassword()!"*** Insert encrypted password here ***"}</password>
<id>snapshots</id>
</server>
</servers>
<profiles>
<profile>
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>libs-release</name>
<url>http://artifactory:9090/libs-release</url>
</repository>
<repository>
<snapshots />
<id>snapshots</id>
<name>libs-snapshot</name>
<url>http://artifactory:9090/libs-snapshot</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>plugins-release</name>
<url>http://artifactory:9090/plugins-release</url>
</pluginRepository>
<pluginRepository>
<snapshots />
<id>snapshots</id>
<name>plugins-snapshot</name>
<url>http://artifactory:9090/plugins-snapshot</url>
</pluginRepository>
</pluginRepositories>
<id>artifactory</id>
</profile>
</profiles>
<activeProfiles>
<activeProfile>artifactory</activeProfile>
</activeProfiles>
</settings>
Run Code Online (Sandbox Code Playgroud)
然后我转到我的个人资料,输入密码并复制加密密码,如下所示:
我在settings.xml中复制了这个密码,如下所示: …
artifactory ×10
maven ×4
docker ×3
jenkins ×3
artifact ×1
build ×1
dependencies ×1
docker-stack ×1
docker-swarm ×1
kubernetes ×1
maven-3 ×1
pom.xml ×1
sbt ×1
scala ×1