詹金斯共享图书馆;执行maven命令时,请参阅静态资源(xml)文件



我们目前正在建立一个Jenkins共享库,用于几个Java项目。我们的文件vars/utils.groovy包含以下(简化的(片段:

def mvn(String mvnCommand) {
// withCredentials(userVarEtc=USER, pwVarEtc=PASS, etc, etc) {
sh "mvn ${mvnCommand} -Duser${USER} -Dpass${PASS} --settings maven_settings.xml"
// }
}

尽管上面的代码段运行良好,但它要求所有Java项目在项目的根目录中保持完全相同的maven_settings.xml模板文件。为了防止重复,我们希望在共享库中添加maven_settings.xml文件,并在上面的groovy方法中引用其共享库路径。有人知道怎么做吗?

我能想到两种可能的解决方案。

解决方案1

  1. 将文件maven_settings.xml保存在resources目录中。

    shared-library-repository
    +--resources/maven_settings.xml
    +--vars/utils.groovy
    
  2. 在共享库方法中,在调用maven命令之前,先读取此文件并写入工作区。

    def mvn(String mvnCommand) {
    def myMavenSettings = libraryResource 'maven_settings.xml'
    writeFile file: 'maven_settings.xml', text: myMavenSettings
    withCredentials(userVarEtc=USER, pwVarEtc=PASS, etc, etc) {
    sh "mvn ${mvnCommand} -Duser${USER} -Dpass${PASS} --settings $WORKSPACE/maven_settings.xml"
    }
    }
    

溶液2

  1. 安装配置文件提供程序插件。

  2. 转到管理Jenkins>托管文件>添加新配置

  3. 单击Maven settings.xml,然后单击Submit

  4. 键入名称并将内容粘贴到指定的字段中。

  5. 重命名或复制文件ID,然后单击保存

  6. 在共享库方法中,调用插件步骤来运行maven命令。

    def mvn(String mvnCommand) {
    configFileProvider([configFile(fileId: '<file_ID>', variable: 'MAVEN_SETTINGS')]) {
    withCredentials(userVarEtc=USER, pwVarEtc=PASS, etc, etc) {
    sh "mvn ${mvnCommand} -Duser${USER} -Dpass${PASS} --settings $MAVEN_SETTINGS"
    }
    }
    }
    

最新更新