Skip to main content

ghas-cli

CodeQL CI - Ruff Downloads Supported Versions Contributors

CLI utility to interact with GitHub Advanced Security ("GHAS").

It allows to deploy GHAS features individually or at scale, while taking into account each repository configuration.

More specifically, it automates the following:

  • Ensure GitHub Actions are properly enabled for the repository (required for CodeQL),
  • Enable Secret Scanner, and create an informative issue
  • Enable Push Protection, and create an informative issue
  • Enable Dependabot and create an informative issue
  • Enable the Dependency Reviewer and create an informative issue
  • Open a PR to deploy Code Scanning with a custom configuration tuned for each repository's languages and non-main default branch (e.g main or master are not hardcoded, it determines the proper default branch automatically),
  • Cleanup legacy Mend issues on each repository

Each of these actions can also open an issue explaining each feature, how to use them, and what to eventually do before they are fully enabled. See ./templates to get an overview of these issues!

To follow your deployment, ghas-cli outputs results in a csv file indicating the deployment status of each feature for each repository.

You can work on a single repository or on thousands of them. In that case, ghas-cli does its best to overcome GitHub's rate limits...

Installation

Builds are available in the Releases tab.

  • Pypi:
pip install ghas-cli
  • Manually:
python -m pip install /full/path/to/ghas-cli-xxx.whl

# e.g: python3 -m pip install Downloads/ghas-cli-0.5.0-none-any.whl

Usage

ghas-cli -h or see the wiki.

Development

Build

Install uv first, then:

make dev

Bump the version number

  • Bump the version number: uv version --bump minor
  • Update the __version__ field in src/cli.py accordingly.

Publish a new version

Requires syft to be installed to generate the sbom.

  1. Bump the version number as described above
  2. make release to build the packages
  3. git commit -a -S Bump to version 1.1.2 and git tag -s v1.1.2 -m "1.1.2"
  4. Upload dist/*, checksums.sha512 and checksums.sha512.asc to a new release in GitHub.
  5. Upload to PyPi: uv publish.

Why not use ghas-enablement?

GitHub suggests using ghas-enablement to deploy GHAS at scale. Unfortunately, it has many limitations that make it a non viable tool as you understood if you read the beginning of this README, including:

  • Only support for one default branch name: If you repositories are mixing master, main, dev, test... as the repository default branch, you will end up creating the CodeQL config to another branch than the default's.
    • ghas-cli uses the correct default branch for each repo.
  • Non per-language CodeQL workflow configuration: You can only automate the PR creation for a single CodeQL workflow config file. Your repositories are likely a mix of many languages combinations, so pushing a single workflow configuration accross an organization is not efficient.
    • ghas-cli adjusts the CodeQL configuration to each repository languages.
  • Doesn't check if Actions are properly enabled on your organization repositories: Running ghas-enablement when Actions are disabled will fail.
    • ghas-cli makes sure Actions are enabled before doing anything else. If they're not, it enables them.
  • More broadly, ghas-cli creates more educative issues on each repositories. It also provides more flexibility with an extensive CLI to pipe in/out data.

Miscellaneous

This repository is provided as-is and isn't bound to Malwarebytes' SLA.

Metadata

Release files for ghas-cli 1.7.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ghas-cli 1.7.3
File Size Uploaded
ghas_cli-1.7.3.tar.gz 13.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ghas-cli 1.7.3
File Interpreter ABI Platform
ghas_cli-1.7.3-py3-none-any.whl Python 3 none any Details

Total release size: 36.2 kB

Release files / ghas_cli-1.7.3.tar.gz

Download URL ghas_cli-1.7.3.tar.gz
Size 13.7 kB
Tags Source
SHA-256 checksum
How to use checksums
f5fe67dea75f38d9cc8dc564a095b3e88d81a23a22b65a3318fc585a8e8dc014
BLAKE2b-256 checksum
How to use checksums
d36c5e99485ada0dc26d46a9a3c9bfa36c7ea0102b10c77b819b5847609eafb0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.19

Release files / ghas_cli-1.7.3-py3-none-any.whl

Download URL ghas_cli-1.7.3-py3-none-any.whl
Size 22.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
18237eb2eec322f89e5e0442ac9bde3f35ea1035be7b60c552df25c3265f5328
BLAKE2b-256 checksum
How to use checksums
fd4459ea7b96b04c63d3900facd67be788ba692c1dd1e498ceee41d40cde4ed8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.19

Release history Release notifications | RSS feed

This release

1.7.3 This release

2 release files

1.7.2

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.2

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page