|
| 1 | +# CI/CD guide |
| 2 | + |
| 3 | +Use this guide for pipeline-focused CLI usage across platforms. |
| 4 | + |
| 5 | +## Recommended patterns |
| 6 | + |
| 7 | +### Dashboard-style reachable SARIF |
| 8 | + |
| 9 | +```bash |
| 10 | +socketcli \ |
| 11 | + --reach \ |
| 12 | + --sarif-file results.sarif \ |
| 13 | + --sarif-scope full \ |
| 14 | + --sarif-grouping alert \ |
| 15 | + --sarif-reachability reachable \ |
| 16 | + --disable-blocking |
| 17 | +``` |
| 18 | + |
| 19 | +### Diff-based gating on new reachable findings |
| 20 | + |
| 21 | +```bash |
| 22 | +socketcli \ |
| 23 | + --reach \ |
| 24 | + --sarif-file results.sarif \ |
| 25 | + --sarif-scope diff \ |
| 26 | + --sarif-reachability reachable \ |
| 27 | + --strict-blocking |
| 28 | +``` |
| 29 | + |
| 30 | +## Config file usage in CI |
| 31 | + |
| 32 | +Use `--config .socketcli.toml` to keep pipeline commands small. |
| 33 | + |
| 34 | +Precedence order: |
| 35 | + |
| 36 | +`CLI flags` > `environment variables` > `config file` > `built-in defaults` |
| 37 | + |
| 38 | +Example: |
| 39 | + |
| 40 | +```toml |
| 41 | +[socketcli] |
| 42 | +reach = true |
| 43 | +sarif_scope = "full" |
| 44 | +sarif_grouping = "alert" |
| 45 | +sarif_reachability = "reachable" |
| 46 | +sarif_file = "results.sarif" |
| 47 | +``` |
| 48 | + |
| 49 | +## Platform examples |
| 50 | + |
| 51 | +### GitHub Actions |
| 52 | + |
| 53 | +```yaml |
| 54 | +- name: Run Socket CLI |
| 55 | + run: socketcli --config .socketcli.toml --target-path . |
| 56 | + env: |
| 57 | + SOCKET_SECURITY_API_TOKEN: ${{ secrets.SOCKET_SECURITY_API_TOKEN }} |
| 58 | +``` |
| 59 | +
|
| 60 | +### Buildkite |
| 61 | +
|
| 62 | +```yaml |
| 63 | +steps: |
| 64 | + - label: "Socket scan" |
| 65 | + command: "socketcli --config .socketcli.toml --target-path ." |
| 66 | + env: |
| 67 | + SOCKET_SECURITY_API_TOKEN: "${SOCKET_SECURITY_API_TOKEN}" |
| 68 | +``` |
| 69 | +
|
| 70 | +### GitLab CI |
| 71 | +
|
| 72 | +```yaml |
| 73 | +socket_scan: |
| 74 | + script: |
| 75 | + - socketcli --config .socketcli.toml --target-path . |
| 76 | + variables: |
| 77 | + SOCKET_SECURITY_API_TOKEN: $SOCKET_SECURITY_API_TOKEN |
| 78 | +``` |
| 79 | +
|
| 80 | +### Bitbucket Pipelines |
| 81 | +
|
| 82 | +```yaml |
| 83 | +pipelines: |
| 84 | + default: |
| 85 | + - step: |
| 86 | + script: |
| 87 | + - socketcli --config .socketcli.toml --target-path . |
| 88 | +``` |
| 89 | +
|
| 90 | +## Workflow templates |
| 91 | +
|
| 92 | +Prebuilt examples in this repo: |
| 93 | +
|
| 94 | +- [`../workflows/github-actions.yml`](../workflows/github-actions.yml) |
| 95 | +- [`../workflows/buildkite.yml`](../workflows/buildkite.yml) |
| 96 | +- [`../workflows/gitlab-ci.yml`](../workflows/gitlab-ci.yml) |
| 97 | +- [`../workflows/bitbucket-pipelines.yml`](../workflows/bitbucket-pipelines.yml) |
| 98 | + |
| 99 | +## CI gotchas |
| 100 | + |
| 101 | +- `--strict-blocking` changes pass/fail policy, not SARIF dataset semantics. |
| 102 | +- `--sarif-scope full` requires `--reach`. |
| 103 | +- `--sarif-grouping alert` currently applies to `--sarif-scope full`. |
| 104 | +- Diff-based SARIF can validly be empty when there are no matching net-new alerts. |
| 105 | +- Keep API tokens in secret stores (`SOCKET_SECURITY_API_TOKEN`), not in config files. |
0 commit comments