使用Jenkins 1.501和Jenkins Git插件1.1.26
我有3个不同的git repos,每个都有多个项目.
现在我需要将3 git repos中的所有项目签出到Jenkins slave上的相同工作区.我已经定义了每个git repo:源代码管理:多个SCM.但每次签出回购时,前一个回购(及其相关项目)都会被删除.
我读过这个:
http://jenkins.361315.n4.nabble.com/multiple-git-repos-in-one-job-td4633300.html
但它并没有真正帮助.我试图在所有repos的repo(可选)的Local子目录下指定相同的文件夹,但它给出了相同的结果.
如果使用Jenkins根本不可能,我猜一些预构建步骤/脚本可以用来将项目移动到正确的位置.它不是修改项目的构建配置的选项.
我有一台Ubuntu 12.04的机器,并安装了Jenkins ver.1.424.6使用基于本指南的 apt-get ,但有一个新版本:
New version of Jenkins (1.447.2) is available for download (changelog).
Run Code Online (Sandbox Code Playgroud)
如果我按下载,我会得到一个jenkins.war文件......但是如何使用它来升级我当前的安装呢?或者在apt存储库更新之前是不可能的?
我正在尝试使用KDiff3来解决Windows上的冲突.但是当运行合并时,我得到:
KDiff3:"有一种线端风格冲突"
没有任何合并/解决:
即使我在运行合并之前选择了DOS行结束:
有任何想法吗?
如果我只是保存而不是按下合并按钮,它似乎有效.这可能是一个解决方案.
我在eclipse helios中创建了一个带有单个子模块的最小maven项目.
在src/test/resources文件夹中,我放了一个文件"install.xml".在文件夹src/test/java中,我创建了一个包含单个类的包:
@Test
public void doit() throws Exception {
URL url = this.getClass().getClassLoader().getResource("install.xml");
System.out.println(url.getPath());
}
Run Code Online (Sandbox Code Playgroud)
但是当我将代码作为junit 4单元测试运行时,我只得到一个NullPointerException.这之前已经运行了数百万次.有任何想法吗?
我遵循了这个指南:
http://www.fuyun.org/2009/11/how-to-read-input-files-in-maven-junit/
但仍然得到相同的错误.
我在应用程序中读取了一个指定语言代码的文件:
public void setResources(String locale) {
// validate locale
// ULocale lo = new ULocale(locale);
// System.out.println(lo.getDisplayCountry());
}
Run Code Online (Sandbox Code Playgroud)
必须采用以下格式:<ISO 639 language code>_<ISO 3166 region code>
例如.en_UK,en_US等.是否可以在继续之前验证语言环境字符串是否有效?
我需要使用build.bat文件构建3个独立的maven项目(因为tycho聚合不是一个选项 - 请参阅romaintaz回答的评论).我试过(从build文件夹执行 - 见下文):
cd ../projectA
mvn clean install -U
cd ..
cd ../projectB
mvn clean install -U
cd ..
cd ../projectC
mvn clean install -U
Run Code Online (Sandbox Code Playgroud)
项目的文件夹结构是:
build
|--> build.bat
projectA
|--> pom.xml
projectB
|--> pom.xml
projectC
|--> pom.xml
Run Code Online (Sandbox Code Playgroud)
但只有projectA是构建projectB和projectC被跳过.关于如何修改上面的bat文件的任何想法,以便如果以前的项目成功构建,则构建以下项目?
我在Windows上运行SourceTree 1.6.11.我克隆了一个Git存储库,但它没有显示我的远程分支:
SourceTree只显示本地分支吗?
它显示了所有标签.
我有一个maven settings.xml位于:
/home/u123/.m2/settings.xml
Run Code Online (Sandbox Code Playgroud)
我指定一个远程maven存储库:
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<profiles>
<profile>
<id>default</id>
<repositories>
<repository>
<id>my.repo</id>
<url>http://myrepo/ </url>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>default</activeProfile>
</activeProfiles>
</settings>
Run Code Online (Sandbox Code Playgroud)
在这个repo中,我已经部署了一个工件 - 实际上它是一个gradle插件.
现在我尝试使用下面的build.gradle文件构建另一个需要使用此插件/工件的项目:
apply plugin: 'java'
apply plugin: 'maven'
buildscript {
dependencies {
classpath 'com.test:my-gradle-plugin:1.0.0-SNAPSHOT'
}
}
Run Code Online (Sandbox Code Playgroud)
但是构建失败了:
...
> Could not find group:com.test, module:my-gradle-plugin, version:1.0.0-SNAPSHOT.
...
Run Code Online (Sandbox Code Playgroud)
即使我有上面指向远程maven存储库的settings.xml文件,Gradle也找不到my-gradle-plugin.
如果我在 build.gradle文件中指定存储库,它可以工作:
buildscript {
repositories {
maven {
url "http://myrepo/"
}
}
dependencies {
classpath 'com.test:my-gradle-plugin:1.0.0-SNAPSHOT'
}
}
Run Code Online (Sandbox Code Playgroud)
根据这篇文章:
http://forums.gradle.org/gradle/topics/have_mavenlocal_check_m2_home_conf_settings_xml
似乎gradle考虑了settings.xml文件,那么出了什么问题呢?
Refspec和Branch说明符之间有什么区别(默认为空):在下面的Jenkins作业配置中:
我试图在作业配置中设置Refspec选项:
+refs/heads/master:refs/remotes/origin/master
Run Code Online (Sandbox Code Playgroud)
在我的构建从站上的克隆存储库中,.git/config文件如下所示:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = https://user:pass@git.internal.com/scm/PROJECT/project.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
Run Code Online (Sandbox Code Playgroud)
似乎fetch的值不正确(从jenkins作业配置中读取).此外,它对磁盘空间消耗没有影响.
我使用下面的方法递归列出包含该文件夹的文件夹中的所有文件 $pattern
Get-ChildItem $targetDir -recurse | Select-String -pattern "$pattern" | group path | select name
Run Code Online (Sandbox Code Playgroud)
但它似乎都列出$pattern
了名称和内容中的文件,例如当我运行上面的内容时$pattern="SAMPLE"
:
C:\tmp\config.include
C:\tmp\README.md
C:\tmp\specs\SAMPLE.data.nuspec
C:\tmp\specs\SAMPLE.Connection.nuspec
Run Code Online (Sandbox Code Playgroud)
现在:
C:\tmp\config.include
C:\tmp\README.md
Run Code Online (Sandbox Code Playgroud)
确实包含SAMPLE关键字/文本,但我不关心,我只需要命令列出文件名而不是文件,其内容与模式匹配.我错过了什么?
基于以下答案,我也尝试过:
$targetDir="C:\tmp\"
Get-ChildItem $targetDir -recurse | where {$_.name -like "SAMPLE"} | group path | select name
Run Code Online (Sandbox Code Playgroud)
和:
$targetDir="C:\tmp\"
Get-ChildItem $targetDir -recurse | where {$_.name -like "SAMPLE"} | select name
Run Code Online (Sandbox Code Playgroud)
但它不会返回任何结果.
git ×3
jenkins ×3
maven ×2
batch-file ×1
classloader ×1
eclipse ×1
gradle ×1
java ×1
kdiff3 ×1
locale ×1
maven-2 ×1
powershell ×1
ubuntu ×1
war ×1