admin管理员组文章数量:1573361
teamcity
您可以通过几种方式检索TeamCity工件? 我说有很多选择 ! 如果您使用的是Java构建工具,那么可以使用简单的HTTP请求,Ant + Ivy,Gradle和Maven下载和使用TeamCity构建配置产生的二进制文件。 怎么样? 继续阅读。构建配置“ id”
在检索任何构建配置的工件之前,您需要知道其"id"
,当浏览相应的配置时,可以在浏览器中看到它的"id"
。 让我们以teamcity.jetbrains上托管的IntelliJ IDEA社区版项目为例。 它的“ Community Dist”构建配置提供了许多我们将要使用的工件。 从下面的屏幕截图可以看出,其"id"
为"bt343"
。
HTTP
匿名HTTP访问可能是获取TeamCity工件的最简单方法,URL是:
http://server/guestAuth/repository/download/<btN>/<buildNumber>/<artifactName>
为了满足该要求,需要指定3个参数:
btN | 如上所述,构建配置"id" 。 |
buildNumber | 内部版本号或预定义常量之一: "lastSuccessful" , "lastPinned" 或"lastFinished" 。 例如,您可以从上一次成功的 TeamCity执行中下载定期的IDEA构建。 |
artifactName | 工件名称,例如"ideaIC-118.SNAPSHOT.win.zip" 。 也可以采用"artifactName!archivePath" 的形式来读取存档的内容,例如IDEA的生成文件 。 您可以通过请求由TeamCity生成的特殊"teamcity-ivy.xml" 工件来获取在特定构建中生成的所有工件的列表。 |
蚂蚁+常春藤
发布到TeamCity的所有工件都带有"teamcity-ivy.xml"
Ivy描述符,从而有效地使TeamCity成为Ivy存储库。 下面的代码将IDEA发行版中的"core/annotations.jar"
"download/ivy"
到"download/ivy"
目录中:
"ivyconf.xml"
<ivysettings>
<settings defaultResolver='teamcity-repo'/>
<resolvers>
<url name='teamcity-repo' alwaysCheckExactRevision='yes' checkmodified='true'>
<ivy pattern='http://teamcity.jetbrains/guestAuth/repository/download/[module]/[revision]/teamcity-ivy.xml'/>
<artifact pattern='http://teamcity.jetbrains/guestAuth/repository/download/[module]/[revision]/[artifact](.[ext])'/>
</url>
</resolvers>
</ivysettings>
"ivy.xml"
<ivy-module version="1.3">
<info organisation="com.jetbrains" module="idea"/>
<dependencies>
<dependency org="org" name="bt343" rev="lastSuccessful">
<include name="core/annotations" ext="jar"/>
</dependency>
</dependencies>
</ivy-module>
"build.xml"
<project name="teamcity-download" default="download" xmlns:ivy="antlib:org.apache.ivy.ant">
<target name="download" xmlns:ivy="antlib:org.apache.ivy.ant">
<taskdef uri="antlib:org.apache.ivy.ant" resource="org/apache/ivy/ant/antlib.xml"/>
<ivy:configure file = "${basedir}/ivyconf.xml"/>
<ivy:resolve file = "${basedir}/ivy.xml"/>
<ivy:retrieve pattern = "${basedir}/download/ivy/[artifact].[ext]"/>
</target>
</project>
Gradle
与上面的Ivy示例相同,由于其内置的Ivy支持,使用Gradle检索TeamCity工件相当容易。 除了使用自定义Gradle任务将相同的jar文件"download/gradle"
到"download/gradle"
目录外,我们还可以将其用作Java类的"compile"
依赖项,并导入IDEA的@NotNull
批注:
"Test.java"
import org.jetbrains.annotations.NotNull;
public class Test
{
private final String data;
public Test ( @NotNull String data ){ this.data = data; }
}
"build.gradle"
apply plugin: 'java'
repositories {
ivy {
ivyPattern 'http://teamcity.jetbrains/guestAuth/repository/download/[module]/[revision]/teamcity-ivy.xml'
artifactPattern 'http://teamcity.jetbrains/guestAuth/repository/download/[module]/[revision]/[artifact](.[ext])'
}
}
dependencies {
compile ( 'org:bt343:lastSuccessful' ){
artifact {
name = 'core/annotations'
type = 'jar'
}
}
}
task copyJar( type: Copy ) {
from configurationspile
into "${ project.projectDir }/download/gradle"
}
Maven
将Maven与TeamCity结合使用的最佳方法是设置Artifactory存储库管理器及其TeamCity插件 。 这样,您的构建所生成的工件就可以很好地部署到Artifactory,并且可以像从任何其他远程Maven存储库中一样从那里进行提供。
但是,您仍然可以在Maven中使用TeamCity工件,而无需任何其他设置。 "ivy-maven-plugin"
桥接了两个世界,使您可以将Ivy解析器插入Maven的运行时环境,下载所需的依赖项,并将它们添加到相应的"compile"
或"test"
作用域中。
让我们从Gradle示例中编译相同的Java源代码,但是这次使用Maven。
"pom.xml"
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns = "http://maven.apache/POM/4.0.0"
xmlns:xsi = "http://www.w3/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache/POM/4.0.0
http://maven.apache/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>maven</artifactId>
<packaging>jar</packaging>
<version>0.1-SNAPSHOT</version>
<name>[${project.groupId}:${project.artifactId}:${project.version}]</name>
<description>Ivy Maven plugin example</description>
<build>
<plugins>
<plugin>
<groupId>com.github.goldin</groupId>
<artifactId>ivy-maven-plugin</artifactId>
<version>0.2.5</version>
<executions>
<execution>
<id>get-ivy-artifacts</id>
<goals>
<goal>ivy</goal>
</goals>
<phase>initialize</phase>
<configuration>
<ivyconf>${project.basedir}/ivyconf.xml</ivyconf>
<ivy>${project.basedir}/ivy.xml</ivy>
<dir>${project.basedir}/download/maven</dir>
<scope>compile</scope>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
当该插件运行时,它使用我们之前看到的相同的"ivyconf.xml"
和"ivy.xml"
文件解析IDEA注释工件,将其复制到"download/maven"
目录并添加到"compile"
作用域,因此我们的Java源代码可以编译。
GitHub项目
我的GitHub项目中提供了所有演示的示例。 随意克隆并运行它:
git clone git://github/evgeny-goldin/teamcity-download-examples.git
cd teamcity-download-examples
chmod +x run.sh dist/ant/bin/ant gradlew dist/maven/bin/mvn
./run.sh
资源资源
以下链接可以为您提供更多详细信息:
- TeamCity –访问构建工件的模式
- TeamCity –通过HTTP访问服务器
- TeamCity –使用Ant Build脚本配置工件依赖项
- Gradle –常春藤仓库
-
"ivy-maven-plugin"
就这样,您已经看到了–可以使用以下四种方式之一完美地访问TeamCity工件:直接HTTP访问,Ant + Ivy,Gradle或Maven。 您使用哪一个? 让我知道!
参考:从Goldin ++博客的JCG合作伙伴 Evgeny Goldin 使用HTTP,Ant,Gradle和Maven获取TeamCity工件 。
翻译自: https://www.javacodegeeks/2012/05/teamcity-artifacts-http-ant-gradle-and.html
teamcity
本文标签: 工件httpteamcityTeamCitymavenGradle
版权声明:本文标题:teamcity_TeamCity工件:HTTP,Ant,Gradle和Maven 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1727746243a1127837.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论