登录 GitHub 容器注册表
您可以通过登录相应的 GitHub 容器注册表来发布包并下载私有包。
您可以通过两种方式登录容器注册表
- 向 CodeQL CLI 传递
--github-auth-stdin选项,然后通过标准输入提供 GitHub Apps 令牌或个人访问令牌。 - 将
GITHUB_TOKEN环境变量设置为 GitHub Apps 令牌或个人访问令牌。
发布您的 CodeQL 包
要与他人共享您的 CodeQL 包,您可以将其发布到容器注册表。
在发布前配置 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
当您准备好将包发布到 GitHub 容器注册表时,您可以在包目录的根目录运行以下命令
codeql pack publish
已发布的包将在 qlpack.yml 文件中指定范围的 GitHub 组织的 Packages(软件包)部分显示。
注意
如果您将模型包发布到 GitHub 容器注册表,以在默认设置配置中扩展组织中所有仓库的覆盖范围,则需要确保运行代码扫描的仓库能够访问这些模型包。欲了解更多信息,请参阅 编辑默认设置的配置 和 配置软件包的访问控制和可见性。
下载现有的 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 命令将下载的包存储在内部位置,该位置不用于本地修改。如果在下载后对包进行修改,可能会导致意外(且难以排查)的行为。如需了解更多关于自定义包的信息,请参阅 创建和使用 CodeQL 包。