Overview

The Fortify AST Scan component provides seamless integration of OpenText Application Security (Fortify Software Security Center) for automated Application Security Testing (AST) into your GitLab CI/CD pipelines. The component leverages the Fortify/components/fcli component to set up fcli, then executes the fcli ci action to run the requested scans and related tasks, providing a unified yet customizable experience across your AST scan workflows on GitLab and other CI systems.

The GitLab integration consists of two components:

  • Fortify fcli component - Provides fcli installation and setup functionality. This component allows for setting up fcli for use in custom CI/CD workflows.

  • Fortify AST Scan component - Provides complete AST scanning workflow by including the fcli component and adding scan execution jobs.

The ast-scan component provides the following runnable jobs:

  • Inherited from the fcli component:

    • <job-name>-prepare: Download and install fcli

    • <job-name>: Run the Fortify AST scan

  • Provided by the ast-scan component:

    • <job-name>-publish-debug-output: Optionally publish debugging output

    • <job-name>-publish-sast: Publish SAST report to GitLab security dashboard

In addition, several hidden jobs are defined by the component which may be used to implement advanced use cases but should not be directly customized.

Quick Start Example

Minimal configuration for running OpenText Fortify AST scans.

include:
  - component: $CI_SERVER_FQDN/Fortify/components/ast-scan/linux@1
    inputs:
      job-name: fortify-ast-scan
      stage: test
      fcli-version: v3

stages: [test]

fortify-ast-scan:
  image: maven:3-openjdk-17   # Docker image with build tools
  variables:
    SSC_URL: ${SSC_URL}                   # From GitLab CI/CD variables
    SSC_TOKEN: ${SSC_TOKEN}               # From GitLab CI/CD variables
    SC_SAST_TOKEN: ${SC_SAST_TOKEN}       # From GitLab CI/CD variables
    # SSC_APPVERSION: MyApp:main          # Optional: defaults to repo:branch

Tips & Recommendations

Centralized Configuration Management

For enterprise environments with multiple repositories, consider creating custom GitLab components or pipeline templates to wrap the Fortify integration. This approach provides:

  • Version stability: Pin specific component versions (e.g., @1.0.1 instead of @1) and fcli versions across all pipelines

  • Consistent configuration: Centrally manage common settings like tool versions and scan parameters

  • Controlled upgrades: Test new versions centrally before rolling out to all repositories

Example custom component or template structure:

# In your organization's shared component/template repository
include:
  - component: $CI_SERVER_FQDN/Fortify/components/ast-scan/linux@1.0.1  # Pinned version
    inputs:
      job-name: fortify-ast-scan
      stage: security
      fcli-version: v3.15.0  # Pinned fcli version

fortify-ast-scan:
  variables:
    SSC_URL: ${SSC_URL}
    SSC_TOKEN: ${SSC_TOKEN}
    SC_SAST_TOKEN: ${SC_SAST_TOKEN}
  extends: .my-shared-config  # Additional organization-wide settings

Air-Gapped Environments

For air-gapped or restricted network environments, host custom tool definitions and tool bundles in an internal SCM repository or artifact registry. Configure the integration to use these internal resources:

  • Set TOOL_DEFINITIONS to point to your internally hosted tool definitions file

  • Set FCLI_TGZ_URL to download fcli from your internal mirror

This ensures all required tools are accessible without external internet access.

Configuration

Component Inputs

The following component inputs can be specified when including the ast-scan component:

Input Description Default

job-name

Job name for the Fortify AST scan. This must be a valid file system path name and will be used to name the component-provided jobs.

fortify-ast-scan

stage

GitLab CI/CD stage in which to run the AST scan jobs. This stage must be defined in your pipeline’s stages: list.

test

fcli-version

Fcli version to use for running the AST scan. Note that not all fcli versions may be compatible with this component, so avoid overriding unless necessary.

v3

reports-access

GitLab access level required for accessing scan reports. Allowed values: all, developer, none.

developer

logs-access

GitLab access level required for accessing debug logs. Allowed values: all, developer, none.

developer

logs-expire-in

GitLab artifacts:expire_in value for log artifacts. As logs may contain sensitive data, they should be cleaned up promptly.

1 day

debug

Whether to generate and collect debug logs. Note that these may contain sensitive data like access tokens or credentials.

false

alpine-image

Allows for overriding the default Alpine image used by various jobs, for example to use an image from a custom registry.

alpine:latest

Configuration is accomplished through environment variables set on the main scan job (see following sections). Unlike GitHub Actions which use action inputs for some configuration, the GitLab components use environment variables exclusively for scan configuration, following GitLab CI/CD conventions.

Setup & Bootstrap

The environment variables in this section allow you to customize bootstrapping behavior of fcli and supporting tools like ScanCentral Client. These variables can be configured on the <job-name>-prepare job as needed.

Note
This GitLab Component requires a recent fcli v3.x.y version to function properly.
Note
Environment variables listed in the subsequent sections are for fcli 3.15.0; if your bootstrap settings install another fcli version, please refer to to the fcli ci action documentation for that version.

Environment Variable

Description

FCLI_TGZ_URL

By default, fcli is downloaded from the official GitHub releases page at https://github.com/fortify/fcli/releases/download//fcli-linux.tgz, where FCLI_VERSION is set based on the fcli-version component input. This environment variable allows you to specify a custom URL, for example pointing to an internal mirror in air-gapped environments. The URL can use the ` variable to reference the value of the `fcli-version component input. In air-gapped environments, you’ll likely also want to set TOOL_DEFINITIONS to point to a custom tool definitions file to allow for downloading supporting tools like ScanCentral Client from the internal mirror.

FCLI_RSA_SHA256_URL

URL for the fcli RSA SHA256 signature file. Defaults to /fcli-linux.tgz.rsa_sha256 where FCLI_BASE_URL is https://github.com/fortify/fcli/releases/download/, and FCLI_VERSION is set based on the fcli-version component input. Set to blank to skip signature verification (not recommended).

FCLI

Path to a pre-installed fcli executable. When set on the <job-name>-prepare job, fcli bootstrapping will skip downloading and installing fcli, and will use this binary instead. This may be useful for environments without internet access, if a self-hosted shell-based runner already has fcli pre-installed, or if the Docker image in which <job-name> is being run already provides the fcli executable. Note that the <job-name>-prepare and main <job-name> jobs usually run inside different images, so the prepare job doesn’t explicitly check or fail if the given fcli executable is not accessible from the prepare job.

TOOL_DEFINITIONS

Supporting tools like ScanCentral Client or Debricked CLI are by default downloaded from the URLs defined in the default Fortify tool definitions. For airgapped environments, point this environment variable to an internally hosted custom tool definitions zip file to download these tools from an internal mirror.

PREINSTALLED

Set to true to require that all supporting tools (e.g., ScanCentral Client, Debricked CLI) invoked by the fcli ci action are already installed, preventing tool definitions from being updated or tools from being automatically installed. This is useful for environments where pre-installed tools must be used, or where automatic tool installation is not permitted.

Authentication & Connection

Configure credentials and connection details for OpenText Application Security (Fortify Software Security Center).

Environment Variable

Description

SSC_URL

OpenText Application Security (Fortify Software Security Center) URL, for example https://ssc.customer.fortifyhosted.net/. This must be rendered by the CI/CD system as plain text, not as a masked secret/variable.

SSC_TOKEN

Required when authenticating with an SSC token (recommended). Most actions should work fine with a CIToken.

SSC_USER
SSC_PASSWORD

Required when authenticating with SSC user credentials.

SC_SAST_TOKEN

ScanCentral SAST Client Authentication Token for authenticating with ScanCentral SAST Controller. This environment variable is required when running a ScanCentral SAST scan.

SSC_LOGIN_EXTRA_OPTS

Extra SSC login options, for example for disabling SSL checks or changing connection time-outs; see fcli ssc session login documentation.

Application Version Management

Configure OpenText Application Security (Fortify Software Security Center) application version settings, including automatic creation of application versions if they don’t exist.

Environment Variable

Description

SSC_APPVERSION

Fortify SSC application version to use with this action. This should be specified as <app-name>:<version-name>. Default value is based on repository and branch name, for example myOrg/myRepo:myBranch.

DO_SETUP
SETUP_ACTION
SETUP_EXTRA_OPTS

If DO_SETUP is set not set to false, the application and/or version will be created if they do not yet exist using the fcli-provided setup-appversion action, or, if specified, the custom fcli action specified through SETUP_ACTION. Extra options for the fcli action can be passed through the SETUP_EXTRA_OPTS environment variable.

Depending on your Git workflow, it is recommended to copy state from the application version representing your default branch by passing the --copy-from option through SETUP_EXTRA_OPTS.

Package Configuration

Configure source code packaging behavior for SAST scans. Control whether to use custom packaging actions, specify pre-built packages, or customize ScanCentral Client usage.

Environment Variable

Description

PACKAGE_ACTION
PACKAGE_ACTION_EXTRA_OPTS

By default, when running a SAST scan, the fcli package action is used to (optionally) package the source code to be scanned; see next entry for information on how to configure the default package action. If the standard fcli package action doesn’t meet your needs, for example if you want to perform a local translation using Fortify Static Code Analyzer, you can use PACKAGE_ACTION to use a custom action for packaging, optionally providing extra options to this custom action through the PACKAGE_ACTION_EXTRA_OPTS environment variable. Note that any custom action must set the global.package.output action variable, pointing to the package or MBS file to be scanned.

USE_PACKAGE
PACKAGE_EXTRA_OPTS
SC_CLIENT_VERSION
SC_CLIENT_HOME
SOURCE_DIR

These environment variables define packaging behavior. If USE_PACKAGE is specified, packaging will be skipped and the given package or MBS file (which must already exist) will be used. To pass additional options to the scancentral package command like -bt or -bf, use PACKAGE_EXTRA_OPTS.

By default:

* If SC_CLIENT_HOME is specified, the pre-installed ScanCentral Client at that location will be registered and used, skipping automatic installation. The path should point to the installation directory or binary.
* SC_CLIENT_VERSION may be specified to request a specific ScanCentral Client version to be used. Allowed values:
* An explicit version number (e.g. 25.2 or 25.2.0)
* Path to a specific ScanCentral Client installation
* latest to use the latest available ScanCentral Client version
* auto (default for SSC) to enable automatic detection based on available sensor versions
* If neither SC_CLIENT_VERSION nor SC_CLIENT_HOME are set, defaults to auto behavior (sensor-based detection).
* Current working directory will be packaged; use SOURCE_DIR to package a different directory.
* Debug logging for Scancentral Client is disabled; pass --debug on the fcli invocation to enable debug logging.

Scan Execution

Configure SAST and Debricked scan execution and waiting behavior for OpenText Application Security (Fortify Software Security Center).

Environment Variable

Description

DO_SAST_SCAN
SAST_SCAN_EXTRA_OPTS

The fcli ci action by default runs a SAST scan, optionally in combination with other scan types. The DO_SAST_SCAN environment variable can be set to false to disable the SAST scan. The SAST_SCAN_EXTRA_OPTS environment variable can be used to provide additional options to the fcli sc-sast scan start command, for example to request a scan completion email notification. Note that these environment variables only control the submission of the scan request; see the information below for details on waiting for the scan to complete.

DO_DEBRICKED_SCAN
DEBRICKED_SCAN_EXTRA_OPTS
DEBRICKED_ACCESS_TOKEN
DEBRICKED_VERSION
DEBRICKED_HOME

The fcli ci action supports running a Debricked Software Composition Analysis (SCA) scan, which is enabled automatically if DEBRICKED_ACCESS_TOKEN is provided. The DO_DEBRICKED_SCAN environment variable can be set to false to (temporarily) disable the Debricked scan. The DEBRICKED_SCAN_EXTRA_OPTS environment variable can be used to provide additional options to the debricked scan command.

By default:

* If DEBRICKED_HOME is specified, the pre-installed Debricked CLI at that location will be registered and used, skipping automatic installation. The path should point to the installation directory or binary.
* DEBRICKED_VERSION may be specified to request a specific Debricked CLI version to be used. Allowed values:
* An explicit version number (e.g. 2.6 or 2.6.7)
* Path to a specific Debricked CLI installation
* latest to use the latest available Debricked CLI version
* auto (default) to use a pre-installed version if available, otherwise installs latest
* If neither DEBRICKED_VERSION nor DEBRICKED_HOME are set, defaults to auto behavior.

DO_WAIT
DO_SAST_WAIT
SAST_WAIT_EXTRA_OPTS
DEBRICKED_WAIT_EXTRA_OPTS

By default, the fcli ci action will wait for all started scans to complete; set DO_WAIT to false to just kick off any configured scans without waiting for completion. Note that doing so will skip any post-scan tasks. The SAST_WAIT_EXTRA_OPTS environment variable can be used to pass extra options to the fcli sc-sast scan wait-for command, and similarly, the DEBRICKED_WAIT_EXTRA_OPTS environment variable can be used to pass extra options to the fcli ssc artifact wait-for command.

Post-Scan Actions

Configure post-scan tasks including Aviator auditing, application version summaries, policy checks, pull request comments, and vulnerability data exports for OpenText Application Security (Fortify Software Security Center). NOTE: Availability and behavior of post-scan tasks may vary across CI/CD systems and fcli versions.

Environment Variable

Description

AVIATOR_URL
AVIATOR_TOKEN
AVIATOR_LOGIN_EXTRA_OPTS

Aviator URL and JWT token to use for Aviator operations (see below). The AVIATOR_TOKEN environment variable should hold the actual token contents; prefixes like file: or string: (like the --token option on the fcli aviator session login command) are not supported. The AVIATOR_LOGIN_EXTRA_OPTS environment variable can be used to pass additional options to the fcli aviator session login command.

DO_AVIATOR_AUDIT
AVIATOR_APP
AVIATOR_AUDIT_EXTRA_OPTS
AVIATOR_WAIT_EXTRA_OPTS

If DO_AVIATOR_AUDIT is not set to false, and Aviator URL and token have been configured, scan results will be sent to Aviator for AI-driven auditing. The Aviator application name can optionally be configured through AVIATOR_APP, which defaults to the SSC application name. The AVIATOR_AUDIT_EXTRA_OPTS environment variable can be used to pass extra options to the fcli aviator ssc audit command, for example to adjust tag mappings. The AVIATOR_WAIT_EXTRA_OPTS environment variable can be used to pass extra options to the fcli ssc artifact wait-for command, which will be run to wait for SSC to process the audited results.

DO_APPVERSION_SUMMARY
APPVERSION_SUMMARY_ACTION
APPVERSION_SUMMARY_EXTRA_OPTS

If DO_APPVERSION_SUMMARY is not set to false, an application version summary will be generated using the fcli-provided appversion-summary action or, if specified, the custom fcli action specified through APPVERSION_SUMMARY_ACTION. Extra options for the fcli action can be specified through the APPVERSION_SUMMARY_EXTRA_OPTS environment variable, which may include fcli options to allow unsigned custom actions to be used.

DO_CHECK_POLICY
CHECK_POLICY_ACTION
CHECK_POLICY_EXTRA_OPTS

If DO_CHECK_POLICY is set to true (implied if any of the other two CHECK_POLICY_* variables are set), a policy check will be run after scan completion using the fcli-provided check-policy action or, if specified, the custom fcli action specified through CHECK_POLICY_ACTION. Extra options for a custom fcli action can be passed through the CHECK_POLICY_EXTRA_OPTS environment variable, which may include fcli options to allow unsigned custom actions to be used.

DO_PR_COMMENT
PR_COMMENT_ACTION
PR_COMMENT_EXTRA_OPTS

(PREVIEW) If DO_PR_COMMENT is set to true (implied if any of the other two PR_COMMENT_* variables are set), a Pull Request or Merge Request comment will be generated using an fcli-provided action matching the current CI system like github-pr-comment or, if specified, the custom fcli action specified through PR_COMMENT_ACTION. Extra options for the fcli action can be specified through the PR_COMMENT_EXTRA_OPTS environment variable, which may include fcli options to allow unsigned custom actions to be used.

DO_SAST_EXPORT
SAST_EXPORT_ACTION
SAST_EXPORT_EXTRA_OPTS

If DO_SAST_EXPORT is not set to false and a SAST scan was completed, the SAST vulnerability data will be exported into a CI-specific format using an fcli-provided action matching the current CI system like github-sast-report or gitlab-sast-report, or, if specified, the custom fcli action specified through SAST_EXPORT_ACTION. Extra options for the fcli action can be specified through the SAST_EXPORT_EXTRA_OPTS environment variable, which may include fcli options to allow unsigned custom actions to be used.

DO_DEBRICKED_EXPORT
DEBRICKED_EXPORT_ACTION
DEBRICKED_EXPORT_EXTRA_OPTS

If DO_DEBRICKED_EXPORT is not set to false and a Debricked scan was completed, the Debricked vulnerability data will be exported into a CI-specific format using an fcli-provided action matching the current CI system like gitlab-debricked-report, or, if specified, the custom fcli action specified through DEBRICKED_EXPORT_ACTION. Extra options for the fcli action can be specified through the DEBRICKED_EXPORT_EXTRA_OPTS environment variable, which may include fcli options to allow unsigned custom actions to be used.

Advanced Customization

Customizing the <job-name> Job

The main <job-name> job can be customized to specify the Docker image providing build tools, additional environment variables, and other job properties:

<job-name>:
  image: golang:latest          # Required: Docker image with build tools
  extends:
    - .<job-name>-vars-ci       # Required: inherit component variables
    - .my-custom-vars           # Optional: inherit additional variables
  variables:
    FOD_URL: https://ams.fortify.com
    FOD_CLIENT_ID: ${FOD_CLIENT_ID}     # From GitLab CI/CD variables
    FOD_CLIENT_SECRET: ${FOD_CLIENT_SECRET}
    # Additional scan configuration...

If you override needs or extends, make sure to keep the original contents to ensure the component functions correctly.

Customizing Report Publication

The component automatically publishes SAST reports to GitLab’s security dashboard through the <job-name>-publish-sast job. You can customize the access level for these reports through the reports-access component input.

Debug output publication is controlled by the debug component input. When enabled, the <job-name>-publish-debug-output job will collect and publish logs, package files, and FPR files as GitLab artifacts.