-
Notifications
You must be signed in to change notification settings - Fork 142
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
92 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
################################################################################################################################################ | ||
# Fortify lets you build secure software fast with an appsec platform that automates testing throughout the DevSecOps pipeline. Fortify static,# | ||
# dynamic, interactive, and runtime security testing is available on premises or as a service. To learn more about Fortify, start a free trial # | ||
# or contact our sales team, visit microfocus.com/appsecurity. # | ||
# # | ||
# Use this workflow template as a basis for integrating Fortify on Demand Static Application Security Testing(SAST) into your GitHub workflows.# | ||
# This template demonstrates the steps to prepare the code+dependencies, initiate a scan, download results once complete and import into # | ||
# GitHub Security Code Scanning Alerts. Existing customers should review inputs and environment variables below to configure scanning against # | ||
# an existing application in your Fortify on Demand tenant. Additional information is available in the comments throughout the workflow, the # | ||
# documentation for the Fortify actions used, and the Fortify on Demand / ScanCentral Client product documentation. If you need additional # | ||
# assistance with configuration, feel free to create a help ticket in the Fortify on Demand portal. # | ||
################################################################################################################################################ | ||
|
||
name: Fortify on Demand Scan | ||
|
||
# TODO: Customize trigger events based on your DevSecOps processes and typical FoD SAST scan time | ||
on: | ||
workflow_dispatch: | ||
push: | ||
branches: [ master ] | ||
pull_request: | ||
# The branches below must be a subset of the branches above | ||
branches: [ master ] | ||
schedule: | ||
- cron: '44 19 * * 6' | ||
|
||
jobs: | ||
FoD-SAST-Scan: | ||
# Use the appropriate runner for building your source code. | ||
# TODO: Use a Windows runner for .NET projects that use msbuild. Additional changes to RUN commands will be required to switch to Windows syntax. | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
# Check out source code | ||
- name: Check Out Source Code | ||
uses: actions/checkout@v2 | ||
|
||
# Java 8 required by ScanCentral Client and FoD Uploader(Univeral CI Tool) | ||
- name: Setup Java | ||
uses: actions/setup-java@v1 | ||
with: | ||
java-version: 1.8 | ||
|
||
# Prepare source+dependencies for upload. The default example is for a Maven project that uses pom.xml. | ||
# TODO: Update PACKAGE_OPTS based on the ScanCentral Client documentation for your project's included tech stack(s). Helpful hints: | ||
# ScanCentral Client will download dependencies for maven (-bt mvn) and gradle (-bt gradle). | ||
# ScanCentral Client can download dependencies for msbuild projects (-bt msbuild); however, you must convert the workflow to use a Windows runner. | ||
# ScanCentral has additional options that should be set for PHP and Python projects | ||
# For other build tools, add your build commands to download necessary dependencies and prepare according to Fortify on Demand Packaging documentation. | ||
# ScanCentral Client documentation is located at https://www.microfocus.com/documentation/fortify-software-security-center/ | ||
- name: Download Fortify ScanCentral Client | ||
uses: fortify/gha-setup-scancentral-client@v1 | ||
- name: Package Code + Dependencies | ||
run: scancentral package $PACKAGE_OPTS -o package.zip | ||
env: | ||
PACKAGE_OPTS: "-bt mvn" | ||
|
||
# Start Fortify on Demand SAST scan and wait until results complete. For more information on FoDUploader commands, see https://github.com/fod-dev/fod-uploader-java | ||
# TODO: Update ENV variables for your application and create the necessary GitHub Secrets. Helpful hints: | ||
# Credentials and release ID should be obtained from your FoD tenant (either Personal Access Token or API Key can be used). | ||
# Automated Audit preference should be configured for the release's Static Scan Settings in the Fortify on Demand portal. | ||
- name: Download Fortify on Demand Universal CI Tool | ||
uses: fortify/gha-setup-fod-uploader@v1 | ||
- name: Perform SAST Scan | ||
run: java -jar $FOD_UPLOAD_JAR -z package.zip -aurl $FOD_API_URL -purl $FOD_URL -rid "$FOD_RELEASE_ID" -tc "$FOD_TENANT" -uc "$FOD_USER" "$FOD_PAT" $FOD_UPLOADER_OPTS -n "$FOD_UPLOADER_NOTES" | ||
env: | ||
FOD_TENANT: ${{ secrets.FOD_TENANT }} | ||
FOD_USER: ${{ secrets.FOD_USER }} | ||
FOD_PAT: ${{ secrets.FOD_PAT }} | ||
FOD_RELEASE_ID: ${{ secrets.FOD_RELEASE_ID }} | ||
FOD_URL: "https://ams.fortify.com/" | ||
FOD_API_URL: "https://api.ams.fortify.com/" | ||
FOD_UPLOADER_OPTS: "-ep 2 -pp 0 -I 1 -apf" | ||
FOD_UPLOADER_NOTES: 'Triggered by GitHub Actions (${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})' | ||
|
||
# Once scan completes, pull SAST issues from Fortify on Demand and generate SARIF output. | ||
# TODO: Review Action inputs. For most users, these will be the same as used in the Perform SAST Scan step. | ||
- name: Download Results | ||
uses: fortify/gha-fod-generate-sarif@1.1.0 | ||
with: | ||
base-url: https://ams.fortify.com | ||
tenant: ${{ secrets.FOD_TENANT }} | ||
user: ${{ secrets.FOD_USER }} | ||
password: ${{ secrets.FOD_PAT }} | ||
release-id: ${{ secrets.FOD_RELEASE_ID }} | ||
output: ./sarif/output.sarif | ||
|
||
# Import Fortify on Demand results to GitHub Security Code Scanning | ||
- name: Import Results | ||
uses: github/codeql-action/upload-sarif@v1 | ||
with: | ||
sarif_file: ./sarif/output.sarif |