我的一些测试是针对二进制文件运行的。例如。 keystore.jks。 这是一个测试密钥库,但我不想在GH-Repo中使用这个文件。将这些文件添加到Jenkins-Job的最佳方法是什么?
我认为必须有一个插件来解决这个问题,但我找不到。
更新
"复制到奴隶" -plugin适用于"正常"如果我将Job定义为管道,如何将文件从userContent复制到slave?
答案 0 :(得分:0)
我找不到Jenkins的解决方案 - 所以我把它交给了Gradle
apply plugin: 'de.undercouch.download'
// Username + Token gibt es unter
// http://localhost:10080/me/configure
//
// Diese Vars sind definiert:
// JENKINS_HOST
// JENKINS_PORT
// JENKINS_USER
// JENKINS_TOKEN
//
// Weitere Infos: https://www.michel-kraemer.com/recipes-for-gradle-download/
task downloadCertIfItDoesNotExist(
type: Download ) {
def resourceFolder = new File("${project.projectDir}/src/test/resources")
def etcFolder = new File( "${resourceFolder}/etc" )
def zip = new File("${resourceFolder}/etc.zip")
def jenkinsHost = System.getenv('JENKINS_HOST')
def jenkinsPort = System.getenv('JENKINS_PORT')
def ciHost = System.getenv('CI_HOSTNAME')
// Sample:
// http://mobiad.int.mikemitterer.at:10080/userContent/certs/kdeneon.int.mikemitterer.at/etc/*zip*/etc.zip
def url = "http://${jenkinsHost}:${jenkinsPort}/userContent/certs/${ciHost}/etc/*zip*/etc.zip"
// https://docs.gradle.org/current/userguide/more_about_tasks.html
onlyIf {
!etcFolder.exists() || project.hasProperty('forceETCUpdate')
}
src url
dest zip
username System.getenv('JENKINS_USER')
password System.getenv('JENKINS_TOKEN')
quiet false
}
task unzipETCZip(
type: Copy,
dependsOn: downloadCertIfItDoesNotExist) {
def resourceFolder = new File("${project.projectDir}/src/test/resources")
def etcFolder = new File( "${resourceFolder}/etc" )
def zip = new File("${resourceFolder}/etc.zip")
onlyIf {
zip.exists()
}
from zipTree(downloadCertIfItDoesNotExist.dest)
into resourceFolder
}
task prepareCertsFolder (
group: "Jenkins",
type : Delete,
dependsOn: [ unzipETCZip ] ) {
def resourceFolder = new File("${project.projectDir}/src/test/resources")
def zip = new File("${resourceFolder}/etc.zip" )
onlyIf {
zip.exists()
}
delete zip
}
这个解决方案对我来说非常好。
这是我的Jenkins文件:
...
stage('Test') {
steps {
sh './gradlew test -PforceETCUpdate'
}
}
...
在我的build.gradle中,我将测试连接到prepareCertsFolder
test.dependsOn "prepareCertsFolder"
希望这有助于某人...