认证到 GitHubContainer registries
通过对合适的GitHubContainer registry进行身份验证,可以发布包和下载私有包。
您可以使用两种方式对 Container registry 进行身份验证:
- 将
--github-auth-stdin选项传递给CodeQL CLI,然后通过标准输入提供GitHub Apps令牌或personal access token。 - 将
GITHUB_TOKEN环境变量设置为 GitHub Apps 令牌或 personal access token。
发布CodeQL包
若要与他人共享CodeQL包,可以将其发布到 。Container registry
在发布前配置 qlpack.yml 文件
在发布之前,可以检查和修改 CodeQL 包的配置详细信息。 在你喜欢的文本编辑器中打开 qlpack.yml 文件。
library: # set to true if the pack is a library. Set to false or omit for a query pack
name: <scope>/<pack>
version: <x.x.x>
description: <Description to publish with the package>
defaultSuite: # optional, one or more queries in the pack to run by default
- query: <relative-path>/query-file>.ql
defaultSuiteFile: default-queries.qls # optional, a pointer to a query-suite in this pack
license: # optional, the license under which the pack is published
dependencies: # map from CodeQL pack name to version range
-
`name:`必须遵循`<scope>/<pack>`格式,`<scope>`是要发布到的GitHub组织,而`<pack>`是包的名称。 -
最多只能选择
defaultSuite和defaultSuiteFile中的一个。 有两种不同的方法来定义要运行的默认查询套件,第一种是直接在 qlpack.yml 文件中指定查询,第二种是在包中指定查询套件。
正在运行 codeql pack publish
当您准备好将包发布到 GitHubContainer registry 时,可以在包的根目录中运行以下命令:
codeql pack publish
已发布的包将显示在qlpack.yml文件中作用域指定的GitHub组织的包部分中。
注意
如果要将模型包 GitHubContainer registry 发布到组织中的所有存储库,以便扩展至默认设置配置的一部分,那么需要确保运行代码扫描的存储库可以访问这些模型包。 有关详细信息,请参阅 编辑默认设置配置 和 配置包的访问控制和可见性。
下载现有 CodeQL 包
若要运行其他人创建的包,必须先运行以下命令来下载它:
codeql pack download <scope>/<pack>@x.x.x
-
`<scope>`:要从中下载的组织的名称 GitHub 。 -
`<pack>`:要下载的包的名称。 -
`@x.x.x`:可选版本号。 如果省略,将下载最新版本。
此命令接受多个包的参数。
如果编写脚本来指定要下载的查询包的特定版本号,请记住,将版本 CodeQL 更新到较新的查询包时,可能还需要切换到较新版本的查询包。 与已固定到非常旧版本的查询包一起使用时,较新版本 CodeQL_的性能可能会_ 降低。 有关详细信息,请参阅“CodeQL 查询包参考”。
使用CodeQL软件包分析CodeQL数据库
若要使用CodeQL包分析CodeQL数据库,请运行以下命令:
codeql database analyze <database> <scope>/<pack>@x.x.x:<path>
-
`<database>` CodeQL:要分析的数据库。 -
`<scope>`:包发布到的组织的名称 GitHub 。 -
`<pack>`:正在使用的包的名称。 -
`@x.x.x`:可选版本号。 如果省略,将使用最新版本。 -
`:<path>`:查询、目录或查询套件的可选路径。 如果省略,将使用包的默认查询套件。
该 analyze 命令将运行任何指定 CodeQL 包的默认套件。 可以指定要用于分析CodeQL数据库的多个CodeQL包。 例如:
codeql <database> analyze <scope>/<pack> <scope>/<other-pack>
注意
`codeql pack download` 命令将其下载的包存储在不用于本地修改的内部位置。 如果在下载后修改包,可能会导致意外(且很难进行排除故障)的行为。 有关自定义包的详细信息,请参阅 [AUTOTITLE](/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/creating-and-working-with-codeql-packs)。