snyk-sync-GHE
is a script that enables syncing of Github Enterprise (or
github.com) repos into Snyk for periodic testing. It leverages the existing
Snyk python wrapper pysnyk and runs through a config
file that contains the information about your SCM (orgs, things to ignore).
This script will look for any newly touched repos within the last DAYS_SINCE_RUN
(default 10 days) to catch any potentially new repos that come up and aren't
onboarded into Snyk.
Any repos that are archived will have their projects purged from Snyk to de-clutter the projects that are currently tracked.
And finally the script reviews any projects for their corresponding repo to
still exist. This would catch any repos deleted or set to ignore via config.ini
Copy config.ini.example to config.ini and modify with your appropriate values before doing the following:
$ git clone https://github.com/sp3nx0r/snyk-sync-GHE
$ virtualenv -p /usr/bin/python3.7 .
$ source ./bin/activate
$ pip install -r requirements.txt
$ python snyk-sync.py
This wrapper requires a config.ini
file which contains the secrets, ids, other data required for script to run. Check
out config.ini.examples
for a template to populate.
[Github]
DOMAIN = github.com
GHE_ACCESS_TOKEN = <token>
ORGS = ["some-org"]
excluded_repos = ['org/ignored_repo']
[Snyk]
SNYK_API_TOKEN = <token>
SNYK_ORG_ID = <uuid>
SNYK_INTEGRATION_ID = <uuid>
[Slack]
webhook_alerts = https://hooks.slack.com/services/HOOK
[Debug]
debug = True
Recommended usage is to run this as a cronjob on periodic basis (like weekly) via crontab -e
:
0 9 * * mon echo 'cd /path/to/snyk-sync; source /path/to/snyk-sync/bin/activate; python3.7 /path/to/snyk-sync/snyk-sync.py' | /bin/bash
There's a debug flag within the config.ini
file which can be set to True/False which
controls the Slack notification and more importantly the actual modification of
Snyk data. Set this to True
to test your integrations prior to executing in Snyk.
Sometimes there's repos that don't have manifest files that Snyk doesn't care about. To
get them off the list of continuously trying to sync, you can add it to a Python list
within the config.ini
file. This will ignore those repos for onboarding into Snyk.
https://github.com/snyk-labs/pysnyk https://github.com/PyGithub/PyGithub