如何从凭证存储区下载詹金斯机密文件?

red*_*888 9 jenkins jenkins-plugins

我只能上传现有的詹金斯机密文件,而不能下载现有的机密文件。

如何下载已上传的现有机密文件以确认其内容?

Abd*_*ull 9

如果您可以访问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 ""
  }
Run Code Online (Sandbox Code Playgroud)

更改fileName为您要打印的文件名。该脚本将打印出Jenkins凭证存储区的全局域中具有fileName文件名的文件内容。

该脚本的可修正警告:


Abd*_*ull 6

如果您在运行 Jenkins 的机器上具有 shell 访问权限和sudo // Jenkins Unix 用户权限,则可以通过执行以下操作来检索机密文件root

  • 在某些有权访问机密文件的 Jenkins 作业中,选择“配置”
  • “配置”界面的“构建环境”下,选择“使用秘密文本或文件”
  • 单击“添加” -> “秘密文件”。这将创建一个新的Secret 文件绑定。
  • 选择“特定凭据”,然后从其下方的下拉菜单中选择您要检索的机密文件。假设您的秘密文件存储在文件名my-secret-file.txt下。
  • 为这个秘密文件分配一个变量,例如MY_SECRET_FILE_TXT
  • 现在,在Pre Steps下,单击Add pre-build step -> Execute shell
  • 命令文本区域中,添加以下 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
    
    Run Code Online (Sandbox Code Playgroud)
  • 单击“保存”以保存此配置。

下次触发该项目的构建时,秘密文件应出现在该项目的工作区中,即位置$WORKSPACE/my-secret-file.txt。例如,在我安装了软件包和守护进程的Ubuntu 14.04.5 LTSjenkins安装中,该位置是/var/lib/jenkins/workspace/$JENKINS_PROJECT_NAME/my-secret-file.txt