我只能上传现有的詹金斯秘密文件,而不能下载现有的。
如何下载我上传的现有秘密文件以确认其内容?
如果您可以访问 Jenkins 实例的脚本控制台(例如,通过在浏览器中访问https://jenkins.example.com/script),您可以运行以下脚本:
import com.cloudbees.plugins.credentials.*;
import com.cloudbees.plugins.credentials.domains.Domain;
import org.jenkinsci.plugins.plaincredentials.impl.FileCredentialsImpl;
println "Jenkins credentials config file location=" + SystemCredentialsProvider.getConfigFile();
println ""
def fileName = "my-secret-file.txt"
SystemCredentialsProvider.getInstance().getCredentials().stream().
filter { cred -> cred instanceof FileCredentialsImpl }.
map { fileCred -> (FileCredentialsImpl) fileCred }.
filter { fileCred -> fileName.equals( fileCred.getFileName() ) }.
forEach { fileCred ->
String s = new String( fileCred.getSecretBytes().getPlainData() )
println "XXXXXX BEGIN a secret file with fileName=" + fileName + " XXXXXXXXXXXX"
println s
println "XXXXXX END a secret file with fileName=" + fileName + " XXXXXXXXXXXX"
println ""
}
更改fileName为您要打印的文件名。此脚本将打印出 Jenkins 凭证存储的全局域中fileName文件名的文件内容。
此脚本的可修复警告:
如果您在运行 Jenkins 的机器上有 shell 访问权限和sudo // Jenkins Unix 用户权限,则可以通过执行以下操作来检索秘密文件:root
MY_SECRET_FILE_TXT.在命令文本区域中,添加以下 shell 脚本:
echo "executing user is $(whoami)"
# remove my-secret-file.txt before possibly getting an overwriting error
rm -f $WORKSPACE/my-secret-file.txt
echo "Jenkins project workspace: $WORKSPACE"
cp $MY_SECRET_FILE_TXT $WORKSPACE
下次为此项目触发构建时,秘密文件应出现在此项目的工作区中,即 location $WORKSPACE/my-secret-file.txt。例如,在我安装了 package 和 daemon 的Ubuntu 14.04.5 LTS安装中jenkins,该位置是/var/lib/jenkins/workspace/$JENKINS_PROJECT_NAME/my-secret-file.txt
脚本控制台的标记答案很棒。
还有这个脚本将列出可以从控制台运行的所有秘密: https ://github.com/tkrzeminski/jenkins-groovy-scripts/blob/master/show-all-credentials.groovy