Kicking off an import
Note that any logs will be generated at SNYK_LOG_PATH
directory.
1. Create the import-projects.json
file
import-projects.json
fileThe file is expected to have a required targets
top level key which is an array of import targets.
Each import target has the following keys:
orgId
- Can be found in https://app.snyk.io/org/YOUR_ORG/manage/settingsintegrationId
- Can be found in the Integrations menu for each SCM https://app.snyk.io/org/YOUR_ORG/manage/settingstarget
,files
,exclusionGlobs
- See the Snyk Import API documentation for more information.exclusionGlobs
- Comma-separated list of up to ten folder names to exclude from scanning (each folder name must not exceed 100 characters). If not specified, defaults to "fixtures, tests, tests, node_modules". If an empty string is provided, no folders will be excluded.files
- An object array. Each path must be the full relative path to the file from the root of the target. Only those files will be imported if found at that location.
Note: For a repo that may have 200+ manifest files it is recommended to split this import into multiple imports by targeting specific files. Importing hundreds of files at once from one repo can cause the import to result in some errors or failures.
Splitting the import to target some files or some folders only will benefit from the re-tries and yield a smaller load on the source control management system being used. Populate the files
property to accomplish this in the import JSON.
If you have any tests or fixtures that should be ignored, please set the exclusionGLobs
property:
a comma-separated list of up to ten folder names to exclude from scanning. If not specified, it defaults to "fixtures, tests, tests, node_modules". If an empty string is provided, no folders will be excluded
Note: snyk-api-import supports all of the same integration types and project sources as identified in the Import API documentation (Import Projects, Import). Examples follow. If there is no example for your use case, see the API documentation.
Example: GitLab
Example: Bitbucket Server
Example: GitHub.com, GitHub Enterprise, dev.azure.com, Hosted Azure Repos
Example: Google Container Registry
Example: Azure Container Registry, Elastic Container Registry, Artifactory Container Registry
2. Set the env vars
SNYK_IMPORT_PATH
- the path to the import file or use--file
parameterSNYK_TOKEN
- your Snyk api tokenSNYK_LOG_PATH
- the path to folder where all logs should be saved. Snyk recommends creating a dedicated logs folder for each import you have running. Note: all logs will be appended.CONCURRENT_IMPORTS
(optional) - defaults to 15 repos at a time, which is the recommended amount to import at once as a maximum. Just one repo may have many projects inside which can trigger many files at once to be requested from the user's SCM instance and some may have rate limiting in place. This script aims to help reduce the risk of hitting a rate limit.SNYK_API
(optional) defaults tohttps://api.snyk.io/v1
3. Download and run
Grab a binary from the releases page and run with DEBUG=snyk* snyk-api-import-macos import --file=path/to/imported-targets.json
Skip all previously imported targets
This util can be used to skip previously imported targets (repos) so only remaining targets will be imported.
The util helps generate the imported-targets.log
file by analyzing the projects already in a given Snyk Group. When present in the logging path, this file is used to look up targets that should be skipped during the import.
Example
All GitHub repos have been imported into Snyk into their respective organizations during initial onboarding.
New GitHub repos have since been added and now need to be added to Snyk.
To avoid importing everything again, you can use this util and run import again to import only "new" Github repos. This is much faster and removes unnecessary calls to Snyk and GitHub to fetch files and do the import for everything again.
Importing the same target
The same target imported into a different organization can be imported.
The same target from a differed source can be imported, for example, the same repo is present in GitHub and is now is being imported via GitHub Enterprise into the same org.
Command to run
skip all previously imported into all orgs in a Group:
snyk-api-import-macos list:imported --integrationType=<integration-type> --groupId=<snyk_group_id>
skip all previously imported for a specific organization:
snyk-api-import-macos list:imported --integrationType=<integration-type> --orgId=<snyk_org_id>
import a single integration / projects source:
snyk-api-import-macos list:imported --integrationType=<integration-type> --groupId=<snyk_group_id>
import multiple integrations / projects sources:
snyk-api-import-macos list:imported --integrationType=<integration-type> --integrationType=<integration-type> --orgId=<snyk_org_id>
Supported integration types
GitHub.com
github
GitHub Enterprise
github-enterprise
GitLab
gitlab
Bitbucket Cloud
bitbucket-cloud
Google Cloud Registry
gcr
DockerHub registry
docker-hub
Azure repos
azure-repos
Last updated