gpt4 book ai didi

github - 3rd 方站点如何生成构建/代码覆盖率徽章?

转载 作者:行者123 更新时间:2023-12-03 20:26:42 35 4
gpt4 key购买 nike

我的工作设置包括公司托管的 Github Enterprise Server 和 Azure Devops 管道。像 shields.io 这样的网站,我可以为构建成功或代码覆盖率生成徽章,似乎从未使用 DevOps 验证自己。然后徽章托管在 shields.io 上,这意味着这个第 3 方网站必须以某种方式访问​​我的构建过程。它们看起来像这样:

enter image description here

由于 github 以及所有构建管道显然都是公司内部的,我可以看到三个选项如何工作:

  • 尽管管道和一切都是私有(private)的,但构建成功状态是为整个网络公开托管的。这是设计使然,因为它并不真正被视为安全风险。知道我的内部项目的组织/项目名称/定义 ID 就无法做任何其他事情。
  • 这不应该发生,并且配置错误。我的设置中可能存在漏洞。
  • 有某种形式的身份验证正在进行,我不知道,例如只要我的浏览器登录到 Azure,我就只能看到徽章(不太可能,它似乎也可以在私有(private)模式下工作)

  • 我在网上或 stackoverflow 上找不到任何关于此的内容。我会很高兴看到任何解释这一点的资源,因为我不确定我是否可以安全地使用它们。使用 shields.io 是否存在安全风险?

    最佳答案

    您提到的徽章通常只是没有信息的空白 SVG 图像(您可以查看 templates here)。
    因此,对于创建 SVG(或 PNG)的服务:

  • 该服务通过某种 CI 系统从您那里获取更新数据
  • 该服务生成一个相应的图像(SVG 或 PNG),该图像附加到某个 GET端点

  • 该服务有两种方法来实现这一点:
  • 使用 shields.io 作为服务,将带有如何生成图像的信息的 JSON 发送到他们的 JSON endpoint
  • 使用 shields.io 作为库或通过任何自定义方式在内部实现图像生成。

  • 因此,无论哪种方式,拥有徽章的 SaaS 应用程序通常都会为它们自己服务(即使它们在内部调用 shields.io)。这意味着每个服务都可以自己实现任何安全措施。
    传递给 shields.io 的数据通常包括两个单词和一些颜色。因此,不会为了生成徽章而暴露太多信息(参见下面的示例)。此外,服务和 shields.io 之间的通信是加密的并通过 HTTPS 发送。
    对于隐私,一个例子是大公司通常拥有只能在内部访问的托管解决方案,因此徽章也只能在内部访问。
    您的问题中特别包含的徽章仅包含来自应用商店的公共(public)数据或 GitHub 项目的明星等。只要项目本身是公开的,这些数据通常是公开的。这些徽章经常使用 shields.io API 使用公共(public)数据自动生成它们。
    但是,如果您查看像 Coveralls 或 Travis 这样的徽章,您会看到他们拥有自己的徽章:
  • <img src="https://travis-ci.org/Kibibit/achievibit.svg?branch=master">
  • <img src="https://coveralls.io/repos/github/Kibibit/achievibit/badge.svg?branch=master">

  • 这是一个关于如何使用 shields.io 作为库创建徽章并提供服务的小 typescript 示例:
    一、安装 gh-badges
    npm i gh-badges --save
    这就是你使用它的方式:
    import { BadgeFactory } from 'gh-badges';

    (async () => {
    const bf = new BadgeFactory();

    const format = {
    format: 'svg',
    text: [ 'coverage', '90%' ],
    labelColor: '#894597',
    color: '#5d5d5d',
    template: 'for-the-badge',
    logo: [
    'data:image/png;base64,iVBORw0KGgoAAAA',
    'NSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJL',
    'R0QA/wD/AP+gvaeTAAAA/0lEQVRYhe3WMU7DM',
    'BjFcadqh0qdWWBl7QU4Ss/AjsREF8RdOhYO0E',
    'qoN2DhFIgBOvBjIIMVxSFyUiEhP8lD7C/v/T9',
    '7sEMoKkoIe+Npn8qpOgCM2VBVVa1ZkzFDcjQd',
    'apDqLIR+u/jnO1AACkABKABdAO9DjHEWfb7lA',
    'LwOAQghXPXx6gJ4zE3GJIRwE0095Zhc4PO3iz',
    '7x7zoq+cB5bifr9tg0AK7xFZXcZYXXZjNs+wB',
    'giofG8hazbIDaeI5dFwAu8dxY2mE+KDyCWGCT',
    'YLj3c86xNliMEh5BVLjFseNEjnVN8pU0BsgSh',
    '5bwA5YnC25AVFjhpR6rk3Zd9K/1Dcae2pUn6m',
    'qiAAAAAElFTkSuQmCC'
    ].join('')
    };

    return bf.create(format);
    })();
    这与上述作为服务端点发送到 shields.io 的数据基本相同。
    您可以在 Controller 上下文中查看完整示例 herehere .
    关于它的风险,主要是考虑这里实际暴露了哪些数据。这几乎没有。如果您担心数据隐私,您可以自己生成徽章并提供服务或根据需要私下嵌入它们;-)

    关于github - 3rd 方站点如何生成构建/代码覆盖率徽章?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59881949/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com