-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ci: add Vulnerability and Dependency Testing
* ci(codeql): add workflow configuration * ci(mobsf): add workflow configuration * ci(codeql): and workflow_dispatch option * ci(detekt): add workflow configuration * ci(codeql): update naming and scheduling * ci(detekt): update naming and scheduling * ci(mobsf): update naming and scheduling * ci(dependabot): add initial configuration
- Loading branch information
1 parent
f46a999
commit 68accf2
Showing
4 changed files
with
268 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,19 @@ | ||
# To get started with Dependabot version updates, you'll need to specify which | ||
# package ecosystems to update and where the package manifests are located. | ||
# Please see the documentation for all configuration options: | ||
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates | ||
|
||
version: 2 | ||
updates: | ||
|
||
# Maintain dependencies for GitHub Actions | ||
- package-ecosystem: "github-actions" | ||
directory: "/" # Uses default location of GitHub Workflows | ||
schedule: | ||
interval: "weekly" | ||
|
||
# Maintain dependencies for Gradle | ||
- package-ecosystem: "gradle" | ||
directory: "/" | ||
schedule: | ||
interval: "weekly" |
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,86 @@ | ||
# For most projects, this workflow file will not need changing; you simply need | ||
# to commit it to your repository. | ||
# | ||
# You may wish to alter this file to override the set of languages analyzed, | ||
# or to provide custom queries or build logic. | ||
# | ||
# ******** NOTE ******** | ||
# We have attempted to detect the languages in your repository. Please check | ||
# the `language` matrix defined below to confirm you have the correct set of | ||
# supported CodeQL languages. | ||
# | ||
name: Vulnerability Scan with CodeQL | ||
|
||
on: | ||
push: | ||
branches: [ "main" ] | ||
pull_request: | ||
branches: [ "main" ] | ||
schedule: | ||
- cron: '39 6 * * 1' | ||
# Allows you to run this workflow manually from the Actions tab | ||
workflow_dispatch: | ||
|
||
jobs: | ||
analyze: | ||
name: CodeQL Scan | ||
# Runner size impacts CodeQL analysis time. To learn more, please see: | ||
# - https://gh.io/recommended-hardware-resources-for-running-codeql | ||
# - https://gh.io/supported-runners-and-hardware-resources | ||
# - https://gh.io/using-larger-runners | ||
# Consider using larger runners for possible analysis time improvements. | ||
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} | ||
timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }} | ||
permissions: | ||
# required for all workflows | ||
security-events: write | ||
|
||
# only required for workflows in private repositories | ||
actions: read | ||
contents: read | ||
|
||
strategy: | ||
fail-fast: false | ||
matrix: | ||
language: [ 'java-kotlin' ] | ||
# CodeQL supports [ 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift' ] | ||
# Use only 'java-kotlin' to analyze code written in Java, Kotlin or both | ||
# Use only 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both | ||
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
|
||
# Initializes the CodeQL tools for scanning. | ||
- name: Initialize CodeQL | ||
uses: github/codeql-action/init@v3 | ||
with: | ||
languages: ${{ matrix.language }} | ||
# If you wish to specify custom queries, you can do so here or in a config file. | ||
# By default, queries listed here will override any specified in a config file. | ||
# Prefix the list here with "+" to use these queries and those in the config file. | ||
|
||
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs | ||
# queries: security-extended,security-and-quality | ||
|
||
|
||
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). | ||
# If this step fails, then you should remove it and run the build manually (see below) | ||
- name: Autobuild | ||
uses: github/codeql-action/autobuild@v3 | ||
|
||
# ℹ️ Command-line programs to run using the OS shell. | ||
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun | ||
|
||
# If the Autobuild fails above, remove it and uncomment the following three lines. | ||
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. | ||
|
||
# - run: | | ||
# echo "Run, Build Application using script" | ||
# ./location_of_script_within_repo/buildscript.sh | ||
|
||
- name: Perform CodeQL Analysis | ||
uses: github/codeql-action/analyze@v3 | ||
with: | ||
category: "/language:${{matrix.language}}" |
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,117 @@ | ||
# This workflow uses actions that are not certified by GitHub. | ||
# They are provided by a third-party and are governed by | ||
# separate terms of service, privacy policy, and support | ||
# documentation. | ||
|
||
# This workflow performs a static analysis of your Kotlin source code using | ||
# Detekt. | ||
# | ||
# Scans are triggered: | ||
# 1. On every push to default and protected branches | ||
# 2. On every Pull Request targeting the default branch | ||
# 3. On a weekly schedule | ||
# 4. Manually, on demand, via the "workflow_dispatch" event | ||
# | ||
# The workflow should work with no modifications, but you might like to use a | ||
# later version of the Detekt CLI by modifing the $DETEKT_RELEASE_TAG | ||
# environment variable. | ||
name: Vulnerability Scan with Detekt | ||
|
||
on: | ||
# Triggers the workflow on push or pull request events but only for default and protected branches | ||
push: | ||
branches: [ "main" ] | ||
pull_request: | ||
branches: [ "main" ] | ||
schedule: | ||
- cron: '25 6 * * 1' | ||
# Allows you to run this workflow manually from the Actions tab | ||
workflow_dispatch: | ||
|
||
env: | ||
# Release tag associated with version of Detekt to be installed | ||
# SARIF support (required for this workflow) was introduced in Detekt v1.15.0 | ||
DETEKT_RELEASE_TAG: v1.15.0 | ||
|
||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel | ||
jobs: | ||
# This workflow contains a single job called "scan" | ||
scan: | ||
name: Detekt Scan | ||
# The type of runner that the job will run on | ||
runs-on: ubuntu-latest | ||
|
||
# Steps represent a sequence of tasks that will be executed as part of the job | ||
steps: | ||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | ||
- uses: actions/checkout@v3 | ||
|
||
# Gets the download URL associated with the $DETEKT_RELEASE_TAG | ||
- name: Get Detekt download URL | ||
id: detekt_info | ||
env: | ||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
run: | | ||
gh api graphql --field tagName=$DETEKT_RELEASE_TAG --raw-field query=' | ||
query getReleaseAssetDownloadUrl($tagName: String!) { | ||
repository(name: "detekt", owner: "detekt") { | ||
release(tagName: $tagName) { | ||
releaseAssets(name: "detekt", first: 1) { | ||
nodes { | ||
downloadUrl | ||
} | ||
} | ||
tagCommit { | ||
oid | ||
} | ||
} | ||
} | ||
} | ||
' 1> gh_response.json | ||
DETEKT_RELEASE_SHA=$(jq --raw-output '.data.repository.release.releaseAssets.tagCommit.oid' gh_response.json) | ||
if [ $DETEKT_RELEASE_SHA != "37f0a1d006977512f1f216506cd695039607c3e5" ]; then | ||
echo "Release tag doesn't match expected commit SHA" | ||
exit 1 | ||
fi | ||
DETEKT_DOWNLOAD_URL=$(jq --raw-output '.data.repository.release.releaseAssets.nodes[0].downloadUrl' gh_response.json) | ||
echo "download_url=$DETEKT_DOWNLOAD_URL" >> $GITHUB_OUTPUT | ||
# Sets up the detekt cli | ||
- name: Setup Detekt | ||
run: | | ||
dest=$( mktemp -d ) | ||
curl --request GET \ | ||
--url ${{ steps.detekt_info.outputs.download_url }} \ | ||
--silent \ | ||
--location \ | ||
--output $dest/detekt | ||
chmod a+x $dest/detekt | ||
echo $dest >> $GITHUB_PATH | ||
# Performs static analysis using Detekt | ||
- name: Run Detekt | ||
continue-on-error: true | ||
run: | | ||
detekt --input ${{ github.workspace }} --report sarif:${{ github.workspace }}/detekt.sarif.json | ||
# Modifies the SARIF output produced by Detekt so that absolute URIs are relative | ||
# This is so we can easily map results onto their source files | ||
# This can be removed once relative URI support lands in Detekt: https://git.io/JLBbA | ||
- name: Make artifact location URIs relative | ||
continue-on-error: true | ||
run: | | ||
echo "$( | ||
jq \ | ||
--arg github_workspace ${{ github.workspace }} \ | ||
'. | ( .runs[].results[].locations[].physicalLocation.artifactLocation.uri |= if test($github_workspace) then .[($github_workspace | length | . + 1):] else . end )' \ | ||
${{ github.workspace }}/detekt.sarif.json | ||
)" > ${{ github.workspace }}/detekt.sarif.json | ||
# Uploads results to GitHub repository using the upload-sarif action | ||
- uses: github/codeql-action/upload-sarif@v2 | ||
with: | ||
# Path to SARIF file relative to the root of the repository | ||
sarif_file: ${{ github.workspace }}/detekt.sarif.json | ||
checkout_path: ${{ github.workspace }} |
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,46 @@ | ||
# This workflow uses actions that are not certified by GitHub. | ||
# They are provided by a third-party and are governed by | ||
# separate terms of service, privacy policy, and support | ||
# documentation. | ||
|
||
name: Vulnerability Scan with MobSF | ||
|
||
on: | ||
push: | ||
branches: [ "main" ] | ||
pull_request: | ||
branches: [ "main" ] | ||
schedule: | ||
- cron: '30 6 * * 1' | ||
# Allows you to run this workflow manually from the Actions tab | ||
workflow_dispatch: | ||
|
||
permissions: | ||
contents: read | ||
|
||
jobs: | ||
mobile-security: | ||
name: MobSF Scan | ||
permissions: | ||
contents: read # for actions/checkout to fetch code | ||
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results | ||
actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- name: Setup python | ||
uses: actions/setup-python@v3 | ||
with: | ||
python-version: 3.8 | ||
|
||
- name: Run mobsfscan | ||
uses: MobSF/mobsfscan@a60d10a83af68e23e0b30611c6515da604f06f65 | ||
with: | ||
args: . --sarif --output results.sarif || true | ||
|
||
- name: Upload mobsfscan report | ||
uses: github/codeql-action/upload-sarif@v2 | ||
with: | ||
sarif_file: results.sarif |