此 Pipe 使用 Snyk 来查找、修复并监控应用依赖项和 Docker 镜像中的已知漏洞。
将以下代码片段添加到您的 bitbucket-pipelines.yml 文件的 script 部分:
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: "<string>"
# LANGUAGE: "<string>" # Required unless SNYK_TEST_JSON_INPUT is set
# IMAGE_NAME: "<string>" # Only required if LANGUAGE set to "docker"
# SNYK_BASE_IMAGE: "<string>" # Custom base image
# CODE_INSIGHTS_RESULTS: "<boolean>" # Optional.
# SNYK_TEST_JSON_INPUT: "<string>" # Optional. The filename or path of a JSON file containg the output from running a test with the Snyk CLI (with json output option).
# PROTECT: "<boolean>" # Optional.
# DONT_BREAK_BUILD: "<boolean>" # Optional.
# MONITOR: "<boolean>" # Optional.
# SEVERITY_THRESHOLD: "<low|medium|high|critical>" # Optional.
# ORGANIZATION: "<string>" # Optional.
# PROJECT_FOLDER: "<string>" # Optional.
# TARGET_FILE: "<string>" # Optional.
# EXTRA_ARGS: "<string>" # Optional.
# DEBUG: "<boolean>" # Optional.
# SNYK_API: "<string"> # Optional.
(*)= 必需变量。
通过将 Snyk 集成到 Bitbucket Pipelines,您可以持续测试、修复并监控代码库中依赖项和 Docker 镜像的已知漏洞。
要了解有关 Snyk 的更多信息,请访问我们的网站。
对于具有更复杂环境的语言/包管理器(例如使用 Maven 或 Gradle 的 Java),您应在管道中直接使用 Snyk CLI。请参阅“直接使用 Snyk CLI”示例。如果您还想生成 Code Insights 报告,可以将 Snyk CLI 测试输出送入此 Pipe——请参阅“根据现有 Snyk JSON 输出生成 Code Insights 报告”示例。
使用此 Pipe 需要 Snyk API 令牌。
使用 Snyk 扫描 Node.js 应用,如果发现任何漏洞则中断构建。
script:
- npm install
- npm test
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "node"
- npm publish
使用自定义提供的 Docker 镜像来运行您的 Snyk 扫描。如果您不想使用默认的 Snyk 镜像,此功能会很有用。镜像格式为 <MY_CUSTOM_IMAGE>:<TAG>,其中 MY_CUSTOM_IMAGE 和 TAG 分别对应 SNYK_BASE_IMAGE 和 LANGUAGE 变量。
script:
- docker build -t $IMAGE_NAME .
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "latest"
SNYK_BASE_IMAGE: $BASE_IMAGE_NAME
TARGET_FILE: "Dockerfile"
- docker push $IMAGE_NAME
### 基本 Docker 镜像扫描示例
使用 Snyk 扫描 Docker 镜像,如果发现任何漏洞则中断构建。
```yaml
script:
- docker build -t $IMAGE_NAME .
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "docker"
IMAGE_NAME: $IMAGE_NAME
TARGET_FILE: "Dockerfile"
- docker push $IMAGE_NAME
这对于具有更复杂构建环境的语言尤其相关——例如使用 Maven 或 Gradle 的 Java。在这些场景中,您可以使用 Snyk CLI 通过 snyk test 的某种变体来测试您的应用。安装 Snyk CLI 最简单的方法是使用 npm(npm install -g snyk),但如果您的构建环境中没有 npm,您可以使用 curl 从 https://github.com/snyk/snyk/releases 下载二进制文件。
script:
- mvn install
- npm install -g snyk # binary download also available
- snyk test --all-projects
# rest of your pipeline...
这对于具有更复杂构建环境的语言尤其相关——例如使用 Maven 或 Gradle 的 Java。在这些场景中,您可以使用 Snyk CLI 通过 snyk test --json > snyk-test-output.json 的某种变体来测试您的应用,然后将输出文件送入 Pipe 以生成 Code Insights 报告。安装 Snyk CLI 最简单的方法是使用 npm(npm install -g snyk),但如果您的构建环境中没有 npm,您可以使用 curl 从 https://github.com/snyk/snyk/releases 下载二进制文件。
script:
- mvn install
- npm install -g snyk # binary download also available
- snyk test --all-projects --json > snyk-test-output.json
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
SNYK_TEST_JSON_INPUT: "snyk-test-output.json"
# rest of your pipeline...
将 Snyk 补丁应用到 Node.js 应用,并仅继续扫描依赖项中的严重(critical)级别漏洞,但即使发现漏洞也不会中断构建。同时可选择在 Snyk.io 上监控依赖项状态,以便在发现新漏洞时收到警报。然后继续构建 Docker 镜像并扫描其严重(critical)级别漏洞。
script:
- npm install
- npm test
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "node"
PROTECT: "true"
SEVERITY_THRESHOLD: "critical"
DONT_BREAK_BUILD: "true"
MONITOR: "true"
- docker build -t $IMAGE_NAME .
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "docker"
IMAGE_NAME: $IMAGE_NAME
TARGET_FILE: "Dockerfile"
SEVERITY_THRESHOLD: "high"
DONT_BREAK_BUILD: "true"
MONITOR: "true"
- docker push $IMAGE_NAME
对于使用非默认 Snyk 实例的客户,需要使用 SNYK_API 来指定 URL。这适用于 MT-EU、MT-AU 和单租户客户。
script:
- npm install
- npm test
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
SNYK_API: https://api.eu.snyk.io
LANGUAGE: "node"
- npm publish
为确保此项目的长期稳定性和质量,我们自 2025 年 8 月起转向封闭贡献模式。此变更使我们的核心团队能够专注于集中的开发路线图和严格的质量保证,这对于使用如此广泛的组件至关重要。
为保持透明,我们的所有开发工作仍将公开进行。我们感谢社区的支持和宝贵贡献。
作为我们转向封闭贡献模式的一部分,此仓库已禁用 GitHub issues。Snyk 支持团队不会主动监控任何 Snyk 开发项目上的 GitHub issues。
如需 Snyk 产品方面的帮助,请使用 Snyk 支持页面,这是获得帮助的最快方式。
版权所有 (c) 2019 Snyk Ltd. 及其他。 采用 Apache 2.0 许可,请参阅 LICENSE.txt 文件。
| Variable | Usage |
|---|
| SNYK_TOKEN (*) | Snyk API 令牌。 |
| LANGUAGE (*) | 开发语言(例如 node、ruby、composer、dotnet 或 docker)。有关完整标签列表,请参阅 Dockerhub。注意:与 SNYK_BASE_IMAGE 一起使用时,此字段指的是您的基础镜像标签 |
| IMAGE_NAME (*) | 对于 docker 语言,指定要执行 Docker 扫描的镜像。 |
| SNYK_BASE_IMAGE | 如果您不想使用 Snyk 镜像,可提供您自己的基础镜像。默认值:snyk/snyk。注意: LANGUAGE 将引用您的基础镜像标签,请确保该标签有效 |
| CODE_INSIGHTS_RESULTS | 使用 Snyk 测试结果创建 Code Insight 报告。默认值:false。 |
| SNYK_TEST_JSON_INPUT | 如果您只想根据先前生成的 snyk test --json 输出来创建 Code Insights 报告,请使用此变量。请参阅下文“根据现有 Snyk JSON 输出生成 Code Insights 报告”部分中的示例。 |
| PROTECT | 这将把 .snyk 文件中指定的补丁应用到本地文件系统。(在运行 Snyk Wizard 之后)默认值:false。 |
| DONT_BREAK_BUILD | 即使发现问题也继续构建。默认值:false。 |
| MONITOR | 将项目快照记录到 Snyk UI,并在初始测试后持续监控。默认值:false。 |
| SEVERITY_THRESHOLD | 报告等于或高于所提供级别的问题。允许值:low、med、high、critical。默认值:low。 |
| ORGANIZATION | 运行 CLI 时使用的组织。默认值:无。 |
| PROJECT_FOLDER | 项目所在的文件夹。默认值:.。 |
| TARGET_FILE | 包文件(例如 package.json);等同于 CLI 中的 --file=。对于 Docker,应指向 Dockerfile。默认值:无。 |
| EXTRA_ARGS | 要传递给 snyk CLI 的额外参数。默认值:无。 |
| DEBUG | 开启额外的调试信息。默认值:false。 |
| SNYK_API | 指定 Snyk API 端点。默认值:https://api.snyk.io(标准 Snyk MT-US 环境) |