如何解决为通用管道代码创建和单元测试 PSL
我是管道语言的新手,所以对我一无所知。
我需要创建一个新的 PSL 存储库来保存我们的公共代码,以便它可以在多个存储库中重复使用。我还介绍了一些在模拟 Artifactory
时给我带来麻烦的初步单元测试。
我创建了 PSL repo,结构如下:
mypsl
|_src
|_org.my.utils
|_Constants.groovy
|_test
|_resources
|_vars
|_downloadFromArtifactorySpecs.groovy
|_vars
|_downloadFromArtifactory.groovy
.gitignore
pom.xml
downloadFromArtifactory.groovy
def call(Map config=[:]) {
if (config.target) {
sh "mkdir -p 777 ${config.target}"
}
def server = Artifactory.newServer url: config.artifactoryUrl,credentialsId: config.credentialsId
def downloadSpec = """{
"files": [
{
"pattern": "${config.pattern}","target": "${config.target}","flat": "true"
}
]
}"""
server.download(downloadSpec)
}
downloadFromArtifactorySpecs.groovy
import com.homeaway.devtools.jenkins.testing.JenkinsPipelineSpecification
class downloadFromArtifactorySpec extends JenkinsPipelineSpecification {
def downloadFromArtifactory = null
def PATTERN = "artifactoryPath"
def TARGET = "dist/123/"
def ARTIFACTORY_URL = "https://art-bobcat.com/artifactory"
def CREDENTIALS_ID = "svc_d_artifactory"
def setup() {
downloadFromArtifactory = loadPipelineScriptForTest("vars/downloadFromArtifactory.groovy")
downloadFromArtifactory.getBinding().setVariable( "Artifactory",null)
explicitlyMockPipelineStep("Artifactory.newServer")(_) >> {
return "Dummy Message 2"
}
explicitlyMockPipelineStep("server.download")(_) >> {
return "Dummy Message 3"
}
}
def "calls server.download" () {
when:
downloadFromArtifactory pattern:PATTERN,target:TARGET,artifactoryUrl:ARTIFACTORY_URL,credentialsId:CREDENTIALS_ID
then:
1 * getPipelineMock("sh")("mkdir -p 777 ${TARGET}")
1 * explicitlyMockPipelineStep("server.download")(_)}
}
}
我这样做对吗?或者我应该将 downloadFromArtifactory.groovy
逻辑移到 src
文件夹并创建类吗?我想也许我可以在 var
文件夹中执行此操作。但我有一种感觉,我做错了。
另外,我不确定 Artifactory
是否必须添加新的依赖项以及如何导入它。它未能对空对象执行 Artifactory.newServer
。我不确定是不是这个:
<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>artifactory</artifactId>
<version>3.10.0</version>
</dependency>
有人能解释一下吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。