diff --git a/.github/workflows/synchronize-readme.yml b/.github/workflows/synchronize-readme.yml new file mode 100644 index 0000000000..13b3e0a526 --- /dev/null +++ b/.github/workflows/synchronize-readme.yml @@ -0,0 +1,63 @@ +name: Synchronize Readme + +on: + workflow_dispatch: + schedule: + - cron: '0 12 * * 1-5' # Mon-Fri at 12 + +jobs: + build: + name: synchronize-readme + runs-on: ubuntu-latest + steps: + - run: | + # Setup + gh auth setup-git + git config --global user.email "noreply@snyk.io" + git config --global user.name "$GITHUB_ACTOR" + + # Clone the CLI repository + gh repo clone snyk/cli cli -- --depth=1 --quiet + git -C ./cli checkout -B $DESTINATION_BRANCH + + # Retrieve the GitBook content + wget https://raw.githubusercontent.com/snyk/user-docs/main/docs/snyk-cli/getting-started-with-the-snyk-cli.md -O current_gitbook.md + + # Find relative paths to GitBooks assets (such as images) and replace with absolute paths + sed -i \ + -e "s|../.gitbook/assets/|https://github.com/snyk/user-docs/raw/HEAD/docs/.gitbook/assets/|g" \ + current_gitbook.md + + # Replace the README.md content with the GitBook content + cp current_gitbook.md ./cli/README.md + + # If changes, commit and create PR + if [[ $(git -C ./cli status --porcelain) ]]; then + echo "Documentation changes detected" + cd ./cli + npm clean-install + npx prettier --write ./cli/README.md + git push -f -u origin $DESTINATION_BRANCH + + export SHA=$( git rev-parse $DESTINATION_BRANCH:README.md ) + export CONTENT=$( base64 -i README.md ) + gh api --method PUT /repos/:owner/:repo/contents/README.md \ + --field message="$MESSAGE" \ + --field content="$CONTENT" \ + --field encoding="base64" \ + --field branch="$DESTINATION_BRANCH" \ + --field sha="$SHA" + + if [[ ! $(gh pr list --search "$MESSAGE" 2>&1 | grep -e "$MESSAGE";) ]]; then + echo "Creating PR" + gh pr create --title="$MESSAGE" --body="Automatic PR controlled by GitHub Action." --head $DESTINATION_BRANCH + else + echo "PR exists, pushed changes to it." + fi + else + echo "No documentation changes detected, exiting." + fi + env: + DESTINATION_BRANCH: docs/automatic-gitbook-update + MESSAGE: 'docs: synchronizing README from GitBook' + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/README.md b/README.md index 8fed1f37a3..af76e23e83 100644 --- a/README.md +++ b/README.md @@ -1,323 +1,120 @@ -
- -
+# Getting started with the Snyk CLI -# Snyk CLI +## Introduction to Snyk and the Snyk CLI -[Snyk](https://snyk.io) scans and monitors your projects for security vulnerabilities. +[Snyk](https://snyk.io/) is a developer-first, cloud-native security tool to scan and monitor your software development projects for security vulnerabilities. Snyk scans multiple content types for security issues: -![Snyk CLI screenshot](help/snyk-cli-screenshot.png) +- [**Snyk Open Source**](https://docs.snyk.io/scan-using-snyk/snyk-open-source): Find and automatically fix open-source vulnerabilities +- [**Snyk Code**](https://docs.snyk.io/scan-using-snyk/snyk-code): Find and fix vulnerabilities in your application code in real time +- [**Snyk Container**](https://docs.snyk.io/scan-using-snyk/snyk-container): Find and fix vulnerabilities in container images and Kubernetes applications +- [**Snyk Infrastructure as Code**](https://docs.snyk.io/scan-using-snyk/scan-infrastructure): Find and fix insecure configurations in Terraform and Kubernetes code -# What is [Snyk](https://snyk.io)? +[Learn more about what Snyk can do and sign up for a free account](https://snyk.io/). -[Snyk](https://snyk.io) is a developer-first cloud-native security tool. -It covers multiple areas of application security: +The **Snyk CLI brings the functionality of Snyk into your development workflow**. You can run the CLI locally from the command line or in an IDE. You can also run the CLI in your CI/CD pipeline. The following shows an example of Snyk CLI test command output. -1. [**Snyk Open Source**](https://snyk.io/product/open-source-security-management/): Find and automatically fix open source vulnerabilities -2. [**Snyk Code**](https://snyk.io/product/snyk-code/): Find and fix vulnerabilities in your application code in real time -3. [**Snyk Container**](https://snyk.io/product/container-vulnerability-management/): Find and fix vulnerabilities in container images and Kubernetes applications -4. [**Snyk Infrastructure as Code**](https://snyk.io/product/infrastructure-as-code-security/): Find and fix insecure configurations in Terraform and Kubernetes code + -[Learn more about what Snyk can do and sign up for a free account ยป](https://snyk.io) +Snyk CLI scanning **supports many languages and tools.** For detailed information, see the [summary of supported environments](https://docs.snyk.io/getting-started/introducing-snyk#how-can-snyk-work-in-my-environment). -# What is Snyk CLI? +This page explains how to install, authenticate, and start scanning using the CLI. Snyk also has an onboarding wizard to guide you through these steps. For a demonstration, view [Starting with Snyk: an overview of the CLI onboarding flow](https://www.youtube.com/watch?v=adj3VF82-v8). -Snyk CLI brings the functionality of [Snyk](https://snyk.io) into your development workflow. It can be run locally or in your CI/CD pipeline to scan your projects for security issues. +## Install the Snyk CLI and authenticate your machine -## Supported languages and tools +To use the CLI, you must install it and authenticate your machine. See [Install or update the Snyk CLI](https://docs.snyk.io/snyk-cli/install-the-snyk-cli) and [Authenticate the CLI with your account](https://docs.snyk.io/snyk-cli/authenticate-the-cli-with-your-account). You can refer to the [release notes](https://github.com/snyk/cli/releases) for a summary of changes in each release. Before scanning your code, review the [Code execution warning for Snyk CLI](https://docs.snyk.io/snyk-cli/code-execution-warning-for-snyk-cli). -Snyk supports many languages and tools, including Java, .NET, JavaScript, Python, Golang, PHP, C/C++, Ruby, Scala and more. See our [Language Support documentation](https://support.snyk.io/hc/en-us/articles/360020352437-Language-support-summary). +**Note:** Before you can use the CLI for Open Source scanning, you must install your package manager. The needed third-party tools, such as Gradle or Maven, must be in the `PATH`. -CLI also supports [Docker scanning](https://support.snyk.io/hc/en-us/articles/360003946897-Snyk-Container-security-overview) and [Terraform, k8s and other Infrastructure as Code files scanning](https://support.snyk.io/hc/en-us/categories/360001342678-Infrastructure-as-code). +You can use the CLI in your IDE or CI/CD environment. For details, see [Install as part of a Snyk integration](https://docs.snyk.io/snyk-cli/install-the-snyk-cli#install-as-a-part-of-a-snyk-integration). ---- +## Test your installation -# Install Snyk CLI +After authenticating, you can **test your installation**. For a quick test, run `snyk --help`. -Snyk CLI can be installed through multiple channels. +Alternatively, you can perform a **quick test** on a public npm package, for example `snyk test ionic`. -## Install with npm or Yarn +Look at the `test` command **report** in your terminal. The report shows the vulnerabilities Snyk found in the package. For each issue found, Snyk reports the severity of the issue, provides a link to a detailed description, reports the path through which the vulnerable module got into your system, and provides guidance on how to fix the problem. -[Snyk CLI is available as an npm package](https://www.npmjs.com/package/snyk). If you have Node.js installed locally, you can install it by running: +## Scan your development Project -```bash -npm install snyk@latest -g -``` - -or if you are using Yarn: - -```bash -yarn global add snyk -``` - -## More installation methods - -- - - -
- ---- - -# Getting started with Snyk CLI - -Once you installed the Snyk CLI, you can verify it's working by running: - -```bash -snyk --help -``` - -See the [full Snyk CLI help](./help/cli-commands). - -## Authenticating Snyk CLI - -Snyk CLI depends on [Snyk.io](https://snyk.io) APIs. Connect your Snyk CLI with [Snyk.io](https://snyk.io) by running: - -```bash -snyk auth -``` +After you have installed the CLI and authenticated your machine, to **scan an open-source Project**, use `cd /my/project/` to change the current directory to`a`folder containing a supported package manifest file, such as `package.json`, `pom.xml`, or `composer.lock`. Then run `snyk test`. All vulnerabilities identified are listed, including their path and fix guidance. -## Setting up language support +To scan your **source code** run `snyk code test`. -Depending on your project's language, you might need to setup your language environment before using Snyk. +You can **scan a Docker image** by its tag running, for example: `snyk container test ubuntu:18.04`. -See our [Language Support documentation](https://support.snyk.io/hc/en-us/articles/360020352437-Language-support-summary). +To scan a **Kubernetes (K8s) file** run the following:\ +`snyk iac test /path/to/kubernetes_file.yaml` -## Scanning your project +For details about using the Snyk CLI to scan each content type, see the following: -If you are already in a folder with a supported project, start by running: +- [Snyk CLI for Snyk Open Source](https://docs.snyk.io/snyk-cli/scan-and-maintain-projects-using-the-cli/snyk-cli-for-open-source) and the CLI help for the [`test`](https://docs.snyk.io/snyk-cli/commands/test) and [`monitor`](https://docs.snyk.io/snyk-cli/commands/monitor) commands +- [Snyk CLI for Snyk Code](https://docs.snyk.io/snyk-cli/commands/code) and the [Snyk Code CLI help](https://docs.snyk.io/snyk-cli/scan-and-maintain-projects-using-the-cli/snyk-cli-for-snyk-code) +- [Snyk CLI for Snyk Container](https://docs.snyk.io/snyk-cli/commands/container), including Docker scanning, and the [Snyk Container CLI help](https://docs.snyk.io/snyk-cli/scan-and-maintain-projects-using-the-cli/snyk-cli-for-snyk-container) +- [Snyk CLI for Snyk IaC](https://docs.snyk.io/snyk-cli/scan-and-maintain-projects-using-the-cli/snyk-cli-for-iac), including Terraform and Kubernetes (K8s) Projects, and the [Snyk IAC CLI help](https://docs.snyk.io/snyk-cli/commands/iac) -```bash -snyk test -``` - -Or scan a Docker image by its tag with [Snyk Container](https://snyk.io/product/container-vulnerability-management/): +## Monitor your Open Source or Container Project -```bash -snyk container test ubuntu:18.04 -``` +Snyk can monitor your Open Source or Container integrated SCM Project periodically and alert you to new vulnerabilities. To set up your Project to be monitored, run `snyk monitor` or `snyk container monitor`. -Or a k8s file: - -```bash -snyk iac test /path/to/kubernetes_file.yaml -``` - -## Monitoring your project - -Snyk can also monitor your project periodically and alert you for new vulnerabilities. The `snyk monitor` is similar to `snyk test` and can be used to create a project on the Snyk website that will be continuously monitored for new vulnerabilities. - -- - - -
+This creates a snapshot of your current dependencies so Snyk can regularly scan your code. Snyk can then alert you about newly disclosed vulnerabilities as they are introduced or when a previously unavailable patch or upgrade path is created. The following code shows an example of the output of the `snyk monitor` command. ``` > snyk monitor Monitoring /project (project-name)... -Explore this snapshot at https://app.snyk.io/org/my-org/project/29361c2c-9005-4692-8df4-88f1c040fa7c/history/e1c994b3-de5d-482b-9281-eab4236c851e +Explore this snapshot at +https://app.snyk.io/org/my-org/project/29361c2c-9005-4692 +-8df4-88f1c040fa7c/history/e1c994b3-de5d-482b-9281-eab4236c851e -Notifications about newly disclosed issues related to these dependencies will be emailed to you. +Notifications about newly disclosed issues related to these +dependencies will be emailed to you. ``` -### Add Snyk to your CI/CD - -Snyk is really powerful when you are continuously scanning and monitoring your projects for vulnerabilities. +You can log in to your Snyk account and navigate to the [Projects page](https://app.snyk.io/projects) to find the latest snapshot and scan results: -Use one of [our integrations](#install-as-a-part-of-a-snyk-cli-integration) to stay secure. + -You can authorize Snyk CLI in your CI/CD programatically: +For more information, see [Monitor your Projects at regular intervals](https://docs.snyk.io/snyk-cli/scan-and-maintain-projects-using-the-cli/monitor-your-projects-at-regular-intervals). -```bash -# Using a SNYK_TOKEN envvar (preferred) -SNYK_TOKEN=