【问题标题】:How do you specify additional trusted files with the Jenkins Github Branch Source plugin?如何使用 Jenkins Github Branch Source 插件指定其他受信任的文件?
【发布时间】:2019-11-15 21:23:15
【问题描述】:

我使用 GitHub 分支源插件创建了一个 Jenkins 多分支管道。 Jenkinsfile 本质上只是调用包含所有构建/部署逻辑的 Cake Build 脚本(build.ps1build.cake)。这让我可以轻松地转移到另一个 CI 服务。

不幸的是,我似乎无法弄清楚如何将我的 Cake Build 脚本添加为 trusted file,以便来自 forks 的 PR 将从源代码库中提取文件。 Discover pull requests from forks行为的Trust设置似乎表明除了Jenkinsfile之外还可以有其他trusted files

没人

来自分叉的拉取请求都将被视为不受信任。这意味着,如果 Jenkins 需要可信文件(例如 Jenkinsfile),该文件的内容将从源存储库的目标分支中检索,而不是从 fork 存储库的拉取请求分支中检索。 p>

但是,我似乎找不到任何有关添加其他 trusted files 的文档。这样做的主要原因是防止来自 fork 的 PR 从 Cake 脚本访问 credentials。他们无法更改 Jenkinsfile,但他们仍然可以更改 Cake 脚本以公开凭据。

真的可以加其他trusted files吗?

【问题讨论】:

  • 我也有同样的问题。你想明白了吗?
  • @UltimaWeapon 不幸的是,我没有。我最终改用 Azure Pipelines。
  • 我明白了。感谢您提供信息。

标签: jenkins github jenkins-plugins


【解决方案1】:

Jenkins 好像不支持这个。我的解决方案是从基本版本手动检查不受信任的文件。首先获取基本版本的 commit 哈希:

def commit = sh(
    script: 'git rev-parse HEAD',
    returnStdout: true
).trim()

def base = sh(
    script: "git rev-list --parents -n 1 ${commit}",
    returnStdout: true
).trim().split('\\s+')[2]

git rev-list --parents -n 1 ${commit} 将返回当前提交的哈希,这是一个由 Jenkins 创建的合并提交; PR 的最新提交和目标分支的最新提交,以空格分隔(例如05e9322574ea03003f87dcbb44f172e6fa62581f b3f6ef892af9c645f490106757d7d05df3a26060 069ffd55ae36414a51b4de166aef86966f9447a8)。因此,我们通过trim().split('\\s+')[2]获取目标分支的最新提交的哈希。

现在我们可以对 PR 不信任的任何文件执行 sh "git checkout ${base} FILE"

如果 PR 已与最新版本的目标分支合并,则此方法不起作用。所以我所做的是这样的:

// revert untrusted files to the base version and backup it before we execute any untrusted code so the attacker
// don't have a chance to put a malicious content
def latest = sh(script: 'git rev-parse HEAD', returnStdout: true).trim()

sh "git checkout origin/${env.CHANGE_TARGET}"

def baseCompose = readFile('docker-compose.yml')

// switch back to latest commit
sh "git checkout ${latest}"
sh 'git clean -d -f -f -q -x'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    相关资源
    最近更新 更多