GitHub Actions Integration

Introduction

GitHub Actions is a platform for continuous integration in GitHub repositories. An action encodes a reusable task with configurable parameters.

Xygeni provides a xygeni-action for downloading and running the scanner on the repository.

The following configuration examples show how to install & run the scanner using an API Token stored as a secret named XYGENI_TOKEN. See Generate Xygeni API Token for Scanner or ask your Xygeni administrator to generate it.

Usage

The xygeni-action action downloads, configures and executes the Xygeni Scanner on the repository where the action is invoked.

Setting API token as encrypted secret in GitHub

The scanner needs an API token to communicate with the Xygeni platform. Such API token is a secret that could be registered safely at the appropriate scope (organization, repository or environment) using GitHub Encrypted Secrets.

For example, to register the API token as a secret named XYGENI_TOKEN, for repository in the current working directory. you may use the GitHub gh command:

(You must be the repository owner for creating repository secrets.)

For creating encryption secret at environment scope in a personal account repository (you need to be the repository owner), add --env ENV_NAME:

For creating encryption secret at organization scope (so the secret is available to all or a subset of the organization repositories), add --org ORG_NAME:

You may use the corresponding GitHub webpages for setting the api token as a secret named XYGENI_TOKEN at the appropriate scope.

Add a step calling the action

In a GitHub workflow (.github/workflows/*.yml) the Xygeni scanner could be run on the repository files, typically after actions/checkout to retrieve the branch sources. The GITHUB_WORKSPACE environment variable will contain the default location of the repository when using the checkout action.

You can configure a GitHub action with the form:

Where XYGENI_TOKEN is the name of the encrypted secret where the API token was saved.

Our scanner performs checks to recover information about your GitHub repository and organization, as part of the scanning process to validate if there are misconfigurations affecting them.

See Required token permissions for further details.

Parameters

Only the API token is required.

The default values for some parameters can be changed. For example, you may specify a specific name for the project instead of the GitHub repository name,GITHUB_REPOSITORY. Also, you may want to scan a particular source subdirectory instead of the default.

You can see more information about default GitHub environment variables here.

The available parameters for the action are:

Parameter
Description
Mandatory
Default value

token

Xygeni API token

Yes

command

Command to execute by the scanner

No

scan --never-fail

gh_token

GitHub token to retrieve repository information for misconfigurations and compliance.

No

${GITHUB_TOKEN}

xygeni_url

Base URL of the Xygeni API

No

https://api.xygeni.io

xygeni_dashboard_url

Base URL of the Xygeni Dashboard

No

https://in.xygeni.io/dashboard

Use --never-fail to avoid breaking the build if the scan finds issues or fails. You may also use --fail_on=critical to terminate the build only when critical issues are found.

Use --run=secrets,iac if you want to scan only for secrets and IaC flaws, for example.

If you want to analyze a subdirectory, you can configure the command with -d parameter. For example, use -d /app if the directory to scan is the app directory in your repository.

Example for scanning only hard-coded secrets and IaC flaws detectors, and failing the build only when critical issues are found:

Note that for secrets and iac scans, the default GITHUB_TOKEN has enough permissions.

See Xygeni scan command for full information on the command options available.

You may use pinned versions for the action, using the immutable commit SHA instead of version numbers, as specified in Pin actions to full length commit SHA.

Last updated