Skip to content

cloudbees-io/grype-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 

Repository files navigation

CloudBees action: Scan with Grype

Use this action to perform static application security testing (SAST) on code with Grype. Grype, an open-source scanning tool, finds vulnerabilities in container images and filesystems. You can also use the action output as a quality gate for the next step or job in your workflow.

Inputs

Table 1. Input details
Input name Data type Required? Description

binary-tar-path

String

Yes

The path of the binary to be scanned.

Note
The binary file must be in the TAR format.

Outputs

Table 2. Output details
Output name Data type Description

critical-count

String

The number of Critical security findings discovered during the scan.

very-high-count

String

The number of Very high security findings discovered during the scan.

high-count

String

The number of High security findings discovered during the scan.

medium-count

String

The number of Medium security findings discovered during the scan.

low-count

String

The number of Low security findings discovered during the scan.

Usage examples

Basic example

The following is a basic example of using the action:

      - name: Scan with Grype
        uses: cloudbees-io/grype-plugin@v1
        with:
          binary-tar-path: /path/to/binary.tar

Using the action output

Access the output values in downstream steps and jobs using the outputs context.

Use the output in your workflow as follows, where <action_step_ID> is the action step ID, and <severity> is an output parameter name, such as critical-count:

${{steps.<action_step_ID>.outputs.<severity>}}

The following example uses the action output in a downstream step of the same job:

name: my-workflow
kind: workflow
apiVersion: automation.cloudbees.io/v1alpha1

on:
  push:
    branches:
      - main

permissions:
  scm-token-own: read
  scm-token-org: read
  id-token: write

jobs:
  grype-scan-job:
    steps:
      - name: check out source code
        uses: cloudbees-io/checkout@v1

      - id: grype-step
        name: grype scan
        uses: cloudbees-io/grype-plugin@v1
        with:
          binary-tar-path: /path/to/binary.tar

      - name: source dir examine
        uses: docker://golang:1.20.3-alpine3.17
        shell: sh
        run: |
          ls -latR /cloudbees/workspace

      - id: print-outputs-from-grype-step
        name: print outputs from upstream grype step
        uses: docker://alpine:latest
        run: |
            #printing all outputs
            echo "Outputs from upstream grype step:"
            echo "Critical count: ${{steps.grype-step.outputs.critical-count}}"
            echo "Very high count: ${{steps.grype-step.outputs.very-high-count}}"
            echo "High count: ${{steps.grype-step.outputs.high-count}}"
            echo "Medium count: ${{steps.grype-step.outputs.medium-count}}"
            echo "Low count: ${{steps.grype-step.outputs.low-count}}"

The following example uses the action output in a downstream job:

name: my-workflow
kind: workflow
apiVersion: automation.cloudbees.io/v1alpha1

on:
  push:
    branches:
      - main

permissions:
  scm-token-own: read
  scm-token-org: read
  id-token: write

jobs:
  job1:
    outputs:
      grype-job-output-critical: ${{ steps.grype-step.outputs.critical-count }}
      grype-job-output-very-high: ${{ steps.grype-step.outputs.very-high-count }}
      grype-job-output-high: ${{ steps.grype-step.outputs.high-count }}
      grype-job-output-medium: ${{ steps.grype-step.outputs.medium-count }}
      grype-job-output-low: ${{ steps.grype-step.outputs.low-count }}
    steps:
      - name: check out source code
        uses: cloudbees-io/checkout@v1
        with:
          repository: my-gh-repo-org/my-repo
          ref: main
          token: ${{ secrets.GIT_PAT }}

      - id: grype-step
        name: grype scan
        uses: cloudbees-io/grype-plugin@v1
        with:
          binary-tar-path: /path/to/binary.tar

  job2:
    needs: job1
    steps:
      - id: print-outputs-from-job1
        name: print outputs from upstream job1
        uses: docker://alpine:latest
        run: |
          # Printing all outputs
          echo "Outputs from upstream grype job:"
          echo "Critical count: ${{ needs.job1.outputs.grype-job-output-critical }}"
          echo "Very high count: ${{ needs.job1.outputs.grype-job-output-very-high }}"
          echo "High count: ${{ needs.job1.outputs.grype-job-output-high }}"
          echo "Medium count: ${{ needs.job1.outputs.grype-job-output-medium }}"
          echo "Low count: ${{ needs.job1.outputs.grype-job-output-low }}"

License

This code is made available under the MIT license.

References

About

Hybrid action for grype scanner

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors