From 56ea63b29a9277a7254ccc53c22f2ab5d68223fc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 8 May 2026 05:57:43 +0000 Subject: [PATCH 1/4] docs: update CLI and helm reference for v2.17.7 --- client_reference/kosli.md | 2 +- client_reference/kosli_allow_artifact.md | 2 +- .../kosli_archive_attestation-type.md | 2 +- client_reference/kosli_archive_environment.md | 2 +- client_reference/kosli_archive_flow.md | 2 +- client_reference/kosli_assert_approval.md | 2 +- client_reference/kosli_assert_artifact.md | 2 +- .../kosli_assert_pullrequest_azure.md | 2 +- .../kosli_assert_pullrequest_bitbucket.md | 2 +- .../kosli_assert_pullrequest_github.md | 2 +- .../kosli_assert_pullrequest_gitlab.md | 2 +- client_reference/kosli_assert_snapshot.md | 2 +- client_reference/kosli_assert_status.md | 2 +- client_reference/kosli_attach-policy.md | 2 +- client_reference/kosli_attest_artifact.md | 2 +- client_reference/kosli_attest_custom.md | 2 +- client_reference/kosli_attest_generic.md | 2 +- client_reference/kosli_attest_jira.md | 2 +- client_reference/kosli_attest_junit.md | 2 +- .../kosli_attest_pullrequest_azure.md | 2 +- .../kosli_attest_pullrequest_bitbucket.md | 2 +- .../kosli_attest_pullrequest_github.md | 2 +- .../kosli_attest_pullrequest_gitlab.md | 2 +- client_reference/kosli_attest_snyk.md | 2 +- client_reference/kosli_attest_sonar.md | 2 +- client_reference/kosli_begin_trail.md | 4 +- client_reference/kosli_completion.md | 2 +- client_reference/kosli_config.md | 2 +- .../kosli_create_attestation-type.md | 4 +- client_reference/kosli_create_environment.md | 2 +- client_reference/kosli_create_flow.md | 4 +- client_reference/kosli_create_policy.md | 2 +- client_reference/kosli_detach-policy.md | 2 +- client_reference/kosli_diff_snapshots.md | 46 +- client_reference/kosli_disable_beta.md | 2 +- client_reference/kosli_enable_beta.md | 2 +- client_reference/kosli_evaluate_input.md | 4 +- client_reference/kosli_evaluate_trail.md | 4 +- client_reference/kosli_evaluate_trails.md | 2 +- client_reference/kosli_fingerprint.md | 4 +- client_reference/kosli_get_approval.md | 2 +- client_reference/kosli_get_artifact.md | 2 +- .../kosli_get_attestation-type.md | 2 +- client_reference/kosli_get_attestation.md | 2 +- client_reference/kosli_get_environment.md | 6 +- client_reference/kosli_get_flow.md | 2 +- client_reference/kosli_get_policy.md | 2 +- client_reference/kosli_get_snapshot.md | 3264 +++++++++++------ client_reference/kosli_get_trail.md | 2 +- client_reference/kosli_join_environment.md | 2 +- client_reference/kosli_list_approvals.md | 2 +- client_reference/kosli_list_artifacts.md | 2 +- .../kosli_list_attestation-types.md | 2 +- client_reference/kosli_list_environments.md | 10 +- client_reference/kosli_list_flows.md | 54 +- client_reference/kosli_list_policies.md | 2 +- client_reference/kosli_list_snapshots.md | 120 +- client_reference/kosli_list_trails.md | 2 +- client_reference/kosli_log_environment.md | 484 ++- client_reference/kosli_rename_environment.md | 2 +- client_reference/kosli_rename_flow.md | 2 +- client_reference/kosli_report_approval.md | 2 +- client_reference/kosli_report_artifact.md | 2 +- client_reference/kosli_request_approval.md | 2 +- client_reference/kosli_search.md | 2 +- client_reference/kosli_snapshot_azure.md | 2 +- client_reference/kosli_snapshot_docker.md | 2 +- client_reference/kosli_snapshot_ecs.md | 2 +- client_reference/kosli_snapshot_k8s.md | 2 +- client_reference/kosli_snapshot_lambda.md | 2 +- client_reference/kosli_snapshot_path.md | 2 +- client_reference/kosli_snapshot_paths.md | 2 +- client_reference/kosli_snapshot_s3.md | 2 +- client_reference/kosli_snapshot_server.md | 2 +- client_reference/kosli_status.md | 2 +- client_reference/kosli_tag.md | 4 +- client_reference/kosli_version.md | 2 +- client_reference/overview.md | 2 +- helm/k8s_reporter.mdx | 291 +- .../live_docs_fetch.cpython-314.pyc | Bin 0 -> 9370 bytes .../live_docs_modifiers_data.cpython-314.pyc | Bin 0 -> 12151 bytes .../live_docs_queries_data.cpython-314.pyc | Bin 0 -> 3570 bytes 82 files changed, 2804 insertions(+), 1627 deletions(-) create mode 100644 scripts/__pycache__/live_docs_fetch.cpython-314.pyc create mode 100644 scripts/__pycache__/live_docs_modifiers_data.cpython-314.pyc create mode 100644 scripts/__pycache__/live_docs_queries_data.cpython-314.pyc diff --git a/client_reference/kosli.md b/client_reference/kosli.md index b30e13c..91ff3d1 100644 --- a/client_reference/kosli.md +++ b/client_reference/kosli.md @@ -24,7 +24,7 @@ Setting the API token to DRY_RUN sets the --dry-run flag. | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -h, --help | help for kosli | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_allow_artifact.md b/client_reference/kosli_allow_artifact.md index fb38b17..2a30419 100644 --- a/client_reference/kosli_allow_artifact.md +++ b/client_reference/kosli_allow_artifact.md @@ -48,7 +48,7 @@ registry without needing a local Docker daemon. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_archive_attestation-type.md b/client_reference/kosli_archive_attestation-type.md index 235dad2..23e5e16 100644 --- a/client_reference/kosli_archive_attestation-type.md +++ b/client_reference/kosli_archive_attestation-type.md @@ -29,7 +29,7 @@ New custom attestations using this type cannot be made, but existing attestation | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_archive_environment.md b/client_reference/kosli_archive_environment.md index 306b1bf..dc35fd8 100644 --- a/client_reference/kosli_archive_environment.md +++ b/client_reference/kosli_archive_environment.md @@ -29,7 +29,7 @@ The environment will no longer be visible in list of environments, data is still | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_archive_flow.md b/client_reference/kosli_archive_flow.md index 9e5ff5a..46c72a0 100644 --- a/client_reference/kosli_archive_flow.md +++ b/client_reference/kosli_archive_flow.md @@ -29,7 +29,7 @@ The flow will no longer be visible in list of flows, data is still stored in the | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_assert_approval.md b/client_reference/kosli_assert_approval.md index 3ef83fe..c18e244 100644 --- a/client_reference/kosli_assert_approval.md +++ b/client_reference/kosli_assert_approval.md @@ -48,7 +48,7 @@ registry without needing a local Docker daemon. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_assert_artifact.md b/client_reference/kosli_assert_artifact.md index f628853..9b81988 100644 --- a/client_reference/kosli_assert_artifact.md +++ b/client_reference/kosli_assert_artifact.md @@ -58,7 +58,7 @@ non-zero code if non-compliant status. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_assert_pullrequest_azure.md b/client_reference/kosli_assert_pullrequest_azure.md index b76128d..85dcc1c 100644 --- a/client_reference/kosli_assert_pullrequest_azure.md +++ b/client_reference/kosli_assert_pullrequest_azure.md @@ -34,7 +34,7 @@ if no pull requests were found for the commit. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_assert_pullrequest_bitbucket.md b/client_reference/kosli_assert_pullrequest_bitbucket.md index 6d1d2c6..17097ac 100644 --- a/client_reference/kosli_assert_pullrequest_bitbucket.md +++ b/client_reference/kosli_assert_pullrequest_bitbucket.md @@ -35,7 +35,7 @@ Authentication to Bitbucket can be done with access token (recommended) or app p | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_assert_pullrequest_github.md b/client_reference/kosli_assert_pullrequest_github.md index c548009..277bc8d 100644 --- a/client_reference/kosli_assert_pullrequest_github.md +++ b/client_reference/kosli_assert_pullrequest_github.md @@ -34,7 +34,7 @@ if no pull requests were found for the commit. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_assert_pullrequest_gitlab.md b/client_reference/kosli_assert_pullrequest_gitlab.md index 476a60c..c6b2502 100644 --- a/client_reference/kosli_assert_pullrequest_gitlab.md +++ b/client_reference/kosli_assert_pullrequest_gitlab.md @@ -34,7 +34,7 @@ if no merge requests were found for the commit. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_assert_snapshot.md b/client_reference/kosli_assert_snapshot.md index 41e8519..33da781 100644 --- a/client_reference/kosli_assert_snapshot.md +++ b/client_reference/kosli_assert_snapshot.md @@ -40,7 +40,7 @@ Examples of valid expressions are: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_assert_status.md b/client_reference/kosli_assert_status.md index 1d32a04..9124d88 100644 --- a/client_reference/kosli_assert_status.md +++ b/client_reference/kosli_assert_status.md @@ -27,7 +27,7 @@ Exits with non-zero code if the Kosli server down. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_attach-policy.md b/client_reference/kosli_attach-policy.md index 083b110..44e100c 100644 --- a/client_reference/kosli_attach-policy.md +++ b/client_reference/kosli_attach-policy.md @@ -28,7 +28,7 @@ Attach a policy to one or more Kosli environments. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_attest_artifact.md b/client_reference/kosli_attest_artifact.md index 13cbf67..7c1fc0a 100644 --- a/client_reference/kosli_attest_artifact.md +++ b/client_reference/kosli_attest_artifact.md @@ -69,7 +69,7 @@ In other CI systems, set them explicitly to capture repository metadata. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_attest_custom.md b/client_reference/kosli_attest_custom.md index 73ad298..c73f5a8 100644 --- a/client_reference/kosli_attest_custom.md +++ b/client_reference/kosli_attest_custom.md @@ -67,7 +67,7 @@ In other CI systems, set them explicitly to capture repository metadata. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_attest_generic.md b/client_reference/kosli_attest_generic.md index faccff7..6a69a9a 100644 --- a/client_reference/kosli_attest_generic.md +++ b/client_reference/kosli_attest_generic.md @@ -63,7 +63,7 @@ In other CI systems, set them explicitly to capture repository metadata. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_attest_jira.md b/client_reference/kosli_attest_jira.md index ac20b58..1043f9e 100644 --- a/client_reference/kosli_attest_jira.md +++ b/client_reference/kosli_attest_jira.md @@ -92,7 +92,7 @@ In other CI systems, set them explicitly to capture repository metadata. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_attest_junit.md b/client_reference/kosli_attest_junit.md index e38459a..3477502 100644 --- a/client_reference/kosli_attest_junit.md +++ b/client_reference/kosli_attest_junit.md @@ -68,7 +68,7 @@ In other CI systems, set them explicitly to capture repository metadata. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_attest_pullrequest_azure.md b/client_reference/kosli_attest_pullrequest_azure.md index 9d4c761..09af5ab 100644 --- a/client_reference/kosli_attest_pullrequest_azure.md +++ b/client_reference/kosli_attest_pullrequest_azure.md @@ -60,7 +60,7 @@ The attestation can be bound to an *artifact* in two ways: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_attest_pullrequest_bitbucket.md b/client_reference/kosli_attest_pullrequest_bitbucket.md index e7d4b2d..bf02ab1 100644 --- a/client_reference/kosli_attest_pullrequest_bitbucket.md +++ b/client_reference/kosli_attest_pullrequest_bitbucket.md @@ -62,7 +62,7 @@ The attestation can be bound to an *artifact* in two ways: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_attest_pullrequest_github.md b/client_reference/kosli_attest_pullrequest_github.md index 0cff84d..18e87f6 100644 --- a/client_reference/kosli_attest_pullrequest_github.md +++ b/client_reference/kosli_attest_pullrequest_github.md @@ -60,7 +60,7 @@ The attestation can be bound to an *artifact* in two ways: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_attest_pullrequest_gitlab.md b/client_reference/kosli_attest_pullrequest_gitlab.md index 2170983..f61c894 100644 --- a/client_reference/kosli_attest_pullrequest_gitlab.md +++ b/client_reference/kosli_attest_pullrequest_gitlab.md @@ -60,7 +60,7 @@ The attestation can be bound to an *artifact* in two ways: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_attest_snyk.md b/client_reference/kosli_attest_snyk.md index 5d3eaea..343987e 100644 --- a/client_reference/kosli_attest_snyk.md +++ b/client_reference/kosli_attest_snyk.md @@ -72,7 +72,7 @@ In other CI systems, set them explicitly to capture repository metadata. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_attest_sonar.md b/client_reference/kosli_attest_sonar.md index f4c4f28..2fbd2ae 100644 --- a/client_reference/kosli_attest_sonar.md +++ b/client_reference/kosli_attest_sonar.md @@ -88,7 +88,7 @@ The attestation can be bound to an *artifact* in two ways: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_begin_trail.md b/client_reference/kosli_begin_trail.md index 04a3ca8..1a7c82b 100644 --- a/client_reference/kosli_begin_trail.md +++ b/client_reference/kosli_begin_trail.md @@ -50,7 +50,7 @@ In other CI systems, set them explicitly to capture repository metadata. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -61,7 +61,7 @@ In other CI systems, set them explicitly to capture repository metadata. View an example of the `kosli begin trail` command in GitHub. - In [this YAML file](https://github.com/cyber-dojo/runner/blob/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e/.github/workflows/main.yml#L78), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/runner-ci/trails/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e?attestation_id=1). + In [this YAML file](https://github.com/cyber-dojo/runner/blob/8768460dc1c91de5f6485a7d3e36870b683edfc3/.github/workflows/main.yml#L78), which created [this Kosli Event](https://app.kosli.com/cyber-dojo/flows/runner-ci/trails/8768460dc1c91de5f6485a7d3e36870b683edfc3?attestation_id=1). View an example of the `kosli begin trail` command in GitLab. diff --git a/client_reference/kosli_completion.md b/client_reference/kosli_completion.md index 574d467..e9350df 100644 --- a/client_reference/kosli_completion.md +++ b/client_reference/kosli_completion.md @@ -73,7 +73,7 @@ you will need to enable it. You can execute the following once: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_config.md b/client_reference/kosli_config.md index 6035606..aea31d3 100644 --- a/client_reference/kosli_config.md +++ b/client_reference/kosli_config.md @@ -43,7 +43,7 @@ Keys correspond to the specific flag name, capitalized. For instance: --flow wou | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_create_attestation-type.md b/client_reference/kosli_create_attestation-type.md index e2e655d..6cbd151 100644 --- a/client_reference/kosli_create_attestation-type.md +++ b/client_reference/kosli_create_attestation-type.md @@ -45,7 +45,7 @@ All rules must return `true` for the evaluation to pass and the attestation to b | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -56,7 +56,7 @@ All rules must return `true` for the evaluation to pass and the attestation to b View an example of the `kosli create attestation-type` command in GitHub. - In [this YAML file](https://github.com/cyber-dojo/kosli-attestation-types/blob/7ad343982d42654fdf4cf123c5e7aec44af8e1a7/.github/workflows/main.yml#L56) + In [this YAML file](https://github.com/cyber-dojo/kosli-attestation-types/blob/7ad343982d42654fdf4cf123c5e7aec44af8e1a7/.github/workflows/main.yml#L30) diff --git a/client_reference/kosli_create_environment.md b/client_reference/kosli_create_environment.md index b0de067..4829425 100644 --- a/client_reference/kosli_create_environment.md +++ b/client_reference/kosli_create_environment.md @@ -56,7 +56,7 @@ to them. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_create_flow.md b/client_reference/kosli_create_flow.md index b21304b..5ff78bc 100644 --- a/client_reference/kosli_create_flow.md +++ b/client_reference/kosli_create_flow.md @@ -36,7 +36,7 @@ You can specify flow parameters in flags. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -47,7 +47,7 @@ You can specify flow parameters in flags. View an example of the `kosli create flow` command in GitHub. - In [this YAML file](https://github.com/cyber-dojo/runner/blob/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e/.github/workflows/main.yml#L71) + In [this YAML file](https://github.com/cyber-dojo/runner/blob/8768460dc1c91de5f6485a7d3e36870b683edfc3/.github/workflows/main.yml#L71) View an example of the `kosli create flow` command in GitLab. diff --git a/client_reference/kosli_create_policy.md b/client_reference/kosli_create_policy.md index 0b7f52e..9e4adba 100644 --- a/client_reference/kosli_create_policy.md +++ b/client_reference/kosli_create_policy.md @@ -30,7 +30,7 @@ Updating policy content creates a new version of the policy. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_detach-policy.md b/client_reference/kosli_detach-policy.md index ad4cc9d..bdd76c7 100644 --- a/client_reference/kosli_detach-policy.md +++ b/client_reference/kosli_detach-policy.md @@ -28,7 +28,7 @@ If the environment has no more policies attached to it, then its snapshots' stat | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_diff_snapshots.md b/client_reference/kosli_diff_snapshots.md index 9673fd0..57ad618 100644 --- a/client_reference/kosli_diff_snapshots.md +++ b/client_reference/kosli_diff_snapshots.md @@ -45,7 +45,7 @@ Specify SNAPPISH_1 and SNAPPISH_2 by: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -67,7 +67,7 @@ kosli diff snapshots aws-beta aws-prod --output=json ```json { "snappish1": { - "snapshot_id": "aws-beta#6625", + "snapshot_id": "aws-beta#6654", "artifacts": [ { "fingerprint": "4db0e95a793aa0539250f9998bc4fbe10b5d96a339730c20a25b9e763a8a5ff3", @@ -88,7 +88,7 @@ kosli diff snapshots aws-beta aws-prod --output=json ] }, "snappish2": { - "snapshot_id": "aws-prod#4357", + "snapshot_id": "aws-prod#4382", "artifacts": [ { "fingerprint": "541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", @@ -114,20 +114,12 @@ kosli diff snapshots aws-beta aws-prod --output=json "not-changed": { "artifacts": [ { - "fingerprint": "1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", - "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:92c0996@sha256:1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", - "most_recent_timestamp": 1776923549, - "flow": "saver-ci", - "commit_url": "https://github.com/cyber-dojo/saver/commit/92c0996cd9ae7642eb0769f928abe6cb6c391751", - "instance_count": 1 - }, - { - "fingerprint": "1eea61094353db37c7ef3e9582e63f3427c5e01fe76b8210db985144d10088cf", - "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:95ab455@sha256:1eea61094353db37c7ef3e9582e63f3427c5e01fe76b8210db985144d10088cf", - "most_recent_timestamp": 1777956787, - "flow": "languages-start-points-ci", - "commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/95ab455dd7301b20c744f50b1cd015e4396aedce", - "instance_count": 1 + "fingerprint": "2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:8768460@sha256:2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "most_recent_timestamp": 1778178487, + "flow": "runner-ci", + "commit_url": "https://github.com/cyber-dojo/runner/commit/8768460dc1c91de5f6485a7d3e36870b683edfc3", + "instance_count": 3 }, { "fingerprint": "3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", @@ -154,12 +146,12 @@ kosli diff snapshots aws-beta aws-prod --output=json "instance_count": 1 }, { - "fingerprint": "b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", - "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:a2ffba5@sha256:b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", - "most_recent_timestamp": 1777550809, - "flow": "runner-ci", - "commit_url": "https://github.com/cyber-dojo/runner/commit/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", - "instance_count": 3 + "fingerprint": "a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:cfb0d52@sha256:a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "most_recent_timestamp": 1778158856, + "flow": "saver-ci", + "commit_url": "https://github.com/cyber-dojo/saver/commit/cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "instance_count": 1 }, { "fingerprint": "becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", @@ -176,6 +168,14 @@ kosli diff snapshots aws-beta aws-prod --output=json "flow": "custom-start-points-ci", "commit_url": "https://github.com/cyber-dojo/custom-start-points/commit/9dd6c657bc443c45c19e81165ff99286e237cfe3", "instance_count": 1 + }, + { + "fingerprint": "f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:db53382@sha256:f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "most_recent_timestamp": 1778081137, + "flow": "languages-start-points-ci", + "commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/db53382650db8b7b3f216d0055009b0d77685677", + "instance_count": 1 } ] } diff --git a/client_reference/kosli_disable_beta.md b/client_reference/kosli_disable_beta.md index 91dd7fb..5425119 100644 --- a/client_reference/kosli_disable_beta.md +++ b/client_reference/kosli_disable_beta.md @@ -26,7 +26,7 @@ Disable beta features for an organization. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_enable_beta.md b/client_reference/kosli_enable_beta.md index 559f2c1..3cc9db5 100644 --- a/client_reference/kosli_enable_beta.md +++ b/client_reference/kosli_enable_beta.md @@ -26,7 +26,7 @@ Enable beta features for an organization. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_evaluate_input.md b/client_reference/kosli_evaluate_input.md index 00c1543..29b7823 100644 --- a/client_reference/kosli_evaluate_input.md +++ b/client_reference/kosli_evaluate_input.md @@ -49,7 +49,7 @@ This accepts inline JSON or a file reference (`@file.json`). | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -60,7 +60,7 @@ This accepts inline JSON or a file reference (`@file.json`). View an example of the `kosli evaluate input` command in GitHub. - In [this YAML file](https://github.com/cyber-dojo/snyk-scanning/blob/117e18e0cb1eab30b9747ece58327eabfc595b90/tests/test_rego_rules.sh#L153) + In [this YAML file](https://github.com/cyber-dojo/snyk-scanning/blob/2c586e9ede3ce361642ddc9414312833c3fbf5e2/tests/test_rego_rules.sh#L153) diff --git a/client_reference/kosli_evaluate_trail.md b/client_reference/kosli_evaluate_trail.md index 210560f..0db3207 100644 --- a/client_reference/kosli_evaluate_trail.md +++ b/client_reference/kosli_evaluate_trail.md @@ -40,7 +40,7 @@ full data structure available to the policy. Use `--output json` for structured | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -51,7 +51,7 @@ full data structure available to the policy. Use `--output json` for structured View an example of the `kosli evaluate trail` command in GitHub. - In [this YAML file](https://github.com/cyber-dojo/snyk-scanning/blob/9cc4c900ed581834931a9596a49b5033b7ffa12f/.github/workflows/artifact_snyk_test.yml#L325) + In [this YAML file](https://github.com/cyber-dojo/snyk-scanning/blob/2c586e9ede3ce361642ddc9414312833c3fbf5e2/.github/workflows/artifact_snyk_test.yml#L344) diff --git a/client_reference/kosli_evaluate_trails.md b/client_reference/kosli_evaluate_trails.md index 74f06d5..1318b2a 100644 --- a/client_reference/kosli_evaluate_trails.md +++ b/client_reference/kosli_evaluate_trails.md @@ -41,7 +41,7 @@ full data structure available to the policy. Use `--output json` for structured | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_fingerprint.md b/client_reference/kosli_fingerprint.md index fcf2389..69fd8dd 100644 --- a/client_reference/kosli_fingerprint.md +++ b/client_reference/kosli_fingerprint.md @@ -67,7 +67,7 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file, | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -78,7 +78,7 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file, View an example of the `kosli fingerprint` command in GitHub. - In [this YAML file](https://github.com/cyber-dojo/snyk-scanning/blob/9cc4c900ed581834931a9596a49b5033b7ffa12f/.github/workflows/artifact_snyk_test.yml#L177) + In [this YAML file](https://github.com/cyber-dojo/snyk-scanning/blob/2c586e9ede3ce361642ddc9414312833c3fbf5e2/.github/workflows/artifact_snyk_test.yml#L183) diff --git a/client_reference/kosli_get_approval.md b/client_reference/kosli_get_approval.md index e36f569..52f0b6c 100644 --- a/client_reference/kosli_get_approval.md +++ b/client_reference/kosli_get_approval.md @@ -38,7 +38,7 @@ EXPRESSION can be specified as follows: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_get_artifact.md b/client_reference/kosli_get_artifact.md index ec86db3..0ea248d 100644 --- a/client_reference/kosli_get_artifact.md +++ b/client_reference/kosli_get_artifact.md @@ -44,7 +44,7 @@ Examples of valid expressions are: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_get_attestation-type.md b/client_reference/kosli_get_attestation-type.md index a2e6c4e..4ed52ff 100644 --- a/client_reference/kosli_get_attestation-type.md +++ b/client_reference/kosli_get_attestation-type.md @@ -36,7 +36,7 @@ The TYPE-NAME can be specified as follows: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_get_attestation.md b/client_reference/kosli_get_attestation.md index df9b09e..9a5d779 100644 --- a/client_reference/kosli_get_attestation.md +++ b/client_reference/kosli_get_attestation.md @@ -42,7 +42,7 @@ or any of the `--flow`, `--trail` or `--fingerprint` flags. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_get_environment.md b/client_reference/kosli_get_environment.md index b6c1f00..9f90183 100644 --- a/client_reference/kosli_get_environment.md +++ b/client_reference/kosli_get_environment.md @@ -27,7 +27,7 @@ Get an environment's metadata. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -51,8 +51,8 @@ kosli get environment aws-prod --output=json "name": "aws-prod", "type": "ECS", "description": "The ECS cluster for production cyber-dojo", - "last_modified_at": 1777983298.5339797, - "last_reported_at": 1777983298.5339797, + "last_modified_at": 1778219758.5460255, + "last_reported_at": 1778219758.5460255, "state": true, "include_scaling": false, "tags": { diff --git a/client_reference/kosli_get_flow.md b/client_reference/kosli_get_flow.md index 2f1a5a1..9e80fe5 100644 --- a/client_reference/kosli_get_flow.md +++ b/client_reference/kosli_get_flow.md @@ -27,7 +27,7 @@ Get the metadata of a specific flow. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_get_policy.md b/client_reference/kosli_get_policy.md index acf25ab..befb57f 100644 --- a/client_reference/kosli_get_policy.md +++ b/client_reference/kosli_get_policy.md @@ -27,7 +27,7 @@ Get a policy's metadata. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_get_snapshot.md b/client_reference/kosli_get_snapshot.md index a4a3bed..ea02235 100644 --- a/client_reference/kosli_get_snapshot.md +++ b/client_reference/kosli_get_snapshot.md @@ -44,7 +44,7 @@ ENVIRONMENT-NAME-OR-EXPRESSION can be specified as follows: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -65,7 +65,7 @@ kosli get snapshot aws-prod --output=json ```json { - "index": 4357, + "index": 4382, "is_latest": true, "next_snapshot_timestamp": null, "artifact_compliance_count": { @@ -73,13 +73,13 @@ kosli get snapshot aws-prod --output=json "false": 0, "null": 0 }, - "timestamp": 1777956838.5302956, + "timestamp": 1778213818.5191746, "type": "ECS", "compliant": true, - "html_url": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4357", + "html_url": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4382", "artifacts": [ { - "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:95ab455@sha256:1eea61094353db37c7ef3e9582e63f3427c5e01fe76b8210db985144d10088cf", + "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:8768460@sha256:2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "compliant": true, "deployments": [], "policy_decisions": [ @@ -101,8 +101,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "languages-start-points-ci", - "trail_name": "95ab455dd7301b20c744f50b1cd015e4396aedce", + "flow_name": "runner-ci", + "trail_name": "8768460dc1c91de5f6485a7d3e36870b683edfc3", "artifact_status": null } }, @@ -110,7 +110,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-43", + "trail_name": "promotion-one-47", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "artifact_status": null } } @@ -130,8 +146,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "languages-start-points-ci", - "trail_name": "95ab455dd7301b20c744f50b1cd015e4396aedce", + "flow_name": "runner-ci", + "trail_name": "8768460dc1c91de5f6485a7d3e36870b683edfc3", "artifact_status": "COMPLIANT" } }, @@ -139,7 +155,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-43", + "trail_name": "promotion-one-47", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "artifact_status": "COMPLIANT" } } @@ -163,8 +195,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "languages-start-points-ci", - "trail_name": "95ab455dd7301b20c744f50b1cd015e4396aedce", + "flow_name": "runner-ci", + "trail_name": "8768460dc1c91de5f6485a7d3e36870b683edfc3", "artifact_status": null } }, @@ -172,7 +204,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-43", + "trail_name": "promotion-one-47", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "artifact_status": null } } @@ -205,8 +253,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "languages-start-points-ci", - "trail_name": "95ab455dd7301b20c744f50b1cd015e4396aedce", + "flow_name": "runner-ci", + "trail_name": "8768460dc1c91de5f6485a7d3e36870b683edfc3", "artifact_status": null } }, @@ -214,7 +262,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-43", + "trail_name": "promotion-one-47", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "artifact_status": null } } @@ -240,8 +304,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "languages-start-points-ci", - "trail_name": "95ab455dd7301b20c744f50b1cd015e4396aedce", + "flow_name": "runner-ci", + "trail_name": "8768460dc1c91de5f6485a7d3e36870b683edfc3", "artifact_status": "COMPLIANT" } }, @@ -249,7 +313,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-43", + "trail_name": "promotion-one-47", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "artifact_status": "COMPLIANT" } } @@ -273,8 +353,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "languages-start-points-ci", - "trail_name": "95ab455dd7301b20c744f50b1cd015e4396aedce", + "flow_name": "runner-ci", + "trail_name": "8768460dc1c91de5f6485a7d3e36870b683edfc3", "artifact_status": null } }, @@ -282,7 +362,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-43", + "trail_name": "promotion-one-47", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "artifact_status": null } } @@ -293,69 +389,71 @@ kosli get snapshot aws-prod --output=json } ], "reasons_for_incompliance": [], - "fingerprint": "1eea61094353db37c7ef3e9582e63f3427c5e01fe76b8210db985144d10088cf", + "fingerprint": "2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "creationTimestamp": [ - 1777956787 + 1778178483, + 1778178485, + 1778178487 ], "pods": null, "annotation": { - "type": "started-compliant", - "was": 0, - "now": 1 + "type": "updated-provenance", + "was": 3, + "now": 3 }, - "flow_name": "languages-start-points-ci", - "git_commit": "95ab455dd7301b20c744f50b1cd015e4396aedce", - "commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/95ab455dd7301b20c744f50b1cd015e4396aedce", - "html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/1eea61094353db37c7ef3e9582e63f3427c5e01fe76b8210db985144d10088cf?artifact_id=c6ff1415-5cd1-48d0-a0df-cbcbcc5e", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci", + "flow_name": "runner-ci", + "git_commit": "8768460dc1c91de5f6485a7d3e36870b683edfc3", + "commit_url": "https://github.com/cyber-dojo/runner/commit/8768460dc1c91de5f6485a7d3e36870b683edfc3", + "html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=4d69a029-0ed8-4ead-b1f5-f6e36c52", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/languages-start-points/compare/a97ed054e38d484a0015cd658f1d593c03ea2a61...95ab455dd7301b20c744f50b1cd015e4396aedce", - "previous_git_commit": "a97ed054e38d484a0015cd658f1d593c03ea2a61", - "previous_fingerprint": "8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:a97ed05@sha256:8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", + "diff_url": "https://github.com/cyber-dojo/runner/compare/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e...8768460dc1c91de5f6485a7d3e36870b683edfc3", + "previous_git_commit": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", + "previous_fingerprint": "b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:a2ffba5@sha256:b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/a97ed054e38d484a0015cd658f1d593c03ea2a61", - "previous_trail_name": "a97ed054e38d484a0015cd658f1d593c03ea2a61", - "previous_template_reference_name": "languages-start-points" + "previous_git_commit_url": "https://github.com/cyber-dojo/runner/commit/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", + "previous_trail_name": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", + "previous_template_reference_name": "runner" }, - "commit_lead_time": 889.0, + "commit_lead_time": 12009.0, "flows": [ { - "flow_name": "languages-start-points-ci", - "trail_name": "95ab455dd7301b20c744f50b1cd015e4396aedce", - "template_reference_name": "languages-start-points", - "git_commit": "95ab455dd7301b20c744f50b1cd015e4396aedce", - "commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/95ab455dd7301b20c744f50b1cd015e4396aedce", + "flow_name": "runner-ci", + "trail_name": "8768460dc1c91de5f6485a7d3e36870b683edfc3", + "template_reference_name": "runner", + "git_commit": "8768460dc1c91de5f6485a7d3e36870b683edfc3", + "commit_url": "https://github.com/cyber-dojo/runner/commit/8768460dc1c91de5f6485a7d3e36870b683edfc3", "git_commit_info": { - "sha1": "95ab455dd7301b20c744f50b1cd015e4396aedce", - "message": "Merge pull request #204 from cyber-dojo/update-csharp-nunit\n\nEnsure we have the latest csharp-nunit", + "sha1": "8768460dc1c91de5f6485a7d3e36870b683edfc3", + "message": "Merge pull request #228 from cyber-dojo/add-doc-on-vulns\n\nAdd document detailing each known current snyk vulnerability", "author": "Jon Jagger ", "branch": "main", - "timestamp": 1777955898.0, - "url": "https://github.com/cyber-dojo/languages-start-points/commit/95ab455dd7301b20c744f50b1cd015e4396aedce" + "timestamp": 1778166474.0, + "url": "https://github.com/cyber-dojo/runner/commit/8768460dc1c91de5f6485a7d3e36870b683edfc3" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/1eea61094353db37c7ef3e9582e63f3427c5e01fe76b8210db985144d10088cf?artifact_id=c6ff1415-5cd1-48d0-a0df-cbcbcc5e", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci", + "html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=4d69a029-0ed8-4ead-b1f5-f6e36c52", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/languages-start-points/compare/a97ed054e38d484a0015cd658f1d593c03ea2a61...95ab455dd7301b20c744f50b1cd015e4396aedce", - "previous_git_commit": "a97ed054e38d484a0015cd658f1d593c03ea2a61", - "previous_fingerprint": "8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:a97ed05@sha256:8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", + "diff_url": "https://github.com/cyber-dojo/runner/compare/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e...8768460dc1c91de5f6485a7d3e36870b683edfc3", + "previous_git_commit": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", + "previous_fingerprint": "b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:a2ffba5@sha256:b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/a97ed054e38d484a0015cd658f1d593c03ea2a61", - "previous_trail_name": "a97ed054e38d484a0015cd658f1d593c03ea2a61", - "previous_template_reference_name": "languages-start-points" + "previous_git_commit_url": "https://github.com/cyber-dojo/runner/commit/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", + "previous_trail_name": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", + "previous_template_reference_name": "runner" }, - "commit_lead_time": 889.0, + "commit_lead_time": 12009.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "production-promotion", - "trail_name": "promotion-one-43", - "template_reference_name": "languages-start-points", + "trail_name": "promotion-one-47", + "template_reference_name": "runner", "git_commit": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f", "git_commit_info": { @@ -366,32 +464,74 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777361993.0, "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/1eea61094353db37c7ef3e9582e63f3427c5e01fe76b8210db985144d10088cf?artifact_id=eee48a16-8b70-4f29-859c-b7904baf", + "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=198d0c91-0c81-43f4-8394-28bcbc26", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion", "deployment_diff": { "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/1085da6ce837c6ebc77dda1e23b5de4e3c33380f...1085da6ce837c6ebc77dda1e23b5de4e3c33380f", "previous_git_commit": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "previous_fingerprint": "8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:a97ed05@sha256:8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", + "previous_fingerprint": "b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:a2ffba5@sha256:b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "previous_trail_name": "promote-all-13", - "previous_template_reference_name": "languages-start-points" + "previous_trail_name": "promote-all-12", + "previous_template_reference_name": "runner" + }, + "commit_lead_time": 816490.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "template_reference_name": "runner", + "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "git_commit_info": { + "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778157272.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=71d615d1-5deb-41fd-999b-7385377d", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact", + "deployment_diff": null, + "commit_lead_time": 21211.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "template_reference_name": "runner", + "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "git_commit_info": { + "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778157272.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" }, - "commit_lead_time": 594794.0, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=3643933b-99be-4337-aa5e-6a302d56", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", + "deployment_diff": null, + "commit_lead_time": 21211.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] } ], "ecs_context": { - "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/8d3e40c13af6400b975170c90e1c0bb7", + "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/90432eba3a174098bb6f8c7a9c4a5193", "cluster_name": null, "service_name": null } }, { - "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:1999d13@sha256:541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:cfb0d52@sha256:a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "compliant": true, "deployments": [], "policy_decisions": [ @@ -413,8 +553,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "web-ci", - "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", + "flow_name": "saver-ci", + "trail_name": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", "artifact_status": null } }, @@ -422,23 +562,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-13", + "trail_name": "promotion-one-46", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": null } } @@ -458,8 +598,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "web-ci", - "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", + "flow_name": "saver-ci", + "trail_name": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", "artifact_status": "COMPLIANT" } }, @@ -467,23 +607,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-13", + "trail_name": "promotion-one-46", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": "COMPLIANT" } } @@ -501,14 +641,14 @@ kosli get snapshot aws-prod --output=json "must_be_compliant": true } }, - "satisfied": true, - "ignored": false, + "satisfied": null, + "ignored": true, "resolutions": [ { "type": "rule_not_applicable", "context": { - "flow_name": "web-ci", - "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", + "flow_name": "saver-ci", + "trail_name": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", "artifact_status": null } }, @@ -516,23 +656,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-13", + "trail_name": "promotion-one-46", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": null } }, { - "type": "rule_satisfied", + "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": null } } @@ -565,8 +705,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "web-ci", - "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", + "flow_name": "saver-ci", + "trail_name": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", "artifact_status": null } }, @@ -574,23 +714,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-13", + "trail_name": "promotion-one-46", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": null } } @@ -616,8 +756,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "web-ci", - "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", + "flow_name": "saver-ci", + "trail_name": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", "artifact_status": "COMPLIANT" } }, @@ -625,23 +765,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-13", + "trail_name": "promotion-one-46", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": "COMPLIANT" } } @@ -665,8 +805,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "web-ci", - "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", + "flow_name": "saver-ci", + "trail_name": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", "artifact_status": null } }, @@ -674,23 +814,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-13", + "trail_name": "promotion-one-46", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": null } } @@ -701,71 +841,69 @@ kosli get snapshot aws-prod --output=json } ], "reasons_for_incompliance": [], - "fingerprint": "541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "fingerprint": "a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "creationTimestamp": [ - 1777842904, - 1777842905, - 1777842905 + 1778158856 ], "pods": null, "annotation": { "type": "unchanged", - "was": 3, - "now": 3 + "was": 1, + "now": 1 }, - "flow_name": "web-ci", - "git_commit": "1999d1303424879336b04fa3310256554aa6cfa6", - "commit_url": "https://github.com/cyber-dojo/web/commit/1999d1303424879336b04fa3310256554aa6cfa6", - "html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=359b4539-989d-48f5-88eb-8a553baf", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci", + "flow_name": "saver-ci", + "git_commit": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "commit_url": "https://github.com/cyber-dojo/saver/commit/cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed?artifact_id=680cd12d-e9b5-4a2a-8abf-1e75a370", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/web/compare/23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98...1999d1303424879336b04fa3310256554aa6cfa6", - "previous_git_commit": "23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", - "previous_fingerprint": "3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:23d6f24@sha256:3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", + "diff_url": "https://github.com/cyber-dojo/saver/compare/92c0996cd9ae7642eb0769f928abe6cb6c391751...cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "previous_git_commit": "92c0996cd9ae7642eb0769f928abe6cb6c391751", + "previous_fingerprint": "1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:92c0996@sha256:1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/web/commit/23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", - "previous_trail_name": "23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", - "previous_template_reference_name": "web" + "previous_git_commit_url": "https://github.com/cyber-dojo/saver/commit/92c0996cd9ae7642eb0769f928abe6cb6c391751", + "previous_trail_name": "92c0996cd9ae7642eb0769f928abe6cb6c391751", + "previous_template_reference_name": "saver" }, - "commit_lead_time": 1241.0, + "commit_lead_time": 900.0, "flows": [ { - "flow_name": "web-ci", - "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", - "template_reference_name": "web", - "git_commit": "1999d1303424879336b04fa3310256554aa6cfa6", - "commit_url": "https://github.com/cyber-dojo/web/commit/1999d1303424879336b04fa3310256554aa6cfa6", + "flow_name": "saver-ci", + "trail_name": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "template_reference_name": "saver", + "git_commit": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "commit_url": "https://github.com/cyber-dojo/saver/commit/cfb0d52610ab73011f325c4bb5bf0b54fb51031c", "git_commit_info": { - "sha1": "1999d1303424879336b04fa3310256554aa6cfa6", - "message": "Enable CSRF token enforcement on POST requests (Phase 2) (#306)\n\nPhase 1 (deployed April 14) set the csrf_token cookie on all responses.\nPhase 2 enables the enforcement check that was left commented out pending\nall users reloading. Adds a global jQuery ajaxSend hook so all POST\nrequests automatically include the token, and updates the controller test\nbase to seed the cookie and merge the token into POST params.\n\nUsers with a kata page open before this deploy will get one 403 on their\nnext test run; reloading the page picks up the new JS and self-heals.\n\nCo-authored-by: Claude Sonnet 4.6 ", + "sha1": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "message": "Run CI workflow to check updated called snyk-scanning reusable workflow (#365)", "author": "Jon Jagger ", "branch": "main", - "timestamp": 1777841663.0, - "url": "https://github.com/cyber-dojo/web/commit/1999d1303424879336b04fa3310256554aa6cfa6" + "timestamp": 1778157956.0, + "url": "https://github.com/cyber-dojo/saver/commit/cfb0d52610ab73011f325c4bb5bf0b54fb51031c" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=359b4539-989d-48f5-88eb-8a553baf", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci", + "html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed?artifact_id=680cd12d-e9b5-4a2a-8abf-1e75a370", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/web/compare/23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98...1999d1303424879336b04fa3310256554aa6cfa6", - "previous_git_commit": "23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", - "previous_fingerprint": "3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:23d6f24@sha256:3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", + "diff_url": "https://github.com/cyber-dojo/saver/compare/92c0996cd9ae7642eb0769f928abe6cb6c391751...cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "previous_git_commit": "92c0996cd9ae7642eb0769f928abe6cb6c391751", + "previous_fingerprint": "1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:92c0996@sha256:1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/web/commit/23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", - "previous_trail_name": "23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", - "previous_template_reference_name": "web" + "previous_git_commit_url": "https://github.com/cyber-dojo/saver/commit/92c0996cd9ae7642eb0769f928abe6cb6c391751", + "previous_trail_name": "92c0996cd9ae7642eb0769f928abe6cb6c391751", + "previous_template_reference_name": "saver" }, - "commit_lead_time": 1241.0, + "commit_lead_time": 900.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "production-promotion", - "trail_name": "promote-all-13", - "template_reference_name": "web", + "trail_name": "promotion-one-46", + "template_reference_name": "saver", "git_commit": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f", "git_commit_info": { @@ -776,74 +914,74 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777361993.0, "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=a34a55d8-2118-49ac-8899-aa2b6306", + "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed?artifact_id=1e37acfd-223d-4121-887e-10e9f294", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/1085da6ce837c6ebc77dda1e23b5de4e3c33380f...1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "previous_git_commit": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "previous_fingerprint": "3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:23d6f24@sha256:3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", + "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa...1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "previous_git_commit": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", + "previous_fingerprint": "1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:92c0996@sha256:1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "previous_trail_name": "promote-all-12", - "previous_template_reference_name": "web" + "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", + "previous_trail_name": "promote-all-11", + "previous_template_reference_name": "saver" }, - "commit_lead_time": 480911.0, + "commit_lead_time": 796863.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", - "template_reference_name": "web", - "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "template_reference_name": "saver", + "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", "git_commit_info": { - "sha1": "117e18e0cb1eab30b9747ece58327eabfc595b90", - "message": "Add debug commands for kosli-fingerprint", + "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1777614935.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" + "timestamp": 1778157272.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=70de9485-fbcc-4d37-a744-546c44ba", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed?artifact_id=52503371-4731-4037-a24b-570704a1", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact", "deployment_diff": null, - "commit_lead_time": 227969.0, + "commit_lead_time": 1584.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", - "template_reference_name": "web", - "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "template_reference_name": "saver", + "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", "git_commit_info": { - "sha1": "117e18e0cb1eab30b9747ece58327eabfc595b90", - "message": "Add debug commands for kosli-fingerprint", + "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1777614935.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" + "timestamp": 1778157272.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=24f2f6c9-5fa2-4dbd-8bb5-fc5624f3", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed?artifact_id=041452ac-9c46-49f1-a43b-f828f8f4", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", "deployment_diff": null, - "commit_lead_time": 227969.0, + "commit_lead_time": 1584.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] } ], "ecs_context": { - "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/9560296ee7a54a18afe27e41c76be7c5", + "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/25db3e22b29149ed970c25bc4d772823", "cluster_name": null, "service_name": null } }, { - "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:a2ffba5@sha256:b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:db53382@sha256:f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "compliant": true, "deployments": [], "policy_decisions": [ @@ -865,8 +1003,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "runner-ci", - "trail_name": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", + "flow_name": "languages-start-points-ci", + "trail_name": "db53382650db8b7b3f216d0055009b0d77685677", "artifact_status": null } }, @@ -874,7 +1012,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-12", + "trail_name": "promotion-one-45", "artifact_status": null } }, @@ -882,7 +1020,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "runner-b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": null } }, @@ -890,7 +1028,31 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "runner-b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": null } } @@ -910,8 +1072,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "runner-ci", - "trail_name": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", + "flow_name": "languages-start-points-ci", + "trail_name": "db53382650db8b7b3f216d0055009b0d77685677", "artifact_status": "COMPLIANT" } }, @@ -919,7 +1081,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-12", + "trail_name": "promotion-one-45", "artifact_status": "COMPLIANT" } }, @@ -927,7 +1089,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "runner-b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": "COMPLIANT" } }, @@ -935,7 +1097,31 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "runner-b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": "COMPLIANT" } } @@ -959,8 +1145,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "runner-ci", - "trail_name": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", + "flow_name": "languages-start-points-ci", + "trail_name": "db53382650db8b7b3f216d0055009b0d77685677", "artifact_status": null } }, @@ -968,7 +1154,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-12", + "trail_name": "promotion-one-45", "artifact_status": null } }, @@ -976,7 +1162,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_satisfied", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "runner-b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": null } }, @@ -984,7 +1170,31 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "runner-b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": null } } @@ -1017,8 +1227,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "runner-ci", - "trail_name": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", + "flow_name": "languages-start-points-ci", + "trail_name": "db53382650db8b7b3f216d0055009b0d77685677", "artifact_status": null } }, @@ -1026,7 +1236,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-12", + "trail_name": "promotion-one-45", "artifact_status": null } }, @@ -1034,7 +1244,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "runner-b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": null } }, @@ -1042,7 +1252,31 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "runner-b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": null } } @@ -1068,8 +1302,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "runner-ci", - "trail_name": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", + "flow_name": "languages-start-points-ci", + "trail_name": "db53382650db8b7b3f216d0055009b0d77685677", "artifact_status": "COMPLIANT" } }, @@ -1077,7 +1311,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-12", + "trail_name": "promotion-one-45", "artifact_status": "COMPLIANT" } }, @@ -1085,7 +1319,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "runner-b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": "COMPLIANT" } }, @@ -1093,7 +1327,31 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "runner-b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": "COMPLIANT" } } @@ -1117,8 +1375,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "runner-ci", - "trail_name": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", + "flow_name": "languages-start-points-ci", + "trail_name": "db53382650db8b7b3f216d0055009b0d77685677", "artifact_status": null } }, @@ -1126,7 +1384,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-12", + "trail_name": "promotion-one-45", "artifact_status": null } }, @@ -1134,7 +1392,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "runner-b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": null } }, @@ -1142,7 +1400,31 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "runner-b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": null } } @@ -1153,71 +1435,69 @@ kosli get snapshot aws-prod --output=json } ], "reasons_for_incompliance": [], - "fingerprint": "b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "fingerprint": "f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "creationTimestamp": [ - 1777550805, - 1777550806, - 1777550809 + 1778081137 ], "pods": null, "annotation": { "type": "unchanged", - "was": 3, - "now": 3 + "was": 1, + "now": 1 }, - "flow_name": "runner-ci", - "git_commit": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", - "commit_url": "https://github.com/cyber-dojo/runner/commit/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", - "html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039?artifact_id=fe3ed5e5-0ed1-4cb8-8d5a-57d636d7", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci", + "flow_name": "languages-start-points-ci", + "git_commit": "db53382650db8b7b3f216d0055009b0d77685677", + "commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/db53382650db8b7b3f216d0055009b0d77685677", + "html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=cc5da9c3-89bd-4ac1-a5ed-8885517d", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/runner/compare/bcf912346ae0a104698da4560e82d5eb277fc0e9...a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", - "previous_git_commit": "bcf912346ae0a104698da4560e82d5eb277fc0e9", - "previous_fingerprint": "0ef17bb0750a014fffa6cc419feb5b69774db08f18a354a39b552a5b1e785f98", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:bcf9123@sha256:0ef17bb0750a014fffa6cc419feb5b69774db08f18a354a39b552a5b1e785f98", + "diff_url": "https://github.com/cyber-dojo/languages-start-points/compare/1a191ad636b6d1d2215e3726ad307f48f58843b6...db53382650db8b7b3f216d0055009b0d77685677", + "previous_git_commit": "1a191ad636b6d1d2215e3726ad307f48f58843b6", + "previous_fingerprint": "808640967968ed09d2719d88e77e77a617030e5335d408a077d98cfbbeb49cf4", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:1a191ad@sha256:808640967968ed09d2719d88e77e77a617030e5335d408a077d98cfbbeb49cf4", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/runner/commit/bcf912346ae0a104698da4560e82d5eb277fc0e9", - "previous_trail_name": "bcf912346ae0a104698da4560e82d5eb277fc0e9", - "previous_template_reference_name": "runner" + "previous_git_commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/1a191ad636b6d1d2215e3726ad307f48f58843b6", + "previous_trail_name": "1a191ad636b6d1d2215e3726ad307f48f58843b6", + "previous_template_reference_name": "languages-start-points" }, - "commit_lead_time": 3201.0, + "commit_lead_time": 846.0, "flows": [ { - "flow_name": "runner-ci", - "trail_name": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", - "template_reference_name": "runner", - "git_commit": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", - "commit_url": "https://github.com/cyber-dojo/runner/commit/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", + "flow_name": "languages-start-points-ci", + "trail_name": "db53382650db8b7b3f216d0055009b0d77685677", + "template_reference_name": "languages-start-points", + "git_commit": "db53382650db8b7b3f216d0055009b0d77685677", + "commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/db53382650db8b7b3f216d0055009b0d77685677", "git_commit_info": { - "sha1": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", - "message": "Merge pull request #227 from cyber-dojo/update-base-image-5412310\n\nMerge update-base-image into main", + "sha1": "db53382650db8b7b3f216d0055009b0d77685677", + "message": "Merge pull request #206 from cyber-dojo/update-csharp-nunit2\n\nUpdate csharp-nunit", "author": "Jon Jagger ", "branch": "main", - "timestamp": 1777547604.0, - "url": "https://github.com/cyber-dojo/runner/commit/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e" + "timestamp": 1778080291.0, + "url": "https://github.com/cyber-dojo/languages-start-points/commit/db53382650db8b7b3f216d0055009b0d77685677" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039?artifact_id=fe3ed5e5-0ed1-4cb8-8d5a-57d636d7", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci", + "html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=cc5da9c3-89bd-4ac1-a5ed-8885517d", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/runner/compare/bcf912346ae0a104698da4560e82d5eb277fc0e9...a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", - "previous_git_commit": "bcf912346ae0a104698da4560e82d5eb277fc0e9", - "previous_fingerprint": "0ef17bb0750a014fffa6cc419feb5b69774db08f18a354a39b552a5b1e785f98", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:bcf9123@sha256:0ef17bb0750a014fffa6cc419feb5b69774db08f18a354a39b552a5b1e785f98", + "diff_url": "https://github.com/cyber-dojo/languages-start-points/compare/1a191ad636b6d1d2215e3726ad307f48f58843b6...db53382650db8b7b3f216d0055009b0d77685677", + "previous_git_commit": "1a191ad636b6d1d2215e3726ad307f48f58843b6", + "previous_fingerprint": "808640967968ed09d2719d88e77e77a617030e5335d408a077d98cfbbeb49cf4", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:1a191ad@sha256:808640967968ed09d2719d88e77e77a617030e5335d408a077d98cfbbeb49cf4", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/runner/commit/bcf912346ae0a104698da4560e82d5eb277fc0e9", - "previous_trail_name": "bcf912346ae0a104698da4560e82d5eb277fc0e9", - "previous_template_reference_name": "runner" + "previous_git_commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/1a191ad636b6d1d2215e3726ad307f48f58843b6", + "previous_trail_name": "1a191ad636b6d1d2215e3726ad307f48f58843b6", + "previous_template_reference_name": "languages-start-points" }, - "commit_lead_time": 3201.0, + "commit_lead_time": 846.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "production-promotion", - "trail_name": "promote-all-12", - "template_reference_name": "runner", + "trail_name": "promotion-one-45", + "template_reference_name": "languages-start-points", "git_commit": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f", "git_commit_info": { @@ -1228,27 +1508,27 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777361993.0, "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039?artifact_id=a28dcf25-ff8e-40f5-8adc-c24b10ef", + "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=88d4f5e5-448f-4b7c-b8a6-e21c5cfc", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/1a3f516ca3da64bb329c5447dddc8c58751ec82b...1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "previous_git_commit": "1a3f516ca3da64bb329c5447dddc8c58751ec82b", - "previous_fingerprint": "0ef17bb0750a014fffa6cc419feb5b69774db08f18a354a39b552a5b1e785f98", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:bcf9123@sha256:0ef17bb0750a014fffa6cc419feb5b69774db08f18a354a39b552a5b1e785f98", + "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/1085da6ce837c6ebc77dda1e23b5de4e3c33380f...1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "previous_git_commit": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "previous_fingerprint": "808640967968ed09d2719d88e77e77a617030e5335d408a077d98cfbbeb49cf4", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:1a191ad@sha256:808640967968ed09d2719d88e77e77a617030e5335d408a077d98cfbbeb49cf4", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1a3f516ca3da64bb329c5447dddc8c58751ec82b", - "previous_trail_name": "promotion-one-42", - "previous_template_reference_name": "runner" + "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "previous_trail_name": "promotion-one-44", + "previous_template_reference_name": "languages-start-points" }, - "commit_lead_time": 188812.0, + "commit_lead_time": 719144.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "runner-b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", - "template_reference_name": "runner", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "template_reference_name": "languages-start-points", "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", "git_commit_info": { @@ -1259,17 +1539,17 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039?artifact_id=437eec67-3d3d-422a-956e-937f5ca0", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=7037421b-6bc3-4370-86e5-34d83a36", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod", "deployment_diff": null, - "commit_lead_time": -64130.0, + "commit_lead_time": 466202.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "runner-b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", - "template_reference_name": "runner", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "template_reference_name": "languages-start-points", "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", "git_commit_info": { @@ -1280,32 +1560,85 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039?artifact_id=5f006806-103b-467f-9cf2-610c41ba", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=d58e2fcc-a224-47de-8c1b-4fc7bdbb", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta", - "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/snyk-scanning/compare/7e307436bf47f2ce550e8e86838f4993b385de5c...117e18e0cb1eab30b9747ece58327eabfc595b90", - "previous_git_commit": "7e307436bf47f2ce550e8e86838f4993b385de5c", - "previous_fingerprint": "0ef17bb0750a014fffa6cc419feb5b69774db08f18a354a39b552a5b1e785f98", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:bcf9123@sha256:0ef17bb0750a014fffa6cc419feb5b69774db08f18a354a39b552a5b1e785f98", - "previous_artifact_compliance_state": "COMPLIANT", - "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/7e307436bf47f2ce550e8e86838f4993b385de5c", - "previous_trail_name": "runner-0ef17bb0750a014fffa6cc419feb5b69774db08f18a354a39b552a5b1e785f98", - "previous_template_reference_name": "runner" + "deployment_diff": null, + "commit_lead_time": 466202.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "template_reference_name": "languages-start-points", + "git_commit": "e50b0406a64efc36fb236afd464e75b31877f623", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623", + "git_commit_info": { + "sha1": "e50b0406a64efc36fb236afd464e75b31877f623", + "message": "Split snyk Kosli flows to separate per-vuln and per-artifact trails\n\nsnyk-vulns-{env} mixed two trail naming patterns: {repo}-{severity}-{CVE}\nfor individual vulnerabilities, and {repo}-{fingerprint} for aggregate\nartifact scan results. snyk-{env}-per-vuln and snyk-{env}-per-artifact\nmake each flow's purpose explicit and the Kosli UI easier to navigate.\n\nAlso removes temporary debug logging from the fingerprint step.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778153406.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=ebdd640f-262f-44d5-ac49-0c708fe2", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285", + "deployment_diff": null, + "commit_lead_time": -72269.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "template_reference_name": "languages-start-points", + "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "git_commit_info": { + "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778157272.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=349919c1-8fe5-483f-977a-262ab1e3", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", + "deployment_diff": null, + "commit_lead_time": -76135.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "template_reference_name": "languages-start-points", + "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "git_commit_info": { + "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778157272.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" }, - "commit_lead_time": -64130.0, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=c0634b8e-3c3b-4e98-9801-5cb5f83e", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact", + "deployment_diff": null, + "commit_lead_time": -76135.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] } ], "ecs_context": { - "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/bb5a7256bb4445b9821ff8e6e3cf0a86", + "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/4c27d625895a4234a4e8a819817e4289", "cluster_name": null, "service_name": null } }, { - "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:a6ece2b@sha256:3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:1999d13@sha256:541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "compliant": true, "deployments": [], "policy_decisions": [ @@ -1327,8 +1660,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "dashboard-ci", - "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", + "flow_name": "web-ci", + "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", "artifact_status": null } }, @@ -1336,7 +1669,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-11", + "trail_name": "promote-all-13", "artifact_status": null } }, @@ -1344,7 +1677,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": null } }, @@ -1352,7 +1685,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": null } } @@ -1372,8 +1713,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "dashboard-ci", - "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", + "flow_name": "web-ci", + "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", "artifact_status": "COMPLIANT" } }, @@ -1381,7 +1722,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-11", + "trail_name": "promote-all-13", "artifact_status": "COMPLIANT" } }, @@ -1389,7 +1730,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": "COMPLIANT" } }, @@ -1397,7 +1738,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": "COMPLIANT" } } @@ -1421,8 +1770,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "dashboard-ci", - "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", + "flow_name": "web-ci", + "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", "artifact_status": null } }, @@ -1430,7 +1779,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-11", + "trail_name": "promote-all-13", "artifact_status": null } }, @@ -1438,7 +1787,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": null } }, @@ -1446,7 +1795,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_satisfied", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": null } } @@ -1479,8 +1836,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "dashboard-ci", - "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", + "flow_name": "web-ci", + "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", "artifact_status": null } }, @@ -1488,7 +1845,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-11", + "trail_name": "promote-all-13", "artifact_status": null } }, @@ -1496,7 +1853,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": null } }, @@ -1504,7 +1861,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": null } } @@ -1530,8 +1895,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "dashboard-ci", - "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", + "flow_name": "web-ci", + "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", "artifact_status": "COMPLIANT" } }, @@ -1539,7 +1904,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-11", + "trail_name": "promote-all-13", "artifact_status": "COMPLIANT" } }, @@ -1547,7 +1912,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": "COMPLIANT" } }, @@ -1555,7 +1920,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": "COMPLIANT" } } @@ -1579,8 +1952,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "dashboard-ci", - "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", + "flow_name": "web-ci", + "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", "artifact_status": null } }, @@ -1588,7 +1961,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-11", + "trail_name": "promote-all-13", "artifact_status": null } }, @@ -1596,7 +1969,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": null } }, @@ -1604,7 +1977,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": null } } @@ -1615,100 +1996,102 @@ kosli get snapshot aws-prod --output=json } ], "reasons_for_incompliance": [], - "fingerprint": "3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "fingerprint": "541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "creationTimestamp": [ - 1776923862 + 1777842904, + 1777842905, + 1777842905 ], "pods": null, "annotation": { "type": "unchanged", - "was": 1, - "now": 1 + "was": 3, + "now": 3 }, - "flow_name": "dashboard-ci", - "git_commit": "a6ece2b597888f7ab149759daadda08e3afab0c1", - "commit_url": "https://github.com/cyber-dojo/dashboard/commit/a6ece2b597888f7ab149759daadda08e3afab0c1", - "html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=1281066d-38ba-432c-92c2-f3d7003e", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci", + "flow_name": "web-ci", + "git_commit": "1999d1303424879336b04fa3310256554aa6cfa6", + "commit_url": "https://github.com/cyber-dojo/web/commit/1999d1303424879336b04fa3310256554aa6cfa6", + "html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=359b4539-989d-48f5-88eb-8a553baf", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/dashboard/compare/632127a7f162ad1ac02305a2940888264034364b...a6ece2b597888f7ab149759daadda08e3afab0c1", - "previous_git_commit": "632127a7f162ad1ac02305a2940888264034364b", - "previous_fingerprint": "a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:632127a@sha256:a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", + "diff_url": "https://github.com/cyber-dojo/web/compare/23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98...1999d1303424879336b04fa3310256554aa6cfa6", + "previous_git_commit": "23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", + "previous_fingerprint": "3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:23d6f24@sha256:3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/dashboard/commit/632127a7f162ad1ac02305a2940888264034364b", - "previous_trail_name": "632127a7f162ad1ac02305a2940888264034364b", - "previous_template_reference_name": "dashboard" + "previous_git_commit_url": "https://github.com/cyber-dojo/web/commit/23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", + "previous_trail_name": "23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", + "previous_template_reference_name": "web" }, - "commit_lead_time": 2577.0, + "commit_lead_time": 1241.0, "flows": [ { - "flow_name": "dashboard-ci", - "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", - "template_reference_name": "dashboard", - "git_commit": "a6ece2b597888f7ab149759daadda08e3afab0c1", - "commit_url": "https://github.com/cyber-dojo/dashboard/commit/a6ece2b597888f7ab149759daadda08e3afab0c1", + "flow_name": "web-ci", + "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", + "template_reference_name": "web", + "git_commit": "1999d1303424879336b04fa3310256554aa6cfa6", + "commit_url": "https://github.com/cyber-dojo/web/commit/1999d1303424879336b04fa3310256554aa6cfa6", "git_commit_info": { - "sha1": "a6ece2b597888f7ab149759daadda08e3afab0c1", - "message": "Remove defaulted aws-rolename from snyk-scanning job (#363)", + "sha1": "1999d1303424879336b04fa3310256554aa6cfa6", + "message": "Enable CSRF token enforcement on POST requests (Phase 2) (#306)\n\nPhase 1 (deployed April 14) set the csrf_token cookie on all responses.\nPhase 2 enables the enforcement check that was left commented out pending\nall users reloading. Adds a global jQuery ajaxSend hook so all POST\nrequests automatically include the token, and updates the controller test\nbase to seed the cookie and merge the token into POST params.\n\nUsers with a kata page open before this deploy will get one 403 on their\nnext test run; reloading the page picks up the new JS and self-heals.\n\nCo-authored-by: Claude Sonnet 4.6 ", "author": "Jon Jagger ", "branch": "main", - "timestamp": 1776921285.0, - "url": "https://github.com/cyber-dojo/dashboard/commit/a6ece2b597888f7ab149759daadda08e3afab0c1" + "timestamp": 1777841663.0, + "url": "https://github.com/cyber-dojo/web/commit/1999d1303424879336b04fa3310256554aa6cfa6" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=1281066d-38ba-432c-92c2-f3d7003e", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci", + "html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=359b4539-989d-48f5-88eb-8a553baf", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/dashboard/compare/632127a7f162ad1ac02305a2940888264034364b...a6ece2b597888f7ab149759daadda08e3afab0c1", - "previous_git_commit": "632127a7f162ad1ac02305a2940888264034364b", - "previous_fingerprint": "a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:632127a@sha256:a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", + "diff_url": "https://github.com/cyber-dojo/web/compare/23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98...1999d1303424879336b04fa3310256554aa6cfa6", + "previous_git_commit": "23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", + "previous_fingerprint": "3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:23d6f24@sha256:3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/dashboard/commit/632127a7f162ad1ac02305a2940888264034364b", - "previous_trail_name": "632127a7f162ad1ac02305a2940888264034364b", - "previous_template_reference_name": "dashboard" + "previous_git_commit_url": "https://github.com/cyber-dojo/web/commit/23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", + "previous_trail_name": "23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", + "previous_template_reference_name": "web" }, - "commit_lead_time": 2577.0, + "commit_lead_time": 1241.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "production-promotion", - "trail_name": "promote-all-11", - "template_reference_name": "dashboard", - "git_commit": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", + "trail_name": "promote-all-13", + "template_reference_name": "web", + "git_commit": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f", "git_commit_info": { - "sha1": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "message": "Revert WEB_SECRET_KEY_BASE changes - SECRET_KEY_BASE now fetched from AWS SSM in web's Terraform\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "message": "Add Snyk scan to promote-all, scoped to aws-prod compliance only\n\nMirrors the change made to promote-one: inserts a snyk-scan job\n(before sdlc-control-gate) that scans each artifact against the\naws-prod environment policy. Removes KOSLI_AWS_BETA env var and\nthe aws-beta assert and attest steps.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1776099255.0, - "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa" + "timestamp": 1777361993.0, + "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=2acc6089-d810-49af-a10f-ff262a82", + "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=a34a55d8-2118-49ac-8899-aa2b6306", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa...87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "previous_git_commit": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "previous_fingerprint": "a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:632127a@sha256:a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", + "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/1085da6ce837c6ebc77dda1e23b5de4e3c33380f...1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "previous_git_commit": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "previous_fingerprint": "3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:23d6f24@sha256:3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "previous_trail_name": "promote-all-10", - "previous_template_reference_name": "dashboard" + "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "previous_trail_name": "promote-all-12", + "previous_template_reference_name": "web" }, - "commit_lead_time": 824607.0, + "commit_lead_time": 480911.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "template_reference_name": "dashboard", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "template_reference_name": "web", "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", "git_commit_info": { @@ -1719,17 +2102,17 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=b2e65a6a-5b36-46a7-a91a-5c509bd5", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=70de9485-fbcc-4d37-a744-546c44ba", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta", "deployment_diff": null, - "commit_lead_time": -691073.0, + "commit_lead_time": 227969.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "template_reference_name": "dashboard", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "template_reference_name": "web", "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", "git_commit_info": { @@ -1740,22 +2123,43 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=583e204e-a961-470e-a45e-d894bff1", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=d6d28b90-e930-4451-bb36-13e65471", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod", "deployment_diff": null, - "commit_lead_time": -691073.0, + "commit_lead_time": 227969.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "template_reference_name": "web", + "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "git_commit_info": { + "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778157272.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=35faecec-2fd2-4bf2-a035-0bf6ec0b", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", + "deployment_diff": null, + "commit_lead_time": -314368.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] } ], "ecs_context": { - "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/0993e7a4118e4a7699ad6eb9c06a4b47", + "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/9560296ee7a54a18afe27e41c76be7c5", "cluster_name": null, "service_name": null } }, { - "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:92c0996@sha256:1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:a6ece2b@sha256:3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "compliant": true, "deployments": [], "policy_decisions": [ @@ -1777,8 +2181,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "saver-ci", - "trail_name": "92c0996cd9ae7642eb0769f928abe6cb6c391751", + "flow_name": "dashboard-ci", + "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", "artifact_status": null } }, @@ -1790,19 +2194,43 @@ kosli get snapshot aws-prod --output=json "artifact_status": null } }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "artifact_status": null + } + }, { "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "saver-1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "saver-1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } } @@ -1822,8 +2250,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "saver-ci", - "trail_name": "92c0996cd9ae7642eb0769f928abe6cb6c391751", + "flow_name": "dashboard-ci", + "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", "artifact_status": "COMPLIANT" } }, @@ -1835,19 +2263,43 @@ kosli get snapshot aws-prod --output=json "artifact_status": "COMPLIANT" } }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "artifact_status": "COMPLIANT" + } + }, { "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "saver-1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "saver-1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": "COMPLIANT" } } @@ -1871,8 +2323,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "saver-ci", - "trail_name": "92c0996cd9ae7642eb0769f928abe6cb6c391751", + "flow_name": "dashboard-ci", + "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", "artifact_status": null } }, @@ -1884,24 +2336,48 @@ kosli get snapshot aws-prod --output=json "artifact_status": null } }, + { + "type": "rule_satisfied", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "artifact_status": null + } + }, { "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "saver-1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } }, { - "type": "rule_satisfied", + "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "saver-1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } - } - ] - } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "artifact_status": null + } + } + ] + } ], "policy_name": "snyk-scan-aws-prod" }, @@ -1929,8 +2405,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "saver-ci", - "trail_name": "92c0996cd9ae7642eb0769f928abe6cb6c391751", + "flow_name": "dashboard-ci", + "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", "artifact_status": null } }, @@ -1942,19 +2418,43 @@ kosli get snapshot aws-prod --output=json "artifact_status": null } }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "artifact_status": null + } + }, { "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "saver-1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "saver-1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } } @@ -1980,8 +2480,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "saver-ci", - "trail_name": "92c0996cd9ae7642eb0769f928abe6cb6c391751", + "flow_name": "dashboard-ci", + "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", "artifact_status": "COMPLIANT" } }, @@ -1993,19 +2493,43 @@ kosli get snapshot aws-prod --output=json "artifact_status": "COMPLIANT" } }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "artifact_status": "COMPLIANT" + } + }, { "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "saver-1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "saver-1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": "COMPLIANT" } } @@ -2029,8 +2553,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "saver-ci", - "trail_name": "92c0996cd9ae7642eb0769f928abe6cb6c391751", + "flow_name": "dashboard-ci", + "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", "artifact_status": null } }, @@ -2042,19 +2566,43 @@ kosli get snapshot aws-prod --output=json "artifact_status": null } }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "artifact_status": null + } + }, { "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "saver-1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "saver-1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } } @@ -2065,9 +2613,9 @@ kosli get snapshot aws-prod --output=json } ], "reasons_for_incompliance": [], - "fingerprint": "1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "fingerprint": "3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "creationTimestamp": [ - 1776923549 + 1776923862 ], "pods": null, "annotation": { @@ -2075,59 +2623,59 @@ kosli get snapshot aws-prod --output=json "was": 1, "now": 1 }, - "flow_name": "saver-ci", - "git_commit": "92c0996cd9ae7642eb0769f928abe6cb6c391751", - "commit_url": "https://github.com/cyber-dojo/saver/commit/92c0996cd9ae7642eb0769f928abe6cb6c391751", - "html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805?artifact_id=3666aa1b-a19b-4ab5-a625-fa6afa9d", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci", + "flow_name": "dashboard-ci", + "git_commit": "a6ece2b597888f7ab149759daadda08e3afab0c1", + "commit_url": "https://github.com/cyber-dojo/dashboard/commit/a6ece2b597888f7ab149759daadda08e3afab0c1", + "html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=1281066d-38ba-432c-92c2-f3d7003e", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/saver/compare/0b77a6402320cd10c30cf5bbf6486aa1a448443a...92c0996cd9ae7642eb0769f928abe6cb6c391751", - "previous_git_commit": "0b77a6402320cd10c30cf5bbf6486aa1a448443a", - "previous_fingerprint": "5b067d99f617888d66b2656537e442d41ab32367758392fb1e55c88f2e1dce7f", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:0b77a64@sha256:5b067d99f617888d66b2656537e442d41ab32367758392fb1e55c88f2e1dce7f", + "diff_url": "https://github.com/cyber-dojo/dashboard/compare/632127a7f162ad1ac02305a2940888264034364b...a6ece2b597888f7ab149759daadda08e3afab0c1", + "previous_git_commit": "632127a7f162ad1ac02305a2940888264034364b", + "previous_fingerprint": "a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:632127a@sha256:a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/saver/commit/0b77a6402320cd10c30cf5bbf6486aa1a448443a", - "previous_trail_name": "0b77a6402320cd10c30cf5bbf6486aa1a448443a", - "previous_template_reference_name": "saver" + "previous_git_commit_url": "https://github.com/cyber-dojo/dashboard/commit/632127a7f162ad1ac02305a2940888264034364b", + "previous_trail_name": "632127a7f162ad1ac02305a2940888264034364b", + "previous_template_reference_name": "dashboard" }, - "commit_lead_time": 2075.0, + "commit_lead_time": 2577.0, "flows": [ { - "flow_name": "saver-ci", - "trail_name": "92c0996cd9ae7642eb0769f928abe6cb6c391751", - "template_reference_name": "saver", - "git_commit": "92c0996cd9ae7642eb0769f928abe6cb6c391751", - "commit_url": "https://github.com/cyber-dojo/saver/commit/92c0996cd9ae7642eb0769f928abe6cb6c391751", + "flow_name": "dashboard-ci", + "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", + "template_reference_name": "dashboard", + "git_commit": "a6ece2b597888f7ab149759daadda08e3afab0c1", + "commit_url": "https://github.com/cyber-dojo/dashboard/commit/a6ece2b597888f7ab149759daadda08e3afab0c1", "git_commit_info": { - "sha1": "92c0996cd9ae7642eb0769f928abe6cb6c391751", - "message": "Remove defaulted aws-rolename from snyk-scanning job (#364)", + "sha1": "a6ece2b597888f7ab149759daadda08e3afab0c1", + "message": "Remove defaulted aws-rolename from snyk-scanning job (#363)", "author": "Jon Jagger ", "branch": "main", - "timestamp": 1776921474.0, - "url": "https://github.com/cyber-dojo/saver/commit/92c0996cd9ae7642eb0769f928abe6cb6c391751" + "timestamp": 1776921285.0, + "url": "https://github.com/cyber-dojo/dashboard/commit/a6ece2b597888f7ab149759daadda08e3afab0c1" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805?artifact_id=3666aa1b-a19b-4ab5-a625-fa6afa9d", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci", + "html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=1281066d-38ba-432c-92c2-f3d7003e", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/saver/compare/0b77a6402320cd10c30cf5bbf6486aa1a448443a...92c0996cd9ae7642eb0769f928abe6cb6c391751", - "previous_git_commit": "0b77a6402320cd10c30cf5bbf6486aa1a448443a", - "previous_fingerprint": "5b067d99f617888d66b2656537e442d41ab32367758392fb1e55c88f2e1dce7f", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:0b77a64@sha256:5b067d99f617888d66b2656537e442d41ab32367758392fb1e55c88f2e1dce7f", + "diff_url": "https://github.com/cyber-dojo/dashboard/compare/632127a7f162ad1ac02305a2940888264034364b...a6ece2b597888f7ab149759daadda08e3afab0c1", + "previous_git_commit": "632127a7f162ad1ac02305a2940888264034364b", + "previous_fingerprint": "a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:632127a@sha256:a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/saver/commit/0b77a6402320cd10c30cf5bbf6486aa1a448443a", - "previous_trail_name": "0b77a6402320cd10c30cf5bbf6486aa1a448443a", - "previous_template_reference_name": "saver" + "previous_git_commit_url": "https://github.com/cyber-dojo/dashboard/commit/632127a7f162ad1ac02305a2940888264034364b", + "previous_trail_name": "632127a7f162ad1ac02305a2940888264034364b", + "previous_template_reference_name": "dashboard" }, - "commit_lead_time": 2075.0, + "commit_lead_time": 2577.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "production-promotion", "trail_name": "promote-all-11", - "template_reference_name": "saver", + "template_reference_name": "dashboard", "git_commit": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", "git_commit_info": { @@ -2138,27 +2686,27 @@ kosli get snapshot aws-prod --output=json "timestamp": 1776099255.0, "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805?artifact_id=572576fd-b54a-4556-b8c6-a456fc62", + "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=2acc6089-d810-49af-a10f-ff262a82", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion", "deployment_diff": { "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa...87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", "previous_git_commit": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "previous_fingerprint": "5b067d99f617888d66b2656537e442d41ab32367758392fb1e55c88f2e1dce7f", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:0b77a64@sha256:5b067d99f617888d66b2656537e442d41ab32367758392fb1e55c88f2e1dce7f", + "previous_fingerprint": "a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:632127a@sha256:a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", "previous_trail_name": "promote-all-10", - "previous_template_reference_name": "saver" + "previous_template_reference_name": "dashboard" }, - "commit_lead_time": 824294.0, + "commit_lead_time": 824607.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "saver-1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", - "template_reference_name": "saver", + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "template_reference_name": "dashboard", "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", "git_commit_info": { @@ -2169,17 +2717,17 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805?artifact_id=feccccc8-41ef-4146-8bfc-b1f1725a", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=5be0f361-8a6d-4e2d-a7d7-d07cf99d", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod", "deployment_diff": null, - "commit_lead_time": -691386.0, + "commit_lead_time": -691073.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "saver-1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", - "template_reference_name": "saver", + "flow_name": "snyk-vulns-aws-beta", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "template_reference_name": "dashboard", "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", "git_commit_info": { @@ -2190,16 +2738,79 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805?artifact_id=bceeead3-4d64-4697-8fb0-a84fbce7", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=7bf8e775-a41e-4128-bcab-cf0a3461", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta", + "deployment_diff": null, + "commit_lead_time": -691073.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "template_reference_name": "dashboard", + "git_commit": "e50b0406a64efc36fb236afd464e75b31877f623", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623", + "git_commit_info": { + "sha1": "e50b0406a64efc36fb236afd464e75b31877f623", + "message": "Split snyk Kosli flows to separate per-vuln and per-artifact trails\n\nsnyk-vulns-{env} mixed two trail naming patterns: {repo}-{severity}-{CVE}\nfor individual vulnerabilities, and {repo}-{fingerprint} for aggregate\nartifact scan results. snyk-{env}-per-vuln and snyk-{env}-per-artifact\nmake each flow's purpose explicit and the Kosli UI easier to navigate.\n\nAlso removes temporary debug logging from the fingerprint step.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778153406.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=87660fcc-9088-4b68-ad78-e3d873aa", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285", + "deployment_diff": null, + "commit_lead_time": -1229544.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "template_reference_name": "dashboard", + "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "git_commit_info": { + "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778157272.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=6aee29f9-6c2b-42e1-adf9-7d653c5c", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", + "deployment_diff": null, + "commit_lead_time": -1233410.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "template_reference_name": "dashboard", + "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "git_commit_info": { + "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778157272.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=a2573f86-5213-4b58-8089-66c26d49", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact", "deployment_diff": null, - "commit_lead_time": -691386.0, + "commit_lead_time": -1233410.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] } ], "ecs_context": { - "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/9e8d3a77fae14af1b3f5fd22dc8185cf", + "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/0993e7a4118e4a7699ad6eb9c06a4b47", "cluster_name": null, "service_name": null } @@ -2255,6 +2866,30 @@ kosli get snapshot aws-prod --output=json "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "artifact_status": null + } } ] }, @@ -2300,6 +2935,30 @@ kosli get snapshot aws-prod --output=json "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": "COMPLIANT" } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "artifact_status": "COMPLIANT" + } } ] }, @@ -2349,20 +3008,44 @@ kosli get snapshot aws-prod --output=json "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } - } - ] - } - ], - "policy_name": "snyk-scan-aws-prod" - }, - { - "policy_version": 6, - "status": "COMPLIANT", - "rule_evaluations": [ - { - "rule": { - "type": "provenance", - "definition": { + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "artifact_status": null + } + } + ] + } + ], + "policy_name": "snyk-scan-aws-prod" + }, + { + "policy_version": 6, + "status": "COMPLIANT", + "rule_evaluations": [ + { + "rule": { + "type": "provenance", + "definition": { "required": true, "exceptions": [ { @@ -2407,6 +3090,30 @@ kosli get snapshot aws-prod --output=json "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "artifact_status": null + } } ] }, @@ -2458,6 +3165,30 @@ kosli get snapshot aws-prod --output=json "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": "COMPLIANT" } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "artifact_status": "COMPLIANT" + } } ] }, @@ -2507,6 +3238,30 @@ kosli get snapshot aws-prod --output=json "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "artifact_status": null + } } ] } @@ -2619,7 +3374,7 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=3332a11e-91c5-44c9-8daf-c7a67940", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=c6ec6ca6-9900-445e-8986-76bc3e3d", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod", "deployment_diff": null, "commit_lead_time": -691396.0, @@ -2640,12 +3395,75 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=8f0f7459-c270-49fd-8642-58e07238", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=fe2b6149-935b-4098-aafe-1afabea3", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta", "deployment_diff": null, "commit_lead_time": -691396.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "template_reference_name": "custom-start-points", + "git_commit": "e50b0406a64efc36fb236afd464e75b31877f623", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623", + "git_commit_info": { + "sha1": "e50b0406a64efc36fb236afd464e75b31877f623", + "message": "Split snyk Kosli flows to separate per-vuln and per-artifact trails\n\nsnyk-vulns-{env} mixed two trail naming patterns: {repo}-{severity}-{CVE}\nfor individual vulnerabilities, and {repo}-{fingerprint} for aggregate\nartifact scan results. snyk-{env}-per-vuln and snyk-{env}-per-artifact\nmake each flow's purpose explicit and the Kosli UI easier to navigate.\n\nAlso removes temporary debug logging from the fingerprint step.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778153406.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=95af50be-66db-486f-8278-24a0ead0", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285", + "deployment_diff": null, + "commit_lead_time": -1229867.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "template_reference_name": "custom-start-points", + "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "git_commit_info": { + "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778157272.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=abac846b-b57f-437a-9b4c-b8043f6a", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", + "deployment_diff": null, + "commit_lead_time": -1233733.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "template_reference_name": "custom-start-points", + "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "git_commit_info": { + "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778157272.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=555f5b77-e649-40e0-b7ea-314632f8", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact", + "deployment_diff": null, + "commit_lead_time": -1233733.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] } ], "ecs_context": { @@ -2690,6 +3508,14 @@ kosli get snapshot aws-prod --output=json "artifact_status": null } }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": null + } + }, { "type": "rule_not_applicable", "context": { @@ -2701,7 +3527,23 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": null } @@ -2735,6 +3577,14 @@ kosli get snapshot aws-prod --output=json "artifact_status": "COMPLIANT" } }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": "COMPLIANT" + } + }, { "type": "rule_not_applicable", "context": { @@ -2746,7 +3596,23 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": "COMPLIANT" } @@ -2784,6 +3650,14 @@ kosli get snapshot aws-prod --output=json "artifact_status": null } }, + { + "type": "rule_satisfied", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": null + } + }, { "type": "rule_not_applicable", "context": { @@ -2793,9 +3667,25 @@ kosli get snapshot aws-prod --output=json } }, { - "type": "rule_satisfied", + "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": null } @@ -2842,6 +3732,14 @@ kosli get snapshot aws-prod --output=json "artifact_status": null } }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": null + } + }, { "type": "rule_not_applicable", "context": { @@ -2853,7 +3751,23 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": null } @@ -2893,6 +3807,14 @@ kosli get snapshot aws-prod --output=json "artifact_status": "COMPLIANT" } }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": "COMPLIANT" + } + }, { "type": "rule_not_applicable", "context": { @@ -2904,7 +3826,23 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": "COMPLIANT" } @@ -2945,7 +3883,7 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-beta", + "flow_name": "snyk-vulns-aws-prod", "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": null } @@ -2953,14 +3891,38 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", + "flow_name": "snyk-vulns-aws-beta", "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": null } - } - ] - } - ], + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": null + } + } + ] + } + ], "policy_name": "build-process" } ], @@ -3056,7 +4018,7 @@ kosli get snapshot aws-prod --output=json "flow_reasons_for_non_compliance": [] }, { - "flow_name": "snyk-vulns-aws-beta", + "flow_name": "snyk-vulns-aws-prod", "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "template_reference_name": "differ", "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", @@ -3069,15 +4031,15 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=182c9255-9d29-4ad5-9c5c-d5d99a71", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=4eefbc15-7ea4-4d60-87d8-3a6098cb", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod", "deployment_diff": null, "commit_lead_time": -691722.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { - "flow_name": "snyk-vulns-aws-prod", + "flow_name": "snyk-vulns-aws-beta", "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "template_reference_name": "differ", "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", @@ -3090,12 +4052,75 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=69fce703-8636-4932-9b82-3025560b", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=f295a00f-04cf-4c92-96d2-44181c6a", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta", "deployment_diff": null, "commit_lead_time": -691722.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "template_reference_name": "differ", + "git_commit": "e50b0406a64efc36fb236afd464e75b31877f623", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623", + "git_commit_info": { + "sha1": "e50b0406a64efc36fb236afd464e75b31877f623", + "message": "Split snyk Kosli flows to separate per-vuln and per-artifact trails\n\nsnyk-vulns-{env} mixed two trail naming patterns: {repo}-{severity}-{CVE}\nfor individual vulnerabilities, and {repo}-{fingerprint} for aggregate\nartifact scan results. snyk-{env}-per-vuln and snyk-{env}-per-artifact\nmake each flow's purpose explicit and the Kosli UI easier to navigate.\n\nAlso removes temporary debug logging from the fingerprint step.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778153406.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=274a4692-c2f3-48eb-b9d9-6cbbedad", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285", + "deployment_diff": null, + "commit_lead_time": -1230193.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "template_reference_name": "differ", + "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "git_commit_info": { + "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778157272.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=833275ac-5fdb-4889-8661-f123e80d", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact", + "deployment_diff": null, + "commit_lead_time": -1234059.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "template_reference_name": "differ", + "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "git_commit_info": { + "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778157272.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=4d14c904-5640-40e7-adda-e90901f9", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", + "deployment_diff": null, + "commit_lead_time": -1234059.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] } ], "ecs_context": { @@ -3155,6 +4180,30 @@ kosli get snapshot aws-prod --output=json "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", "artifact_status": null } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "artifact_status": null + } } ] }, @@ -3200,6 +4249,30 @@ kosli get snapshot aws-prod --output=json "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", "artifact_status": "COMPLIANT" } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "artifact_status": "COMPLIANT" + } } ] }, @@ -3249,6 +4322,30 @@ kosli get snapshot aws-prod --output=json "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", "artifact_status": null } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "artifact_status": null + } } ] } @@ -3307,6 +4404,30 @@ kosli get snapshot aws-prod --output=json "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", "artifact_status": null } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "artifact_status": null + } } ] }, @@ -3358,6 +4479,30 @@ kosli get snapshot aws-prod --output=json "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", "artifact_status": "COMPLIANT" } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "artifact_status": "COMPLIANT" + } } ] }, @@ -3407,6 +4552,30 @@ kosli get snapshot aws-prod --output=json "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", "artifact_status": null } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "artifact_status": null + } } ] } @@ -3519,7 +4688,7 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac?artifact_id=6e528299-ee26-4cef-8108-84ebc9a2", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac?artifact_id=df1b23f7-316f-4d2a-90c1-4ad1b943", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta", "deployment_diff": null, "commit_lead_time": -691727.0, @@ -3540,12 +4709,75 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac?artifact_id=63f17762-9384-450d-b001-78aaa94d", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac?artifact_id=9a1e839e-8a7f-4dbc-abd1-5fe36251", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod", "deployment_diff": null, "commit_lead_time": -691727.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "template_reference_name": "exercises-start-points", + "git_commit": "e50b0406a64efc36fb236afd464e75b31877f623", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623", + "git_commit_info": { + "sha1": "e50b0406a64efc36fb236afd464e75b31877f623", + "message": "Split snyk Kosli flows to separate per-vuln and per-artifact trails\n\nsnyk-vulns-{env} mixed two trail naming patterns: {repo}-{severity}-{CVE}\nfor individual vulnerabilities, and {repo}-{fingerprint} for aggregate\nartifact scan results. snyk-{env}-per-vuln and snyk-{env}-per-artifact\nmake each flow's purpose explicit and the Kosli UI easier to navigate.\n\nAlso removes temporary debug logging from the fingerprint step.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778153406.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285/artifacts/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac?artifact_id=87b188e8-ada1-4090-8fce-dd25c3c1", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285", + "deployment_diff": null, + "commit_lead_time": -1230198.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "template_reference_name": "exercises-start-points", + "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "git_commit_info": { + "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778157272.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac?artifact_id=930594d6-ca49-4cb3-8b50-f9253193", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", + "deployment_diff": null, + "commit_lead_time": -1234064.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "template_reference_name": "exercises-start-points", + "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "git_commit_info": { + "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778157272.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac?artifact_id=ad9c861a-04d0-488d-9870-aab003cd", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact", + "deployment_diff": null, + "commit_lead_time": -1234064.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] } ], "ecs_context": { @@ -3605,6 +4837,30 @@ kosli get snapshot aws-prod --output=json "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", "artifact_status": null } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "artifact_status": null + } } ] }, @@ -3650,16 +4906,40 @@ kosli get snapshot aws-prod --output=json "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", "artifact_status": "COMPLIANT" } - } - ] - }, - { - "rule": { - "type": "attestation", - "definition": { - "if": { - "text": "flow.name == \"snyk-vulns-aws-prod\"" - }, + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "artifact_status": "COMPLIANT" + } + } + ] + }, + { + "rule": { + "type": "attestation", + "definition": { + "if": { + "text": "flow.name == \"snyk-vulns-aws-prod\"" + }, "name": "snyk-container-scan", "type": "generic", "must_be_compliant": true @@ -3699,6 +4979,30 @@ kosli get snapshot aws-prod --output=json "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", "artifact_status": null } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "artifact_status": null + } } ] } @@ -3757,6 +5061,30 @@ kosli get snapshot aws-prod --output=json "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", "artifact_status": null } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "artifact_status": null + } } ] }, @@ -3808,6 +5136,30 @@ kosli get snapshot aws-prod --output=json "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", "artifact_status": "COMPLIANT" } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "artifact_status": "COMPLIANT" + } } ] }, @@ -3857,6 +5209,30 @@ kosli get snapshot aws-prod --output=json "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", "artifact_status": null } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "artifact_status": null + } } ] } @@ -3969,7 +5345,7 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d?artifact_id=084a57cf-f6a8-4303-ae83-0aee4c68", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d?artifact_id=81a19834-31ea-4e89-843c-a98ba49f", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod", "deployment_diff": null, "commit_lead_time": -691735.0, @@ -3990,541 +5366,85 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d?artifact_id=aff4d03c-afb1-438e-9b60-c5813e72", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d?artifact_id=7b489340-0541-46e9-9be8-7b05f412", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta", "deployment_diff": null, "commit_lead_time": -691735.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] - } - ], - "ecs_context": { - "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/70cb5b4768f343569f6ffc81a51d984d", - "cluster_name": null, - "service_name": null - } - }, - { - "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:65fd2bf@sha256:ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", - "compliant": true, - "deployments": [], - "policy_decisions": [ + }, { - "policy_version": 1, - "status": "COMPLIANT", - "rule_evaluations": [ - { - "rule": { - "type": "provenance", - "definition": { - "required": false, - "exceptions": [] - } - }, - "satisfied": null, - "ignored": true, - "resolutions": [ - { - "type": "rule_not_applicable", - "context": { - "flow_name": "creator-ci", - "trail_name": "65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "production-promotion", - "trail_name": "promote-all-9", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-archived-at-1776759327", - "trail_name": "creator-medium-SNYK-ALPINE322-ZLIB-16078399", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", - "artifact_status": null - } - } - ] - }, - { - "rule": { - "type": "trail-compliance", - "definition": { - "required": false, - "exceptions": [] - } - }, - "satisfied": null, - "ignored": true, - "resolutions": [ - { - "type": "rule_not_applicable", - "context": { - "flow_name": "creator-ci", - "trail_name": "65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", - "artifact_status": "COMPLIANT" - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "production-promotion", - "trail_name": "promote-all-9", - "artifact_status": "COMPLIANT" - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-archived-at-1776759327", - "trail_name": "creator-medium-SNYK-ALPINE322-ZLIB-16078399", - "artifact_status": "COMPLIANT" - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", - "artifact_status": "COMPLIANT" - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", - "artifact_status": "COMPLIANT" - } - } - ] - }, - { - "rule": { - "type": "attestation", - "definition": { - "if": { - "text": "flow.name == \"snyk-vulns-aws-prod\"" - }, - "name": "snyk-container-scan", - "type": "generic", - "must_be_compliant": true - } - }, - "satisfied": true, - "ignored": false, - "resolutions": [ - { - "type": "rule_not_applicable", - "context": { - "flow_name": "creator-ci", - "trail_name": "65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "production-promotion", - "trail_name": "promote-all-9", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-archived-at-1776759327", - "trail_name": "creator-medium-SNYK-ALPINE322-ZLIB-16078399", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", - "artifact_status": null - } - }, - { - "type": "rule_satisfied", - "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", - "artifact_status": null - } - } - ] - } - ], - "policy_name": "snyk-scan-aws-prod" - }, - { - "policy_version": 6, - "status": "COMPLIANT", - "rule_evaluations": [ - { - "rule": { - "type": "provenance", - "definition": { - "required": true, - "exceptions": [ - { - "if": { - "text": "flow.tags.kind != \"build\"" - } - } - ] - } - }, - "satisfied": true, - "ignored": false, - "resolutions": [ - { - "type": "rule_satisfied", - "context": { - "flow_name": "creator-ci", - "trail_name": "65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "production-promotion", - "trail_name": "promote-all-9", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-archived-at-1776759327", - "trail_name": "creator-medium-SNYK-ALPINE322-ZLIB-16078399", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", - "artifact_status": null - } - } - ] - }, - { - "rule": { - "type": "trail-compliance", - "definition": { - "required": true, - "exceptions": [ - { - "if": { - "text": "flow.tags.kind != \"build\"" - } - } - ] - } - }, - "satisfied": true, - "ignored": false, - "resolutions": [ - { - "type": "rule_satisfied", - "context": { - "flow_name": "creator-ci", - "trail_name": "65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", - "artifact_status": "COMPLIANT" - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "production-promotion", - "trail_name": "promote-all-9", - "artifact_status": "COMPLIANT" - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-archived-at-1776759327", - "trail_name": "creator-medium-SNYK-ALPINE322-ZLIB-16078399", - "artifact_status": "COMPLIANT" - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", - "artifact_status": "COMPLIANT" - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", - "artifact_status": "COMPLIANT" - } - } - ] - }, - { - "rule": { - "type": "attestation", - "definition": { - "if": { - "text": "flow.tags.kind == \"build\"" - }, - "name": "*", - "type": "pull_request", - "must_be_compliant": true - } - }, - "satisfied": true, - "ignored": false, - "resolutions": [ - { - "type": "rule_satisfied", - "context": { - "flow_name": "creator-ci", - "trail_name": "65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "production-promotion", - "trail_name": "promote-all-9", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-archived-at-1776759327", - "trail_name": "creator-medium-SNYK-ALPINE322-ZLIB-16078399", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", - "artifact_status": null - } - } - ] - } - ], - "policy_name": "build-process" - } - ], - "reasons_for_incompliance": [], - "fingerprint": "ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", - "creationTimestamp": [ - 1776256761 - ], - "pods": null, - "annotation": { - "type": "unchanged", - "was": 1, - "now": 1 - }, - "flow_name": "creator-ci", - "git_commit": "65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", - "commit_url": "https://gitlab.com/cyber-dojo/creator/-/commit/65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", - "html_url": "https://app.kosli.com/cyber-dojo/flows/creator-ci/artifacts/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f?artifact_id=c5d209a3-9139-4f5b-a553-c6351091", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/creator-ci", - "deployment_diff": { - "diff_url": "https://gitlab.com/cyber-dojo/creator/-/compare/f89742ee5f0477a7c729bfdeadc84dcbd70492b2...65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", - "previous_git_commit": "f89742ee5f0477a7c729bfdeadc84dcbd70492b2", - "previous_fingerprint": "fe04c26b299dbb3ae9feb00d3955427d03a929c7f50e531acc243a176e01f16f", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:f89742e@sha256:fe04c26b299dbb3ae9feb00d3955427d03a929c7f50e531acc243a176e01f16f", - "previous_artifact_compliance_state": "COMPLIANT", - "previous_running": false, - "previous_git_commit_url": "https://gitlab.com/cyber-dojo/creator/-/commit/f89742ee5f0477a7c729bfdeadc84dcbd70492b2", - "previous_trail_name": "f89742ee5f0477a7c729bfdeadc84dcbd70492b2", - "previous_template_reference_name": "creator" - }, - "commit_lead_time": 4517.0, - "flows": [ - { - "flow_name": "creator-ci", - "trail_name": "65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", - "template_reference_name": "creator", - "git_commit": "65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", - "commit_url": "https://gitlab.com/cyber-dojo/creator/-/commit/65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", - "git_commit_info": { - "sha1": "65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", - "message": "Merge branch 'fix-multijson-deprecation-warning' into 'main'\n\nBypass MultiJson.encode deprecation warning in Sinatra's json helper\n\nSee merge request cyber-dojo/creator!243", - "author": "Jon Jagger ", - "branch": "main", - "timestamp": 1776252244.0, - "url": "https://gitlab.com/cyber-dojo/creator/-/commit/65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c" - }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/creator-ci/artifacts/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f?artifact_id=c5d209a3-9139-4f5b-a553-c6351091", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/creator-ci", - "deployment_diff": { - "diff_url": "https://gitlab.com/cyber-dojo/creator/-/compare/f89742ee5f0477a7c729bfdeadc84dcbd70492b2...65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", - "previous_git_commit": "f89742ee5f0477a7c729bfdeadc84dcbd70492b2", - "previous_fingerprint": "fe04c26b299dbb3ae9feb00d3955427d03a929c7f50e531acc243a176e01f16f", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:f89742e@sha256:fe04c26b299dbb3ae9feb00d3955427d03a929c7f50e531acc243a176e01f16f", - "previous_artifact_compliance_state": "COMPLIANT", - "previous_running": false, - "previous_git_commit_url": "https://gitlab.com/cyber-dojo/creator/-/commit/f89742ee5f0477a7c729bfdeadc84dcbd70492b2", - "previous_trail_name": "f89742ee5f0477a7c729bfdeadc84dcbd70492b2", - "previous_template_reference_name": "creator" - }, - "commit_lead_time": 4517.0, - "artifact_compliance_in_flow": true, - "flow_reasons_for_non_compliance": [] - }, - { - "flow_name": "production-promotion", - "trail_name": "promote-all-9", - "template_reference_name": "creator", - "git_commit": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "git_commit_info": { - "sha1": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "message": "Revert WEB_SECRET_KEY_BASE changes - SECRET_KEY_BASE now fetched from AWS SSM in web's Terraform\n\nCo-Authored-By: Claude Sonnet 4.6 ", - "author": "JonJagger ", - "branch": "main", - "timestamp": 1776099255.0, - "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa" - }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f?artifact_id=c1a47a75-cdd5-446b-b08e-040067c3", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion", - "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa...87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "previous_git_commit": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "previous_fingerprint": "fe04c26b299dbb3ae9feb00d3955427d03a929c7f50e531acc243a176e01f16f", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:f89742e@sha256:fe04c26b299dbb3ae9feb00d3955427d03a929c7f50e531acc243a176e01f16f", - "previous_artifact_compliance_state": "COMPLIANT", - "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "previous_trail_name": "promotion-one-28", - "previous_template_reference_name": "creator" - }, - "commit_lead_time": 157506.0, - "artifact_compliance_in_flow": true, - "flow_reasons_for_non_compliance": [] - }, - { - "flow_name": "snyk-vulns-archived-at-1776759327", - "trail_name": "creator-medium-SNYK-ALPINE322-ZLIB-16078399", - "template_reference_name": "artifact", - "git_commit": "8440baadcaccb4ceeb8ba26b25579eb16cc447d6", - "commit_url": "https://github.com/cyber-dojo/live-snyk-scans/commit/8440baadcaccb4ceeb8ba26b25579eb16cc447d6", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "template_reference_name": "nginx", + "git_commit": "e50b0406a64efc36fb236afd464e75b31877f623", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623", "git_commit_info": { - "sha1": "8440baadcaccb4ceeb8ba26b25579eb16cc447d6", - "message": "Remove unnecessary floor() on trail creation timestamp\n\nfloor() was needed for bash integer arithmetic that has since been\nremoved; .created_at is now only used as a JSON number, which supports\nfloats natively.", + "sha1": "e50b0406a64efc36fb236afd464e75b31877f623", + "message": "Split snyk Kosli flows to separate per-vuln and per-artifact trails\n\nsnyk-vulns-{env} mixed two trail naming patterns: {repo}-{severity}-{CVE}\nfor individual vulnerabilities, and {repo}-{fingerprint} for aggregate\nartifact scan results. snyk-{env}-per-vuln and snyk-{env}-per-artifact\nmake each flow's purpose explicit and the Kosli UI easier to navigate.\n\nAlso removes temporary debug logging from the fingerprint step.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1776347865.0, - "url": "https://github.com/cyber-dojo/live-snyk-scans/commit/8440baadcaccb4ceeb8ba26b25579eb16cc447d6" + "timestamp": 1778153406.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-archived-at-1776759327/artifacts/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f?artifact_id=240caf97-910e-4c8b-91dd-ef048d65", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-archived-at-1776759327", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285/artifacts/69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d?artifact_id=875ffba7-ccd6-44aa-b7ec-37e07a51", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285", "deployment_diff": null, - "commit_lead_time": -91104.0, + "commit_lead_time": -1230206.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", - "template_reference_name": "creator", - "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "template_reference_name": "nginx", + "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", "git_commit_info": { - "sha1": "117e18e0cb1eab30b9747ece58327eabfc595b90", - "message": "Add debug commands for kosli-fingerprint", + "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1777614935.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" + "timestamp": 1778157272.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f?artifact_id=893e3314-fdff-4f62-b899-2f874504", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d?artifact_id=5e29b90a-faf4-4358-a246-5a708b9e", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", "deployment_diff": null, - "commit_lead_time": -1358174.0, + "commit_lead_time": -1234072.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", - "template_reference_name": "creator", - "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "template_reference_name": "nginx", + "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", "git_commit_info": { - "sha1": "117e18e0cb1eab30b9747ece58327eabfc595b90", - "message": "Add debug commands for kosli-fingerprint", + "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1777614935.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" + "timestamp": 1778157272.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f?artifact_id=a394a189-0af2-4900-8278-f11ac37c", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d?artifact_id=9a4d2421-7e41-4e2f-b329-c936ccb1", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact", "deployment_diff": null, - "commit_lead_time": -1358174.0, + "commit_lead_time": -1234072.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] } ], "ecs_context": { - "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/712400a03ac04a9fb22935535516a317", + "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/70cb5b4768f343569f6ffc81a51d984d", "cluster_name": null, "service_name": null } }, { - "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:a97ed05@sha256:8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", + "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:65fd2bf@sha256:ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", "compliant": true, "deployments": [], "policy_decisions": [ @@ -4546,8 +5466,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "languages-start-points-ci", - "trail_name": "a97ed054e38d484a0015cd658f1d593c03ea2a61", + "flow_name": "creator-ci", + "trail_name": "65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", "artifact_status": null } }, @@ -4555,7 +5475,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-13", + "trail_name": "promote-all-9", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-archived-at-1776759327", + "trail_name": "creator-medium-SNYK-ALPINE322-ZLIB-16078399", "artifact_status": null } }, @@ -4563,7 +5491,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "languages-start-points-8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", + "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", "artifact_status": null } }, @@ -4571,7 +5499,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "languages-start-points-8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", + "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", "artifact_status": null } } @@ -4591,8 +5527,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "languages-start-points-ci", - "trail_name": "a97ed054e38d484a0015cd658f1d593c03ea2a61", + "flow_name": "creator-ci", + "trail_name": "65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", "artifact_status": "COMPLIANT" } }, @@ -4600,7 +5536,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-13", + "trail_name": "promote-all-9", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-archived-at-1776759327", + "trail_name": "creator-medium-SNYK-ALPINE322-ZLIB-16078399", "artifact_status": "COMPLIANT" } }, @@ -4608,7 +5552,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "languages-start-points-8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", + "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", "artifact_status": "COMPLIANT" } }, @@ -4616,7 +5560,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "languages-start-points-8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", + "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", "artifact_status": "COMPLIANT" } } @@ -4640,8 +5592,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "languages-start-points-ci", - "trail_name": "a97ed054e38d484a0015cd658f1d593c03ea2a61", + "flow_name": "creator-ci", + "trail_name": "65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", "artifact_status": null } }, @@ -4649,7 +5601,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-13", + "trail_name": "promote-all-9", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-archived-at-1776759327", + "trail_name": "creator-medium-SNYK-ALPINE322-ZLIB-16078399", "artifact_status": null } }, @@ -4657,7 +5617,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "languages-start-points-8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", + "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", "artifact_status": null } }, @@ -4665,7 +5625,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_satisfied", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "languages-start-points-8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", + "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", "artifact_status": null } } @@ -4698,8 +5666,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "languages-start-points-ci", - "trail_name": "a97ed054e38d484a0015cd658f1d593c03ea2a61", + "flow_name": "creator-ci", + "trail_name": "65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", "artifact_status": null } }, @@ -4707,7 +5675,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-13", + "trail_name": "promote-all-9", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-archived-at-1776759327", + "trail_name": "creator-medium-SNYK-ALPINE322-ZLIB-16078399", "artifact_status": null } }, @@ -4715,7 +5691,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "languages-start-points-8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", + "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", "artifact_status": null } }, @@ -4723,7 +5699,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "languages-start-points-8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", + "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", "artifact_status": null } } @@ -4749,8 +5733,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "languages-start-points-ci", - "trail_name": "a97ed054e38d484a0015cd658f1d593c03ea2a61", + "flow_name": "creator-ci", + "trail_name": "65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", "artifact_status": "COMPLIANT" } }, @@ -4758,7 +5742,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-13", + "trail_name": "promote-all-9", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-archived-at-1776759327", + "trail_name": "creator-medium-SNYK-ALPINE322-ZLIB-16078399", "artifact_status": "COMPLIANT" } }, @@ -4766,7 +5758,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "languages-start-points-8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", + "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", "artifact_status": "COMPLIANT" } }, @@ -4774,7 +5766,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "languages-start-points-8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", + "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", "artifact_status": "COMPLIANT" } } @@ -4798,8 +5798,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "languages-start-points-ci", - "trail_name": "a97ed054e38d484a0015cd658f1d593c03ea2a61", + "flow_name": "creator-ci", + "trail_name": "65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", "artifact_status": null } }, @@ -4807,7 +5807,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-13", + "trail_name": "promote-all-9", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-archived-at-1776759327", + "trail_name": "creator-medium-SNYK-ALPINE322-ZLIB-16078399", "artifact_status": null } }, @@ -4815,7 +5823,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "languages-start-points-8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", + "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", "artifact_status": null } }, @@ -4823,7 +5831,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "languages-start-points-8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", + "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", "artifact_status": null } } @@ -4834,100 +5850,121 @@ kosli get snapshot aws-prod --output=json } ], "reasons_for_incompliance": [], - "fingerprint": "8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", + "fingerprint": "ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", "creationTimestamp": [ - 1777842906 + 1776256761 ], "pods": null, "annotation": { - "type": "exited", + "type": "unchanged", "was": 1, - "now": 0 + "now": 1 }, - "flow_name": "languages-start-points-ci", - "git_commit": "a97ed054e38d484a0015cd658f1d593c03ea2a61", - "commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/a97ed054e38d484a0015cd658f1d593c03ea2a61", - "html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e?artifact_id=a62586e6-58ba-4a88-84cf-1d49694f", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci", + "flow_name": "creator-ci", + "git_commit": "65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", + "commit_url": "https://gitlab.com/cyber-dojo/creator/-/commit/65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", + "html_url": "https://app.kosli.com/cyber-dojo/flows/creator-ci/artifacts/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f?artifact_id=c5d209a3-9139-4f5b-a553-c6351091", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/creator-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/languages-start-points/compare/98e8281ec23d94507d02b8d335b2dd8064e2149b...a97ed054e38d484a0015cd658f1d593c03ea2a61", - "previous_git_commit": "98e8281ec23d94507d02b8d335b2dd8064e2149b", - "previous_fingerprint": "281eba54d6b1083b3d7b987facc053202636433de0ef5facbc6145dda5156bc4", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:98e8281@sha256:281eba54d6b1083b3d7b987facc053202636433de0ef5facbc6145dda5156bc4", + "diff_url": "https://gitlab.com/cyber-dojo/creator/-/compare/f89742ee5f0477a7c729bfdeadc84dcbd70492b2...65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", + "previous_git_commit": "f89742ee5f0477a7c729bfdeadc84dcbd70492b2", + "previous_fingerprint": "fe04c26b299dbb3ae9feb00d3955427d03a929c7f50e531acc243a176e01f16f", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:f89742e@sha256:fe04c26b299dbb3ae9feb00d3955427d03a929c7f50e531acc243a176e01f16f", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/98e8281ec23d94507d02b8d335b2dd8064e2149b", - "previous_trail_name": "98e8281ec23d94507d02b8d335b2dd8064e2149b", - "previous_template_reference_name": "languages-start-points" + "previous_git_commit_url": "https://gitlab.com/cyber-dojo/creator/-/commit/f89742ee5f0477a7c729bfdeadc84dcbd70492b2", + "previous_trail_name": "f89742ee5f0477a7c729bfdeadc84dcbd70492b2", + "previous_template_reference_name": "creator" }, - "commit_lead_time": 819.0, + "commit_lead_time": 4517.0, "flows": [ { - "flow_name": "languages-start-points-ci", - "trail_name": "a97ed054e38d484a0015cd658f1d593c03ea2a61", - "template_reference_name": "languages-start-points", - "git_commit": "a97ed054e38d484a0015cd658f1d593c03ea2a61", - "commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/a97ed054e38d484a0015cd658f1d593c03ea2a61", + "flow_name": "creator-ci", + "trail_name": "65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", + "template_reference_name": "creator", + "git_commit": "65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", + "commit_url": "https://gitlab.com/cyber-dojo/creator/-/commit/65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", "git_commit_info": { - "sha1": "a97ed054e38d484a0015cd658f1d593c03ea2a61", - "message": "Merge pull request #203 from cyber-dojo/update-python-pytest\n\nUpdate python-pytest", - "author": "Jon Jagger ", + "sha1": "65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", + "message": "Merge branch 'fix-multijson-deprecation-warning' into 'main'\n\nBypass MultiJson.encode deprecation warning in Sinatra's json helper\n\nSee merge request cyber-dojo/creator!243", + "author": "Jon Jagger ", "branch": "main", - "timestamp": 1777842087.0, - "url": "https://github.com/cyber-dojo/languages-start-points/commit/a97ed054e38d484a0015cd658f1d593c03ea2a61" + "timestamp": 1776252244.0, + "url": "https://gitlab.com/cyber-dojo/creator/-/commit/65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e?artifact_id=a62586e6-58ba-4a88-84cf-1d49694f", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci", + "html_url": "https://app.kosli.com/cyber-dojo/flows/creator-ci/artifacts/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f?artifact_id=c5d209a3-9139-4f5b-a553-c6351091", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/creator-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/languages-start-points/compare/98e8281ec23d94507d02b8d335b2dd8064e2149b...a97ed054e38d484a0015cd658f1d593c03ea2a61", - "previous_git_commit": "98e8281ec23d94507d02b8d335b2dd8064e2149b", - "previous_fingerprint": "281eba54d6b1083b3d7b987facc053202636433de0ef5facbc6145dda5156bc4", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:98e8281@sha256:281eba54d6b1083b3d7b987facc053202636433de0ef5facbc6145dda5156bc4", + "diff_url": "https://gitlab.com/cyber-dojo/creator/-/compare/f89742ee5f0477a7c729bfdeadc84dcbd70492b2...65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", + "previous_git_commit": "f89742ee5f0477a7c729bfdeadc84dcbd70492b2", + "previous_fingerprint": "fe04c26b299dbb3ae9feb00d3955427d03a929c7f50e531acc243a176e01f16f", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:f89742e@sha256:fe04c26b299dbb3ae9feb00d3955427d03a929c7f50e531acc243a176e01f16f", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/98e8281ec23d94507d02b8d335b2dd8064e2149b", - "previous_trail_name": "98e8281ec23d94507d02b8d335b2dd8064e2149b", - "previous_template_reference_name": "languages-start-points" + "previous_git_commit_url": "https://gitlab.com/cyber-dojo/creator/-/commit/f89742ee5f0477a7c729bfdeadc84dcbd70492b2", + "previous_trail_name": "f89742ee5f0477a7c729bfdeadc84dcbd70492b2", + "previous_template_reference_name": "creator" }, - "commit_lead_time": 819.0, + "commit_lead_time": 4517.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "production-promotion", - "trail_name": "promote-all-13", - "template_reference_name": "languages-start-points", - "git_commit": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "trail_name": "promote-all-9", + "template_reference_name": "creator", + "git_commit": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", + "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", "git_commit_info": { - "sha1": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "message": "Add Snyk scan to promote-all, scoped to aws-prod compliance only\n\nMirrors the change made to promote-one: inserts a snyk-scan job\n(before sdlc-control-gate) that scans each artifact against the\naws-prod environment policy. Removes KOSLI_AWS_BETA env var and\nthe aws-beta assert and attest steps.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", + "message": "Revert WEB_SECRET_KEY_BASE changes - SECRET_KEY_BASE now fetched from AWS SSM in web's Terraform\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1777361993.0, - "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f" + "timestamp": 1776099255.0, + "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e?artifact_id=fd354e7f-c2ef-4e37-bb92-49b6ce16", + "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f?artifact_id=c1a47a75-cdd5-446b-b08e-040067c3", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa...1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa...87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", "previous_git_commit": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "previous_fingerprint": "281eba54d6b1083b3d7b987facc053202636433de0ef5facbc6145dda5156bc4", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:98e8281@sha256:281eba54d6b1083b3d7b987facc053202636433de0ef5facbc6145dda5156bc4", + "previous_fingerprint": "fe04c26b299dbb3ae9feb00d3955427d03a929c7f50e531acc243a176e01f16f", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:f89742e@sha256:fe04c26b299dbb3ae9feb00d3955427d03a929c7f50e531acc243a176e01f16f", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "previous_trail_name": "promote-all-11", - "previous_template_reference_name": "languages-start-points" + "previous_trail_name": "promotion-one-28", + "previous_template_reference_name": "creator" + }, + "commit_lead_time": 157506.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-vulns-archived-at-1776759327", + "trail_name": "creator-medium-SNYK-ALPINE322-ZLIB-16078399", + "template_reference_name": "artifact", + "git_commit": "8440baadcaccb4ceeb8ba26b25579eb16cc447d6", + "commit_url": "https://github.com/cyber-dojo/live-snyk-scans/commit/8440baadcaccb4ceeb8ba26b25579eb16cc447d6", + "git_commit_info": { + "sha1": "8440baadcaccb4ceeb8ba26b25579eb16cc447d6", + "message": "Remove unnecessary floor() on trail creation timestamp\n\nfloor() was needed for bash integer arithmetic that has since been\nremoved; .created_at is now only used as a JSON number, which supports\nfloats natively.", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1776347865.0, + "url": "https://github.com/cyber-dojo/live-snyk-scans/commit/8440baadcaccb4ceeb8ba26b25579eb16cc447d6" }, - "commit_lead_time": 480913.0, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-archived-at-1776759327/artifacts/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f?artifact_id=240caf97-910e-4c8b-91dd-ef048d65", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-archived-at-1776759327", + "deployment_diff": null, + "commit_lead_time": -91104.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "languages-start-points-8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", - "template_reference_name": "languages-start-points", + "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", + "template_reference_name": "creator", "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", "git_commit_info": { @@ -4938,17 +5975,17 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e?artifact_id=61b86531-a2c1-4c75-96a0-b5497786", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f?artifact_id=893e3314-fdff-4f62-b899-2f874504", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta", "deployment_diff": null, - "commit_lead_time": 227971.0, + "commit_lead_time": -1358174.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "languages-start-points-8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", - "template_reference_name": "languages-start-points", + "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", + "template_reference_name": "creator", "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", "git_commit_info": { @@ -4959,16 +5996,37 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e?artifact_id=136bb00b-9e03-4924-89d5-6bc33be2", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f?artifact_id=12e53641-ee6f-4f38-bd54-97dc25ad", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod", "deployment_diff": null, - "commit_lead_time": 227971.0, + "commit_lead_time": -1358174.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", + "template_reference_name": "creator", + "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "git_commit_info": { + "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778157272.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f?artifact_id=e438c3a0-fe42-4cb7-90cd-8a632a2b", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", + "deployment_diff": null, + "commit_lead_time": -1900511.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] } ], "ecs_context": { - "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/c83d5207d2af4ecdac8d64627f8fb7bf", + "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/712400a03ac04a9fb22935535516a317", "cluster_name": null, "service_name": null } diff --git a/client_reference/kosli_get_trail.md b/client_reference/kosli_get_trail.md index d5d8219..29cea33 100644 --- a/client_reference/kosli_get_trail.md +++ b/client_reference/kosli_get_trail.md @@ -28,7 +28,7 @@ Get the metadata of a specific trail. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_join_environment.md b/client_reference/kosli_join_environment.md index 7fa4157..a04cb7c 100644 --- a/client_reference/kosli_join_environment.md +++ b/client_reference/kosli_join_environment.md @@ -29,7 +29,7 @@ Join a physical environment to a logical environment. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_list_approvals.md b/client_reference/kosli_list_approvals.md index d3ad110..16f395d 100644 --- a/client_reference/kosli_list_approvals.md +++ b/client_reference/kosli_list_approvals.md @@ -33,7 +33,7 @@ By default, the page limit is 15 approvals per page. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_list_artifacts.md b/client_reference/kosli_list_artifacts.md index 20600da..0c9569d 100644 --- a/client_reference/kosli_list_artifacts.md +++ b/client_reference/kosli_list_artifacts.md @@ -33,7 +33,7 @@ By default, the page limit is 15 artifacts per page. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_list_attestation-types.md b/client_reference/kosli_list_attestation-types.md index 9af2f64..311708e 100644 --- a/client_reference/kosli_list_attestation-types.md +++ b/client_reference/kosli_list_attestation-types.md @@ -27,7 +27,7 @@ List all Kosli attestation types for an org. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_list_environments.md b/client_reference/kosli_list_environments.md index 168d812..c31c898 100644 --- a/client_reference/kosli_list_environments.md +++ b/client_reference/kosli_list_environments.md @@ -27,7 +27,7 @@ List environments for an org. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -52,8 +52,8 @@ kosli list environments --output=json "name": "aws-beta", "type": "ECS", "description": "The ECS cluster for staging cyber-dojo", - "last_modified_at": 1777983324.0257177, - "last_reported_at": 1777983324.0257177, + "last_modified_at": 1778219723.950717, + "last_reported_at": 1778219723.950717, "state": true, "include_scaling": false, "tags": { @@ -70,8 +70,8 @@ kosli list environments --output=json "name": "aws-prod", "type": "ECS", "description": "The ECS cluster for production cyber-dojo", - "last_modified_at": 1777983298.5339797, - "last_reported_at": 1777983298.5339797, + "last_modified_at": 1778219758.5460255, + "last_reported_at": 1778219758.5460255, "state": true, "include_scaling": false, "tags": { diff --git a/client_reference/kosli_list_flows.md b/client_reference/kosli_list_flows.md index 5fb10a3..947ebf2 100644 --- a/client_reference/kosli_list_flows.md +++ b/client_reference/kosli_list_flows.md @@ -27,7 +27,7 @@ List flows for an org. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -217,6 +217,58 @@ kosli list flows --output=json "repo_url": "https://github.com/cyber-dojo/secrets" } }, + { + "name": "snyk-aws-beta-per-artifact", + "description": "Snyk vulns in aws-beta artifacts", + "visibility": "private", + "org": "cyber-dojo", + "template": "version: 1", + "repo_url": "https://github.com/cyber-dojo/snyk-scanning", + "tags": { + "ci": "github", + "kind": "run", + "workflow_url": "https://github.com/cyber-dojo/snyk-scanning/blob/main/.github/workflows/aws-beta.yml" + } + }, + { + "name": "snyk-aws-beta-per-vuln", + "description": "Individual Snyk vuln trails for aws-beta artifacts", + "visibility": "private", + "org": "cyber-dojo", + "template": "version: 1\ntrail:\n attestations: []\n artifacts:\n - name: artifact\n attestations: []\n", + "repo_url": "", + "tags": { + "ci": "github", + "kind": "run", + "workflow_url": "https://github.com/cyber-dojo/snyk-scanning/blob/main/.github/workflows/artifact_snyk_test.yml" + } + }, + { + "name": "snyk-aws-prod-per-artifact", + "description": "Snyk vulns in aws-prod artifacts", + "visibility": "private", + "org": "cyber-dojo", + "template": "version: 1", + "repo_url": "https://github.com/cyber-dojo/snyk-scanning", + "tags": { + "ci": "github", + "kind": "run", + "workflow_url": "https://github.com/cyber-dojo/snyk-scanning/blob/main/.github/workflows/aws-prod.yml" + } + }, + { + "name": "snyk-aws-prod-per-vuln", + "description": "Individual Snyk vuln trails for aws-prod artifacts", + "visibility": "private", + "org": "cyber-dojo", + "template": "version: 1\ntrail:\n attestations: []\n artifacts:\n - name: artifact\n attestations: []\n", + "repo_url": "", + "tags": { + "ci": "github", + "kind": "run", + "workflow_url": "https://github.com/cyber-dojo/snyk-scanning/blob/main/.github/workflows/artifact_snyk_test.yml" + } + }, { "name": "snyk-vulns-aws-beta", "description": "", diff --git a/client_reference/kosli_list_policies.md b/client_reference/kosli_list_policies.md index d4070e3..1d3453a 100644 --- a/client_reference/kosli_list_policies.md +++ b/client_reference/kosli_list_policies.md @@ -27,7 +27,7 @@ List environment policies for an org. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_list_snapshots.md b/client_reference/kosli_list_snapshots.md index 6d600c7..7267518 100644 --- a/client_reference/kosli_list_snapshots.md +++ b/client_reference/kosli_list_snapshots.md @@ -43,7 +43,7 @@ Either expression can be omitted to default to NOW. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -65,109 +65,109 @@ kosli list snapshots aws-prod --output=json ```json [ { - "index": 4357, - "from": 1777956838.5302956, + "index": 4382, + "from": 1778213818.5191746, "to": 0.0, "compliant": true, - "duration": 26497.173085689545 + "duration": 5955.0178434848785 }, { - "index": 4356, - "from": 1777954558.5092592, - "to": 1777956838.5302956, + "index": 4381, + "from": 1778213758.4011989, + "to": 1778213818.5191746, "compliant": true, - "duration": 2280.02103638649 + "duration": 60.11797571182251 }, { - "index": 4355, - "from": 1777954498.4239645, - "to": 1777954558.5092592, + "index": 4380, + "from": 1778178538.4365702, + "to": 1778213758.4011989, "compliant": true, - "duration": 60.08529472351074 + "duration": 35219.96462869644 }, { - "index": 4354, - "from": 1777954438.5998223, - "to": 1777954498.4239645, + "index": 4379, + "from": 1778158918.5020123, + "to": 1778178538.4365702, "compliant": true, - "duration": 59.82414221763611 + "duration": 19619.934557914734 }, { - "index": 4353, - "from": 1777869538.5253296, - "to": 1777954438.5998223, + "index": 4378, + "from": 1778158858.590836, + "to": 1778158918.5020123, "compliant": true, - "duration": 84900.07449269295 + "duration": 59.9111762046814 }, { - "index": 4352, - "from": 1777869478.5084555, - "to": 1777869538.5253296, + "index": 4377, + "from": 1778157598.4368508, + "to": 1778158858.590836, "compliant": true, - "duration": 60.01687407493591 + "duration": 1260.1539852619171 }, { - "index": 4351, - "from": 1777842958.6060224, - "to": 1777869478.5084555, + "index": 4376, + "from": 1778157538.6015975, + "to": 1778157598.4368508, "compliant": true, - "duration": 26519.902433156967 + "duration": 59.83525323867798 }, { - "index": 4350, - "from": 1777783138.5161338, - "to": 1777842958.6060224, + "index": 4375, + "from": 1778157478.5209992, + "to": 1778157538.6015975, "compliant": true, - "duration": 59820.08988857269 + "duration": 60.0805983543396 }, { - "index": 4349, - "from": 1777783085.6064026, - "to": 1777783138.5161338, + "index": 4374, + "from": 1778157118.5120325, + "to": 1778157478.5209992, "compliant": true, - "duration": 52.90973114967346 + "duration": 360.00896668434143 }, { - "index": 4348, - "from": 1777783018.5123496, - "to": 1777783085.6064026, + "index": 4373, + "from": 1778157058.6630018, + "to": 1778157118.5120325, "compliant": true, - "duration": 67.09405303001404 + "duration": 59.84903073310852 }, { - "index": 4347, - "from": 1777695478.6151357, - "to": 1777783018.5123496, + "index": 4372, + "from": 1778156278.425921, + "to": 1778157058.6630018, "compliant": true, - "duration": 87539.89721393585 + "duration": 780.2370808124542 }, { - "index": 4346, - "from": 1777695418.5493166, - "to": 1777695478.6151357, + "index": 4371, + "from": 1778156218.5558252, + "to": 1778156278.425921, "compliant": true, - "duration": 60.06581902503967 + "duration": 59.87009572982788 }, { - "index": 4345, - "from": 1777695358.5312326, - "to": 1777695418.5493166, + "index": 4370, + "from": 1778155318.5846732, + "to": 1778156218.5558252, "compliant": true, - "duration": 60.01808404922485 + "duration": 899.9711520671844 }, { - "index": 4344, - "from": 1777644058.4073718, - "to": 1777695358.5312326, + "index": 4369, + "from": 1778154298.3885734, + "to": 1778155318.5846732, "compliant": true, - "duration": 51300.12386083603 + "duration": 1020.1960997581482 }, { - "index": 4343, - "from": 1777643998.3954618, - "to": 1777644058.4073718, + "index": 4368, + "from": 1778153938.502302, + "to": 1778154298.3885734, "compliant": true, - "duration": 60.01190996170044 + "duration": 359.8862714767456 } ] ``` diff --git a/client_reference/kosli_list_trails.md b/client_reference/kosli_list_trails.md index bb9d3b5..d12fbc2 100644 --- a/client_reference/kosli_list_trails.md +++ b/client_reference/kosli_list_trails.md @@ -32,7 +32,7 @@ List Trails of an org.The list can be filtered by flow, flow tag and artifact fi | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_log_environment.md b/client_reference/kosli_log_environment.md index b18368b..35578b2 100644 --- a/client_reference/kosli_log_environment.md +++ b/client_reference/kosli_log_environment.md @@ -44,7 +44,7 @@ Either expression can be omitted to default to NOW. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -67,50 +67,58 @@ kosli log environment aws-prod --output=json [ { "environment_name": "aws-prod", - "snapshot_index": 4357, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:95ab455@sha256:1eea61094353db37c7ef3e9582e63f3427c5e01fe76b8210db985144d10088cf", - "sha256": "1eea61094353db37c7ef3e9582e63f3427c5e01fe76b8210db985144d10088cf", - "description": "1 instance started running (from 0 to 1)", - "reported_at": 1777956838.5302956, - "pipeline": "languages-start-points-ci", + "snapshot_index": 4382, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:8768460@sha256:2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "sha256": "2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "description": "3 instances changed", + "reported_at": 1778213818.5191746, + "pipeline": "runner-ci", "deployments": [], "flows": [ { - "flow_name": "languages-start-points-ci", + "flow_name": "runner-ci", "deployments": null }, { "flow_name": "production-promotion", "deployments": null + }, + { + "flow_name": "snyk-aws-beta-per-artifact", + "deployments": null + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, - "type": "started-compliant", - "code_diff": "https://github.com/cyber-dojo/languages-start-points/compare/a97ed054e38d484a0015cd658f1d593c03ea2a61...95ab455dd7301b20c744f50b1cd015e4396aedce", + "type": "updated-provenance", + "code_diff": "https://github.com/cyber-dojo/runner/compare/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e...8768460dc1c91de5f6485a7d3e36870b683edfc3", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/languages-start-points-ci/fingerprint/1eea61094353db37c7ef3e9582e63f3427c5e01fe76b8210db985144d10088cf", - "html": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/1eea61094353db37c7ef3e9582e63f3427c5e01fe76b8210db985144d10088cf?artifact_id=c6ff1415-5cd1-48d0-a0df-cbcbcc5e" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/runner-ci/fingerprint/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "html": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=4d69a029-0ed8-4ead-b1f5-f6e36c52" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4357", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4357" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4382", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4382" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4357, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:a97ed05@sha256:8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", - "sha256": "8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", - "description": "1 instance stopped running (from 1 to 0)", - "reported_at": 1777956838.5302956, - "pipeline": "languages-start-points-ci", + "snapshot_index": 4381, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:8768460@sha256:2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "sha256": "2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "description": "3 instances changed", + "reported_at": 1778213758.4011989, + "pipeline": "runner-ci", "deployments": [], "flows": [ { - "flow_name": "languages-start-points-ci", + "flow_name": "runner-ci", "deployments": null }, { @@ -118,41 +126,37 @@ kosli log environment aws-prod --output=json "deployments": null }, { - "flow_name": "snyk-vulns-aws-beta", - "deployments": null - }, - { - "flow_name": "snyk-vulns-aws-prod", + "flow_name": "snyk-aws-beta-per-artifact", "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, - "type": "exited", - "code_diff": "https://github.com/cyber-dojo/languages-start-points/compare/98e8281ec23d94507d02b8d335b2dd8064e2149b...a97ed054e38d484a0015cd658f1d593c03ea2a61", + "type": "updated-provenance", + "code_diff": "https://github.com/cyber-dojo/runner/compare/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e...8768460dc1c91de5f6485a7d3e36870b683edfc3", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/languages-start-points-ci/fingerprint/8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", - "html": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e?artifact_id=a62586e6-58ba-4a88-84cf-1d49694f" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/runner-ci/fingerprint/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "html": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=4d69a029-0ed8-4ead-b1f5-f6e36c52" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4357", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4357" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4381", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4381" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4356, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:65fd2bf@sha256:ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", - "sha256": "ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", + "snapshot_index": 4381, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:447231c@sha256:691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "sha256": "691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", "description": "1 instance changed", - "reported_at": 1777954558.5092592, - "pipeline": "creator-ci", + "reported_at": 1778213758.4011989, + "pipeline": "exercises-start-points-ci", "deployments": [], "flows": [ { - "flow_name": "creator-ci", + "flow_name": "exercises-start-points-ci", "deployments": null }, { @@ -160,45 +164,53 @@ kosli log environment aws-prod --output=json "deployments": null }, { - "flow_name": "snyk-vulns-archived-at-1776759327", + "flow_name": "snyk-vulns-aws-beta", "deployments": null }, { - "flow_name": "snyk-vulns-aws-beta", + "flow_name": "snyk-vulns-aws-prod", "deployments": null }, { - "flow_name": "snyk-vulns-aws-prod", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "deployments": null + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "deployments": null + }, + { + "flow_name": "snyk-aws-beta-per-artifact", "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, "type": "updated-provenance", - "code_diff": "https://gitlab.com/cyber-dojo/creator/-/compare/f89742ee5f0477a7c729bfdeadc84dcbd70492b2...65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", + "code_diff": "https://github.com/cyber-dojo/exercises-start-points/compare/83ea563b423559eaf750dd680fc2329e59f60e3b...447231c2018bc0690735b4ee110ca46431162fd5", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/creator-ci/fingerprint/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", - "html": "https://app.kosli.com/cyber-dojo/flows/creator-ci/artifacts/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f?artifact_id=c5d209a3-9139-4f5b-a553-c6351091" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/exercises-start-points-ci/fingerprint/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "html": "https://app.kosli.com/cyber-dojo/flows/exercises-start-points-ci/artifacts/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac?artifact_id=98831c77-04a8-4427-9cf8-03950550" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4356", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4356" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4381", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4381" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4356, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:a2ffba5@sha256:b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", - "sha256": "b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", - "description": "3 instances changed", - "reported_at": 1777954558.5092592, - "pipeline": "runner-ci", + "snapshot_index": 4381, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:30dffd0@sha256:becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "sha256": "becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "description": "1 instance changed", + "reported_at": 1778213758.4011989, + "pipeline": "differ-ci", "deployments": [], "flows": [ { - "flow_name": "runner-ci", + "flow_name": "differ-ci", "deployments": null }, { @@ -212,30 +224,42 @@ kosli log environment aws-prod --output=json { "flow_name": "snyk-vulns-aws-beta", "deployments": null + }, + { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "deployments": null + }, + { + "flow_name": "snyk-aws-beta-per-artifact", + "deployments": null + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, "type": "changed", - "code_diff": "https://github.com/cyber-dojo/runner/compare/bcf912346ae0a104698da4560e82d5eb277fc0e9...a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", + "code_diff": "https://github.com/cyber-dojo/differ/compare/c9bbaa1eceb4b8bdffa065ea7034de23d3364919...30dffd09c3f896a322c65029247abcea3019c43a", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/runner-ci/fingerprint/b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", - "html": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039?artifact_id=fe3ed5e5-0ed1-4cb8-8d5a-57d636d7" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/differ-ci/fingerprint/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "html": "https://app.kosli.com/cyber-dojo/flows/differ-ci/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=046919b1-42dd-47f8-8569-912d0259" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4356", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4356" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4381", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4381" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4355, + "snapshot_index": 4381, "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/nginx:b1ce55b@sha256:69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", "sha256": "69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", "description": "1 instance changed", - "reported_at": 1777954498.4239645, + "reported_at": 1778213758.4011989, "pipeline": "nginx-ci", "deployments": [], "flows": [ @@ -254,11 +278,23 @@ kosli log environment aws-prod --output=json { "flow_name": "snyk-vulns-aws-beta", "deployments": null + }, + { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "deployments": null + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "deployments": null + }, + { + "flow_name": "snyk-aws-beta-per-artifact", + "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, - "type": "changed", + "type": "updated-provenance", "code_diff": "https://github.com/cyber-dojo/nginx/compare/c6c81a0f8b1458a62eee956bb16a8b32a37fd0fd...b1ce55beb190397c80d3ba0536f6b97bb5f468f6", "_links": { "artifact": { @@ -266,65 +302,77 @@ kosli log environment aws-prod --output=json "html": "https://app.kosli.com/cyber-dojo/flows/nginx-ci/artifacts/69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d?artifact_id=8a73edbf-8c34-4371-a0a1-001dffd2" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4355", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4355" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4381", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4381" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4355, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:a97ed05@sha256:8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", - "sha256": "8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", + "snapshot_index": 4381, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:a6ece2b@sha256:3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "sha256": "3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "description": "1 instance changed", - "reported_at": 1777954498.4239645, - "pipeline": "languages-start-points-ci", + "reported_at": 1778213758.4011989, + "pipeline": "dashboard-ci", "deployments": [], "flows": [ { - "flow_name": "languages-start-points-ci", + "flow_name": "dashboard-ci", "deployments": null }, { "flow_name": "production-promotion", "deployments": null }, + { + "flow_name": "snyk-vulns-aws-prod", + "deployments": null + }, { "flow_name": "snyk-vulns-aws-beta", "deployments": null }, { - "flow_name": "snyk-vulns-aws-prod", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "deployments": null + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "deployments": null + }, + { + "flow_name": "snyk-aws-beta-per-artifact", "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, "type": "updated-provenance", - "code_diff": "https://github.com/cyber-dojo/languages-start-points/compare/98e8281ec23d94507d02b8d335b2dd8064e2149b...a97ed054e38d484a0015cd658f1d593c03ea2a61", + "code_diff": "https://github.com/cyber-dojo/dashboard/compare/632127a7f162ad1ac02305a2940888264034364b...a6ece2b597888f7ab149759daadda08e3afab0c1", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/languages-start-points-ci/fingerprint/8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", - "html": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e?artifact_id=a62586e6-58ba-4a88-84cf-1d49694f" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/dashboard-ci/fingerprint/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "html": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=1281066d-38ba-432c-92c2-f3d7003e" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4355", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4355" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4381", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4381" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4355, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:30dffd0@sha256:becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", - "sha256": "becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "snapshot_index": 4381, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:cfb0d52@sha256:a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "sha256": "a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "description": "1 instance changed", - "reported_at": 1777954498.4239645, - "pipeline": "differ-ci", + "reported_at": 1778213758.4011989, + "pipeline": "saver-ci", "deployments": [], "flows": [ { - "flow_name": "differ-ci", + "flow_name": "saver-ci", "deployments": null }, { @@ -332,36 +380,36 @@ kosli log environment aws-prod --output=json "deployments": null }, { - "flow_name": "snyk-vulns-aws-beta", + "flow_name": "snyk-aws-beta-per-artifact", "deployments": null }, { - "flow_name": "snyk-vulns-aws-prod", + "flow_name": "snyk-aws-prod-per-artifact", "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, "type": "updated-provenance", - "code_diff": "https://github.com/cyber-dojo/differ/compare/c9bbaa1eceb4b8bdffa065ea7034de23d3364919...30dffd09c3f896a322c65029247abcea3019c43a", + "code_diff": "https://github.com/cyber-dojo/saver/compare/92c0996cd9ae7642eb0769f928abe6cb6c391751...cfb0d52610ab73011f325c4bb5bf0b54fb51031c", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/differ-ci/fingerprint/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", - "html": "https://app.kosli.com/cyber-dojo/flows/differ-ci/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=046919b1-42dd-47f8-8569-912d0259" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/saver-ci/fingerprint/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "html": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed?artifact_id=680cd12d-e9b5-4a2a-8abf-1e75a370" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4355", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4355" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4381", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4381" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4355, + "snapshot_index": 4381, "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:1999d13@sha256:541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "sha256": "541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "description": "3 instances changed", - "reported_at": 1777954498.4239645, + "reported_at": 1778213758.4011989, "pipeline": "web-ci", "deployments": [], "flows": [ @@ -380,6 +428,10 @@ kosli log environment aws-prod --output=json { "flow_name": "snyk-vulns-aws-prod", "deployments": null + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "deployments": null } ], "artifact_compliance": true, @@ -392,113 +444,141 @@ kosli log environment aws-prod --output=json "html": "https://app.kosli.com/cyber-dojo/flows/web-ci/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=359b4539-989d-48f5-88eb-8a553baf" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4355", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4355" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4381", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4381" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4355, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:92c0996@sha256:1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", - "sha256": "1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "snapshot_index": 4381, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:9dd6c65@sha256:cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "sha256": "cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "description": "1 instance changed", - "reported_at": 1777954498.4239645, - "pipeline": "saver-ci", + "reported_at": 1778213758.4011989, + "pipeline": "custom-start-points-ci", "deployments": [], "flows": [ { - "flow_name": "saver-ci", + "flow_name": "custom-start-points-ci", "deployments": null }, { "flow_name": "production-promotion", "deployments": null }, + { + "flow_name": "snyk-vulns-aws-prod", + "deployments": null + }, { "flow_name": "snyk-vulns-aws-beta", "deployments": null }, { - "flow_name": "snyk-vulns-aws-prod", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "deployments": null + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "deployments": null + }, + { + "flow_name": "snyk-aws-beta-per-artifact", "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, "type": "updated-provenance", - "code_diff": "https://github.com/cyber-dojo/saver/compare/0b77a6402320cd10c30cf5bbf6486aa1a448443a...92c0996cd9ae7642eb0769f928abe6cb6c391751", + "code_diff": "https://github.com/cyber-dojo/custom-start-points/compare/8adb92a471e3f5caf65481155d45121a865b67a7...9dd6c657bc443c45c19e81165ff99286e237cfe3", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/saver-ci/fingerprint/1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", - "html": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805?artifact_id=3666aa1b-a19b-4ab5-a625-fa6afa9d" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/custom-start-points-ci/fingerprint/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "html": "https://app.kosli.com/cyber-dojo/flows/custom-start-points-ci/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=f1d404d2-81f9-4f7a-9a01-9742e3e2" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4355", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4355" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4381", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4381" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4355, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:a6ece2b@sha256:3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "sha256": "3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "snapshot_index": 4381, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:db53382@sha256:f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "sha256": "f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "description": "1 instance changed", - "reported_at": 1777954498.4239645, - "pipeline": "dashboard-ci", + "reported_at": 1778213758.4011989, + "pipeline": "languages-start-points-ci", "deployments": [], "flows": [ { - "flow_name": "dashboard-ci", + "flow_name": "languages-start-points-ci", "deployments": null }, { "flow_name": "production-promotion", "deployments": null }, + { + "flow_name": "snyk-vulns-aws-prod", + "deployments": null + }, { "flow_name": "snyk-vulns-aws-beta", "deployments": null }, { - "flow_name": "snyk-vulns-aws-prod", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "deployments": null + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "deployments": null + }, + { + "flow_name": "snyk-aws-beta-per-artifact", "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, "type": "updated-provenance", - "code_diff": "https://github.com/cyber-dojo/dashboard/compare/632127a7f162ad1ac02305a2940888264034364b...a6ece2b597888f7ab149759daadda08e3afab0c1", + "code_diff": "https://github.com/cyber-dojo/languages-start-points/compare/1a191ad636b6d1d2215e3726ad307f48f58843b6...db53382650db8b7b3f216d0055009b0d77685677", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/dashboard-ci/fingerprint/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "html": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=1281066d-38ba-432c-92c2-f3d7003e" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/languages-start-points-ci/fingerprint/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "html": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=cc5da9c3-89bd-4ac1-a5ed-8885517d" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4355", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4355" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4381", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4381" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4355, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:447231c@sha256:691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", - "sha256": "691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "snapshot_index": 4381, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:65fd2bf@sha256:ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", + "sha256": "ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", "description": "1 instance changed", - "reported_at": 1777954498.4239645, - "pipeline": "exercises-start-points-ci", + "reported_at": 1778213758.4011989, + "pipeline": "creator-ci", "deployments": [], "flows": [ { - "flow_name": "exercises-start-points-ci", + "flow_name": "creator-ci", "deployments": null }, { "flow_name": "production-promotion", "deployments": null }, + { + "flow_name": "snyk-vulns-archived-at-1776759327", + "deployments": null + }, { "flow_name": "snyk-vulns-aws-beta", "deployments": null @@ -506,35 +586,39 @@ kosli log environment aws-prod --output=json { "flow_name": "snyk-vulns-aws-prod", "deployments": null + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, - "type": "updated-provenance", - "code_diff": "https://github.com/cyber-dojo/exercises-start-points/compare/83ea563b423559eaf750dd680fc2329e59f60e3b...447231c2018bc0690735b4ee110ca46431162fd5", + "type": "changed", + "code_diff": "https://gitlab.com/cyber-dojo/creator/-/compare/f89742ee5f0477a7c729bfdeadc84dcbd70492b2...65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/exercises-start-points-ci/fingerprint/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", - "html": "https://app.kosli.com/cyber-dojo/flows/exercises-start-points-ci/artifacts/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac?artifact_id=98831c77-04a8-4427-9cf8-03950550" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/creator-ci/fingerprint/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", + "html": "https://app.kosli.com/cyber-dojo/flows/creator-ci/artifacts/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f?artifact_id=c5d209a3-9139-4f5b-a553-c6351091" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4355", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4355" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4381", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4381" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4354, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:92c0996@sha256:1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", - "sha256": "1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", - "description": "1 instance changed", - "reported_at": 1777954438.5998223, - "pipeline": "saver-ci", + "snapshot_index": 4380, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:a2ffba5@sha256:b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "sha256": "b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "description": "3 instances stopped running (from 3 to 0)", + "reported_at": 1778178538.4365702, + "pipeline": "runner-ci", "deployments": [], "flows": [ { - "flow_name": "saver-ci", + "flow_name": "runner-ci", "deployments": null }, { @@ -548,77 +632,81 @@ kosli log environment aws-prod --output=json { "flow_name": "snyk-vulns-aws-beta", "deployments": null + }, + { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "deployments": null + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "deployments": null + }, + { + "flow_name": "snyk-aws-beta-per-artifact", + "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, - "type": "updated-provenance", - "code_diff": "https://github.com/cyber-dojo/saver/compare/0b77a6402320cd10c30cf5bbf6486aa1a448443a...92c0996cd9ae7642eb0769f928abe6cb6c391751", + "type": "exited", + "code_diff": "https://github.com/cyber-dojo/runner/compare/bcf912346ae0a104698da4560e82d5eb277fc0e9...a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/saver-ci/fingerprint/1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", - "html": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805?artifact_id=3666aa1b-a19b-4ab5-a625-fa6afa9d" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/runner-ci/fingerprint/b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "html": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039?artifact_id=fe3ed5e5-0ed1-4cb8-8d5a-57d636d7" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4354", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4354" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4380", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4380" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4354, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:a97ed05@sha256:8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", - "sha256": "8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", - "description": "1 instance changed", - "reported_at": 1777954438.5998223, - "pipeline": "languages-start-points-ci", + "snapshot_index": 4380, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:8768460@sha256:2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "sha256": "2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "description": "3 instances started running (from 0 to 3)", + "reported_at": 1778178538.4365702, + "pipeline": "runner-ci", "deployments": [], "flows": [ { - "flow_name": "languages-start-points-ci", + "flow_name": "runner-ci", "deployments": null }, { "flow_name": "production-promotion", "deployments": null - }, - { - "flow_name": "snyk-vulns-aws-prod", - "deployments": null - }, - { - "flow_name": "snyk-vulns-aws-beta", - "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, - "type": "updated-provenance", - "code_diff": "https://github.com/cyber-dojo/languages-start-points/compare/98e8281ec23d94507d02b8d335b2dd8064e2149b...a97ed054e38d484a0015cd658f1d593c03ea2a61", + "type": "started-compliant", + "code_diff": "https://github.com/cyber-dojo/runner/compare/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e...8768460dc1c91de5f6485a7d3e36870b683edfc3", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/languages-start-points-ci/fingerprint/8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e", - "html": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/8ba20a0fbdc3d234fb0dac28a9865b6ee719906d06229f9f15b2078a3f6f332e?artifact_id=a62586e6-58ba-4a88-84cf-1d49694f" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/runner-ci/fingerprint/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "html": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=4d69a029-0ed8-4ead-b1f5-f6e36c52" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4354", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4354" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4380", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4380" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4354, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:a6ece2b@sha256:3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "sha256": "3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "description": "1 instance changed", - "reported_at": 1777954438.5998223, - "pipeline": "dashboard-ci", + "snapshot_index": 4379, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:92c0996@sha256:1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "sha256": "1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "description": "1 instance stopped running (from 1 to 0)", + "reported_at": 1778158918.5020123, + "pipeline": "saver-ci", "deployments": [], "flows": [ { - "flow_name": "dashboard-ci", + "flow_name": "saver-ci", "deployments": null }, { @@ -632,62 +720,66 @@ kosli log environment aws-prod --output=json { "flow_name": "snyk-vulns-aws-beta", "deployments": null + }, + { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "deployments": null + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "deployments": null + }, + { + "flow_name": "snyk-aws-beta-per-artifact", + "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, - "type": "changed", - "code_diff": "https://github.com/cyber-dojo/dashboard/compare/632127a7f162ad1ac02305a2940888264034364b...a6ece2b597888f7ab149759daadda08e3afab0c1", + "type": "exited", + "code_diff": "https://github.com/cyber-dojo/saver/compare/0b77a6402320cd10c30cf5bbf6486aa1a448443a...92c0996cd9ae7642eb0769f928abe6cb6c391751", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/dashboard-ci/fingerprint/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "html": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=1281066d-38ba-432c-92c2-f3d7003e" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/saver-ci/fingerprint/1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "html": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805?artifact_id=3666aa1b-a19b-4ab5-a625-fa6afa9d" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4354", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4354" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4379", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4379" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4354, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:447231c@sha256:691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", - "sha256": "691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", - "description": "1 instance changed", - "reported_at": 1777954438.5998223, - "pipeline": "exercises-start-points-ci", + "snapshot_index": 4378, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:cfb0d52@sha256:a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "sha256": "a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "description": "1 instance started running (from 0 to 1)", + "reported_at": 1778158858.590836, + "pipeline": "saver-ci", "deployments": [], "flows": [ { - "flow_name": "exercises-start-points-ci", + "flow_name": "saver-ci", "deployments": null }, { "flow_name": "production-promotion", "deployments": null - }, - { - "flow_name": "snyk-vulns-aws-prod", - "deployments": null - }, - { - "flow_name": "snyk-vulns-aws-beta", - "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, - "type": "updated-provenance", - "code_diff": "https://github.com/cyber-dojo/exercises-start-points/compare/83ea563b423559eaf750dd680fc2329e59f60e3b...447231c2018bc0690735b4ee110ca46431162fd5", + "type": "started-compliant", + "code_diff": "https://github.com/cyber-dojo/saver/compare/92c0996cd9ae7642eb0769f928abe6cb6c391751...cfb0d52610ab73011f325c4bb5bf0b54fb51031c", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/exercises-start-points-ci/fingerprint/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", - "html": "https://app.kosli.com/cyber-dojo/flows/exercises-start-points-ci/artifacts/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac?artifact_id=98831c77-04a8-4427-9cf8-03950550" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/saver-ci/fingerprint/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "html": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed?artifact_id=680cd12d-e9b5-4a2a-8abf-1e75a370" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4354", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4354" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4378", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4378" } } } diff --git a/client_reference/kosli_rename_environment.md b/client_reference/kosli_rename_environment.md index 9988a94..5127f3b 100644 --- a/client_reference/kosli_rename_environment.md +++ b/client_reference/kosli_rename_environment.md @@ -29,7 +29,7 @@ The environment will remain accessible under its old name until that name is tak | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_rename_flow.md b/client_reference/kosli_rename_flow.md index 8ba2cea..5f5b682 100644 --- a/client_reference/kosli_rename_flow.md +++ b/client_reference/kosli_rename_flow.md @@ -29,7 +29,7 @@ The flow will remain accessible under its old name until that name is taken by a | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_report_approval.md b/client_reference/kosli_report_approval.md index 9f449e4..2b5f868 100644 --- a/client_reference/kosli_report_approval.md +++ b/client_reference/kosli_report_approval.md @@ -54,7 +54,7 @@ registry without needing a local Docker daemon. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_report_artifact.md b/client_reference/kosli_report_artifact.md index 0f86323..aa532f1 100644 --- a/client_reference/kosli_report_artifact.md +++ b/client_reference/kosli_report_artifact.md @@ -55,7 +55,7 @@ registry without needing a local Docker daemon. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_request_approval.md b/client_reference/kosli_request_approval.md index 6a80ff1..fd432ed 100644 --- a/client_reference/kosli_request_approval.md +++ b/client_reference/kosli_request_approval.md @@ -54,7 +54,7 @@ registry without needing a local Docker daemon. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_search.md b/client_reference/kosli_search.md index 2f8360e..8ae4c26 100644 --- a/client_reference/kosli_search.md +++ b/client_reference/kosli_search.md @@ -28,7 +28,7 @@ You can use short git commit or artifact fingerprint shas, but you must provide | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_snapshot_azure.md b/client_reference/kosli_snapshot_azure.md index 3cebbd7..fcf6fd1 100644 --- a/client_reference/kosli_snapshot_azure.md +++ b/client_reference/kosli_snapshot_azure.md @@ -50,7 +50,7 @@ The service principal needs to have the following permissions: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_snapshot_docker.md b/client_reference/kosli_snapshot_docker.md index 9c2d220..b58e827 100644 --- a/client_reference/kosli_snapshot_docker.md +++ b/client_reference/kosli_snapshot_docker.md @@ -30,7 +30,7 @@ been pushed to or pulled from a registry will be ignored. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_snapshot_ecs.md b/client_reference/kosli_snapshot_ecs.md index 93675dd..5fdfcb9 100644 --- a/client_reference/kosli_snapshot_ecs.md +++ b/client_reference/kosli_snapshot_ecs.md @@ -56,7 +56,7 @@ More details can be found here: https://aws.github.io/aws-sdk-go-v2/docs/configu | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_snapshot_k8s.md b/client_reference/kosli_snapshot_k8s.md index 84c2ffc..f87ea08 100644 --- a/client_reference/kosli_snapshot_k8s.md +++ b/client_reference/kosli_snapshot_k8s.md @@ -35,7 +35,7 @@ to include or exclude namespaces. | -a, --api-token string | The Kosli API token. | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_snapshot_lambda.md b/client_reference/kosli_snapshot_lambda.md index d53af50..8a743e5 100644 --- a/client_reference/kosli_snapshot_lambda.md +++ b/client_reference/kosli_snapshot_lambda.md @@ -44,7 +44,7 @@ More details can be found here: https://aws.github.io/aws-sdk-go-v2/docs/configu | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_snapshot_path.md b/client_reference/kosli_snapshot_path.md index 0eb088d..4a4adf4 100644 --- a/client_reference/kosli_snapshot_path.md +++ b/client_reference/kosli_snapshot_path.md @@ -39,7 +39,7 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file, | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_snapshot_paths.md b/client_reference/kosli_snapshot_paths.md index 6bae5a9..9e6600d 100644 --- a/client_reference/kosli_snapshot_paths.md +++ b/client_reference/kosli_snapshot_paths.md @@ -52,7 +52,7 @@ artifacts: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_snapshot_s3.md b/client_reference/kosli_snapshot_s3.md index de5b339..0a0a2db 100644 --- a/client_reference/kosli_snapshot_s3.md +++ b/client_reference/kosli_snapshot_s3.md @@ -48,7 +48,7 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file, | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_snapshot_server.md b/client_reference/kosli_snapshot_server.md index 011bd9f..89a3e45 100644 --- a/client_reference/kosli_snapshot_server.md +++ b/client_reference/kosli_snapshot_server.md @@ -59,7 +59,7 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file, | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_status.md b/client_reference/kosli_status.md index 0fed951..92aa9d5 100644 --- a/client_reference/kosli_status.md +++ b/client_reference/kosli_status.md @@ -29,7 +29,7 @@ If you like to assert the Kosli server status, you can use the `--assert` flag o | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_tag.md b/client_reference/kosli_tag.md index 03765d0..47c172f 100644 --- a/client_reference/kosli_tag.md +++ b/client_reference/kosli_tag.md @@ -31,7 +31,7 @@ use --set to add or update tags, and --unset to remove tags. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -42,7 +42,7 @@ use --set to add or update tags, and --unset to remove tags. View an example of the `kosli tag` command in GitHub. - In [this YAML file](https://github.com/cyber-dojo/aws-prod-co-promotion/blob/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa/.github/workflows/promote_one.yml#L74) + In [this YAML file](https://github.com/cyber-dojo/aws-prod-co-promotion/blob/1085da6ce837c6ebc77dda1e23b5de4e3c33380f/.github/workflows/promote_one.yml#L73) View an example of the `kosli tag` command in GitLab. diff --git a/client_reference/kosli_version.md b/client_reference/kosli_version.md index 7b43215..c43a9cf 100644 --- a/client_reference/kosli_version.md +++ b/client_reference/kosli_version.md @@ -36,7 +36,7 @@ version.BuildInfo\{Version:"v0.0.1", GitCommit:"fe51cd1e31e6a202cba7dead9552a6d4 | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. 'http://proxy-server-ip:proxy-port' | +| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/overview.md b/client_reference/overview.md index 00e646b..c1dd0ca 100644 --- a/client_reference/overview.md +++ b/client_reference/overview.md @@ -4,7 +4,7 @@ description: "Reference documentation for the Kosli CLI." --- - This reference was generated from Kosli CLI **v2.17.5**. + This reference was generated from Kosli CLI **v2.17.7**. The Kosli CLI allows you to interact with Kosli from your terminal and CI/CD pipelines. diff --git a/helm/k8s_reporter.mdx b/helm/k8s_reporter.mdx index 813f532..ec829d1 100644 --- a/helm/k8s_reporter.mdx +++ b/helm/k8s_reporter.mdx @@ -9,7 +9,7 @@ description: A Helm chart for installing the Kosli K8S reporter as a cronjob. This reference applies to **chart version 2.2.1**, which defaults to CLI **v2.12.0** via `appVersion`. Override with `image.tag`. -A Helm chart for installing the Kosli K8S reporter as a cronjob. +A Helm chart for installing the Kosli K8S reporter as a CronJob. The chart allows you to create a Kubernetes cronjob and all its necessary RBAC to report running images to Kosli at a given cron schedule. Configuration is done via **reporterConfig.environments**: a list of Kosli environments to report to. Each entry has a required `name` and optional namespace selectors. Use one entry for a single environment, or multiple entries to report to different environments with different selectors. @@ -29,67 +29,61 @@ Version 2.0.0 removes the previous single-environment mode (`kosliEnvironmentNam To install this chart via the Helm chart repository: - - - ```shell - helm repo add kosli https://charts.kosli.com/ && helm repo update - ``` - - - ```shell - kubectl create secret generic kosli-api-token --from-literal=key= - ``` - - - Configure **reporterConfig.environments** (required). Each entry has required `name` and optional `namespaces`, `namespacesRegex`, `excludeNamespaces`, `excludeNamespacesRegex`. Omit namespace fields for an entry to report the entire cluster to that environment. - - **One environment, entire cluster:** - - ```yaml - # values.yaml - reporterConfig: - kosliOrg: - environments: - - name: - ``` - - **One environment, specific namespaces:** - - ```yaml - reporterConfig: - kosliOrg: - environments: - - name: - namespaces: [namespace1, namespace2] - ``` - - **Multiple environments with different selectors:** - - ```yaml - reporterConfig: - kosliOrg: - environments: - - name: prod-env - namespaces: [prod-ns1, prod-ns2] - - name: staging-env - namespacesRegex: ["^staging-.*"] - - name: infra-env - excludeNamespaces: [prod-ns1, prod-ns2, default] - ``` - - ```shell - helm install kosli-reporter kosli/k8s-reporter -f values.yaml - ``` - - - - -Chart source can be found at [GitHub](https://github.com/kosli-dev/cli/tree/main/charts/k8s-reporter). - +1. Add the Kosli helm repo +```shell +helm repo add kosli https://charts.kosli.com/ && helm repo update +``` - -See all available [configuration options](#configurations) below. - +2. Create a secret for the Kosli API token +```shell +kubectl create secret generic kosli-api-token --from-literal=key= +``` + +3. Install the helm chart + +Configure **reporterConfig.environments** (required). Each entry has required `name` and optional `namespaces`, `namespacesRegex`, `excludeNamespaces`, `excludeNamespacesRegex`. Omit namespace fields for an entry to report the entire cluster to that environment. + +**One environment, entire cluster:** + +```yaml +# values.yaml +reporterConfig: + kosliOrg: + environments: + - name: +``` + +**One environment, specific namespaces:** + +```yaml +reporterConfig: + kosliOrg: + environments: + - name: + namespaces: [namespace1, namespace2] +``` + +**Multiple environments with different selectors:** + +```yaml +reporterConfig: + kosliOrg: + environments: + - name: prod-env + namespaces: [prod-ns1, prod-ns2] + - name: staging-env + namespacesRegex: ["^staging-.*"] + - name: infra-env + excludeNamespaces: [prod-ns1, prod-ns2, default] +``` + +```shell +helm install kosli-reporter kosli/k8s-reporter -f values.yaml +``` + +> Chart source can be found at https://github.com/kosli-dev/cli/tree/main/charts/k8s-reporter + +> See all available [configuration options](#configurations) below. ## Upgrading the chart @@ -111,29 +105,28 @@ If your network sits behind a TLS-inspecting appliance (Zscaler, Netskope, Palo The chart offers two ways to do this. Use whichever fits your deployment flow. -### Option 1 — customCA convenience wrapper (recommended for the common case) - - - - ```shell - kubectl create secret generic corporate-ca-bundle --from-file=ca.crt=/path/to/corporate-ca.crt - ``` - - - ```yaml - customCA: - enabled: true - secretName: corporate-ca-bundle - key: ca.crt - ``` +### Option 1 — `customCA` convenience wrapper (recommended for the common case) - The chart mounts the certificate as a single file at `/etc/ssl/certs/kosli-custom-ca.crt` using `subPath`. Go's standard library on Linux loads CA roots in two independent passes — it reads the system bundle file (e.g. `/etc/ssl/certs/ca-certificates.crt`) and **also** scans `/etc/ssl/certs/` for additional certificate files. The mounted file is picked up by the directory scan and added to the trust store alongside the system roots, so no `SSL_CERT_FILE` env var is needed. +1. Create a Secret containing the corporate CA certificate (PEM format, single cert or bundle): - The wrapper deliberately does **not** set `SSL_CERT_FILE`. Setting it would replace the system bundle entirely with the customer's file, breaking trust for any public CAs the bundle does not include. - - +```shell +kubectl create secret generic corporate-ca-bundle --from-file=ca.crt=/path/to/corporate-ca.crt +``` -### Option 2 — generic extraVolumes / extraVolumeMounts / extraEnvVars +2. Enable the wrapper in `values.yaml`: + +```yaml +customCA: + enabled: true + secretName: corporate-ca-bundle + key: ca.crt +``` + +The chart mounts the certificate as a single file at `/etc/ssl/certs/kosli-custom-ca.crt` using `subPath`. Go's standard library on Linux loads CA roots in two independent passes — it reads the system bundle file (e.g. `/etc/ssl/certs/ca-certificates.crt`) and **also** scans `/etc/ssl/certs/` for additional certificate files. The mounted file is picked up by the directory scan and added to the trust store alongside the system roots, so no `SSL_CERT_FILE` env var is needed. + +The wrapper deliberately does **not** set `SSL_CERT_FILE`. Setting it would replace the system bundle entirely with the customer's file, breaking trust for any public CAs the bundle does not include. + +### Option 2 — generic `extraVolumes` / `extraVolumeMounts` / `extraEnvVars` Use these when you need a non-default mount path, a ConfigMap instead of a Secret, multiple volumes, or any other shape the wrapper does not cover: @@ -149,9 +142,7 @@ extraVolumeMounts: readOnly: true ``` - -If you mount the CA outside `/etc/ssl/certs/` and set `SSL_CERT_FILE` via `extraEnvVars`, your bundle must include the public CAs you also need to trust — Go uses only that file when `SSL_CERT_FILE` is set. - +Note: if you mount the CA outside `/etc/ssl/certs/` and set `SSL_CERT_FILE` via `extraEnvVars`, your bundle must include the public CAs you also need to trust — Go uses only that file when `SSL_CERT_FILE` is set. ### Pod Security Standards @@ -165,184 +156,168 @@ If you already run [cert-manager's trust-manager](https://cert-manager.io/docs/t ### General - - The cron schedule at which the reporter is triggered to report to Kosli. + + specifies how to treat concurrent executions of a Job that is created by this CronJob - - Specifies how to treat concurrent executions of a Job that is created by this CronJob. + + the cron schedule at which the reporter is triggered to report to Kosli - Specifies the number of failed finished jobs to keep. + specifies the number of failed finished jobs to keep - - Specifies the number of successful finished jobs to keep. + + overrides the fullname used for the created k8s resources. It has higher precedence than `nameOverride` - Overrides the name used for the created k8s resources. If `fullnameOverride` is provided, it has higher precedence than this one. - - - - Overrides the fullname used for the created k8s resources. It has higher precedence than `nameOverride`. + overrides the name used for the created k8s resources. If `fullnameOverride` is provided, it has higher precedence than this one - Any custom annotations to be added to the cronjob. + any custom annotations to be added to the cronjob - Custom labels to add to pods. + custom labels to add to pods + + + + specifies the number of successful finished jobs to keep ### Image - - The kosli reporter image repository. + + the kosli reporter image pull policy - - The kosli reporter image tag. Defaults to the chart `appVersion` when left empty. + + the kosli reporter image repository - - The kosli reporter image pull policy. + + the kosli reporter image tag, overrides the image tag whose default is the chart appVersion. ### Reporter configuration - - The name of the Kosli org. + + whether the dry run mode is enabled or not. In dry run mode, the reporter logs the reports to stdout and does not send them to kosli. - List of Kosli environments to report to. Each entry has required `name` and optional namespace selectors. Use one entry to report a single environment; use multiple entries to report to multiple environments with different selectors. Per entry: `name` (required), `namespaces`, `namespacesRegex`, `excludeNamespaces`, `excludeNamespacesRegex` (optional). Leave namespace fields unset for an entry to report the entire cluster to that environment. + List of Kosli environments to report to. Each entry has required 'name' and optional namespace selectors. Use one entry to report a single environment; use multiple entries to report to multiple environments with different selectors. Per entry: name (required), namespaces, namespacesRegex, excludeNamespaces, excludeNamespacesRegex (optional). Leave namespace fields unset for an entry to report the entire cluster to that environment. - - Whether the dry run mode is enabled or not. In dry run mode, the reporter logs the reports to stdout and does not send them to Kosli. + + the http proxy url - - The http proxy url. + + the name of the Kosli org - The security context for the reporter cronjob. Set to null or `{}` to disable security context entirely (not recommended). For OpenShift with SCC, explicitly set `runAsUser: null` to let OpenShift assign the UID from the allowed range. Simply omitting `runAsUser` from your values override will not work because Helm deep-merges with the chart defaults. - - Default: - ```json - { - "allowPrivilegeEscalation": false, - "runAsNonRoot": true, - "runAsUser": 1000 - } - ``` + the security context for the reporter cronjob. Set to null or {} to disable security context entirely (not recommended). For OpenShift with SCC, explicitly set runAsUser to null to let OpenShift assign the UID from the allowed range. Simply omitting runAsUser from your values override will not work because Helm deep-merges with these defaults. Example OpenShift override: securityContext: allowPrivilegeEscalation: false runAsNonRoot: true runAsUser: null - Whether to allow privilege escalation. + whether to allow privilege escalation - Whether to run as non root. + whether to run as non root - The user id to run as. For OpenShift environments with SCC, set to `null` (`runAsUser: null`) to allow automatic UID assignment. Simply omitting this field will not work due to Helm's deep merge with chart defaults. + the user id to run as. For OpenShift environments with SCC, set to null (runAsUser: null) to allow automatic UID assignment. Simply omitting this field will not work due to Helm's deep merge with chart defaults. ### Kosli API token - - The name of the secret containing the Kosli API token. + + the name of the key in the secret data which contains the Kosli API token - - The name of the key in the secret data which contains the Kosli API token. + + the name of the secret containing the kosli API token ### Environment variables - Map of plain environment variables to inject into the reporter container. For a single-tenant Kosli instance, set `KOSLI_HOST` to `https://.kosli.com`. + map of plain environment variables to inject into the reporter container. For a single-tenant Kosli instance, set `KOSLI_HOST` to `https://.kosli.com`. - Additional environment variables to inject into the reporter container. List of name/value or name/valueFrom entries, rendered verbatim into the container env. Supports plain values and valueFrom (secretKeyRef / configMapKeyRef). Entries here are appended after the chart's own env entries; on duplicate names the later entry wins. + additional environment variables to inject into the reporter container. List of {name, value} or {name, valueFrom} entries, rendered verbatim into the container env. Supports plain values and valueFrom (secretKeyRef / configMapKeyRef). Note: entries here are appended after the chart's own env entries; on duplicate names the later entry wins. ### Volumes - - Additional Pod-level volumes to attach to the reporter pod. Rendered verbatim into the Pod spec alongside the chart's own volumes. Use together with `extraVolumeMounts` to mount Secrets, ConfigMaps, or other volumes into the container. + + additional container-level volumeMounts for the reporter container. Rendered verbatim into the container spec alongside the chart's own mounts. - - Additional container-level volumeMounts for the reporter container. Rendered verbatim into the container spec alongside the chart's own mounts. + + additional Pod-level volumes to attach to the reporter pod. Rendered verbatim into the Pod spec alongside the chart's own volumes. Use together with `extraVolumeMounts` to mount Secrets, ConfigMaps, or other volumes into the container. ### Custom CA - Convenience wrapper for mounting a corporate / custom CA bundle. See the [Running behind a TLS-inspecting proxy](#running-behind-a-tls-inspecting-proxy-corporate--custom-ca-bundle) section for usage. - - Default: - ```json - { - "enabled": false, - "key": "ca.crt", - "secretName": "" - } - ``` + convenience wrapper for mounting a corporate / custom CA bundle. See the "Running behind a TLS-inspecting proxy" section of the README for usage. - Enable mounting a corporate/custom CA bundle into the trust store. + enable mounting a corporate/custom CA bundle into the trust store - - Name of an existing Secret in the same namespace containing the CA bundle. + + key within the Secret that holds the PEM-formatted CA certificate (single cert or multi-cert PEM bundle) - - Key within the Secret that holds the PEM-formatted CA certificate (single cert or multi-cert PEM bundle). + + name of an existing Secret in the same namespace containing the CA bundle ### Resources - The cpu limit. + the cpu limit - The memory limit. + the memory limit - The memory request. + the memory request ### Service account - - Specifies whether a service account should be created. + + annotations to add to the service account - - Annotations to add to the service account. + + specifies whether a service account should be created - The name of the service account to use. If not set and create is true, a name is generated using the fullname template. + the name of the service account to use. If not set and create is true, a name is generated using the fullname template - Specifies whether to create a cluster-wide permissions for the service account or namespace-scoped permissions. Allowed values are: `cluster`, `namespace`. + specifies whether to create a cluster-wide permissions for the service account or namespace-scoped permissions. allowed values are: [cluster, namespace] --- +---------------------------------------------- Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2) + diff --git a/scripts/__pycache__/live_docs_fetch.cpython-314.pyc b/scripts/__pycache__/live_docs_fetch.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f9b8ff5a511127c6fd2b2a8e97007db620db7157 GIT binary patch literal 9370 zcmd5iT}<29ns(yENenm;C~cvGDFvD`C56&oXbV%?f&NhHVM715k((HBCnTxul#)Ah zHxKhb??|_udsiB+w9>NLhwYViB_4UKwENIUH%TWMUq(~uR@!|W+SO`bR@(0z$Bsjx z-Knltdqj?pea`vL&-ed*^wib*2q-^h{#)|yA&5Vt7qd|1#v6(xh%CVqDsh|O$#GI8 z@zbF?;OQ85j!`PrhWec2t}(aj#%*$(R%txWqk4Es_3|#&_g7RqK;YfS03s?p-AoJ^ zO+sbf>h;)qYu@Vh+InkI?`=C|pRKo!XPOC>^nedFTESt-iRBxNox z-4_qWl2N7C=i@~s9amw3EOPVWd{WAYF-}SxOv%Zps3@G8Y=|oIOs2pA} zD#YUow;-u=Qi2mWMM})ZMNUp9dVLc?QuoH?bR;T7=R|mMr36_KGp%!~no>@NLP9Fl z`$bZTOTE$LJiJMv`~7;)&Oe^zu!|H%2j9p#0msq%W zm%nm&1Ypwh!UF|18+DeEg&r>W!8`S44H{YE7W#(Eq{D1gp6$dm8Fmbm=ck;vOzI*g z-IY;htDOit2g)>(qQcaq$Ly&*Z$CS}KoBv2*h=&g9R!TRv|Jg1T9dWa@92#uP1t}_ zN9M+Pj81h9Zd6#{7LxK8Gx6jCcYWmYC5%D1w|PKuC@OJ+%Aq$&jVN;h#=9)4X*t13 zDklJ50o#hoC1>E75S3n?^aW{sCnA9eB7w+!GA7MPqO3$>f-2}WuwZ0Sn2$%&a$NVw z;=Qz}sEY2K6;+*4R6$KEk!Ug|>Xa%zP<5A*ic4zHrPJj->5izR`zl+~on=5u3J6nF z5RSUKx;Rch8k$Saiy@$ygeZs5Awy_KMx{h$DWxi*%0@AX_ofzgAKo55j@$&$>fxtc zf+|b=hnrwJioQ_J7h0v)ZsdJq*|Y0x^P?|+^X2l{Jj-RrN;F%fTb|P`%SwUXTVm^% zyd@^^=+whgMdqXD%ty;=p4q2S``!RNB5Efai@5$B3!gB_lgF@Pjltr`>ZWS!ZnJVD6P z=+ylV-oty3nRnshePI{e1@r&rE@~=wfo?Nco4LRn{Dio1?A*v`nccY0#zrtNVlEX^ zNyK9nzWkU2K|7I5h#ZLC89|DtWwBRx&w{{A-^uK+h(f8?_=aVn3~-cCbn%WTgMhx9 z3}tFV1}iBcwDyGV1TM#5;=-K_V;iXxAQdS^m=QA_CUk%d!zxmCAOvFlt{4Tr%Ipl` z#UwQ;FIKIgJEU09BP02yd(oIkLYNn2B*|n%Su#SjPTf_K2^k4b-E}XWRK=iMW>K#n z_o8`n19}gjcUnv!nGsWvWJS!+adIQ-@M8r9vS>~eVn~9?9q_pYe##4|vc%7B!sA=I z_VusV+3q6Smt*@@yYuYnC932$~)j>RiXuH9=J;C&DZ$MJQ*f{ zDI8%E7=}tY-X~l@i%Gx1Ik63(pzfhi<_?5WK8vJR4gcDW0mU76r! zn>xWbXzKY^?GBoi=Y7@E1ZE&C< zrF)SY#Pq29@Kl2~EkaY!*%5si)Wu+(5y2znAaosqpE3d!Cal__wehvVr@}Me(=RpO z)Vo#14{V^UD84zPQM(N!0wk*-Ucg9v01Yrs$<%wbLYS}+M~2DwBF+JbBj1BKXXaA_ zamWHJV+Ua+E~uc#IblITrd^Cv5<*IuOR5;PTMDbp$U8A-0;ocs2|hIZt3-0)s|mRa z?jq=@NCE{(eiJ=AA_jhpy+urjau19-2|wisR2Wmt1o;8jDKiBC0p5Zi#?Eh{0j8nV zXA*r1FfaonS^;zDo_WW|yU|3W_=)q~1d#&G%{w=JZ-(!{c06VO9wv|$oyG7jf(Q&d z(~dR*{W=IQ@ey$ms1ZG}5%0=evFR9W>4^zdUc~CfqIiS<-i1pGjlC1PSCCa{MgUQ- zyATLPhW&$zz?U1O@SE;2uUz+-!*vReM%RVJw82NscoR}0vKdqTFl-cl$^=wd;uYJO zXS=bHm7|*x$27Js-z+u;wZe_G;O$RnSM2-J#DTz!MjKco}Ho;0|>2&iw(jS zmcJc>#nR5p4iExB8Wv1wRGErfcn5Y!);v(Vtw2K6B$=Wv*Wa>yiOLC(cVZB77zD;G zq?C;lAUhcs@OvoJ@40QA97y~kK`a1+%He7E2^d)>UsxmTo01Um!OZJ<}=6_u&@i!~_P8To4X%05a(eYmAEu zi3AAGJK&%p5Bt6t1HV`Ifx!jN5%R`#vLjey7*Xsd$T~YGD27ssi1!hvBQ`QPvK<>- zF-Zm^Exrh_WPlHjQw$~~BWM%YK+?TpA`M0v2zBfN>F&6qg2SZyz(bQ&1^MNA9deOk z)`5bw%|LS-dy@Om%7`#@GNDu0r=sD_Fwx4~?=js$c^JAT;ivoyRN!s-h`O#~?U7vV zk=5CJ?I+puujsZS9m>(*eHH1U96hwob``qM6uZZB-Q&-?^WEV*JN=M)$p)6Ff1{a# ze}B<`A?LsF>{!u1o%2tZnszOJ{GzG*q3=~w=gMrpsej2=Vw!Tyo>E}f(&bly*1x^+ zgkHUo-!uHQ{rkY^LwboUF%7>xvoi3HgMUBx52uP9gU>q#*UlC@h6^3T>w%tP;AAdv za_!hNG9L)%YQh^XqVXL0Gf0?*?B%y*46;wLj2ZnukTC{-VJ?Mbjk0y@!N%RrTV8W) zbwtACvkKHO#glfWlycod20Sj)M@)&Aa);eEd0|PEu)A8`fU#n_ZFHD6SBrr+04fut z99XOrcII4R8thg#C{e_*?#wq^aqPSR0V~9gm;*4^+M`1DC;37Xuud&Zm(DG#tEwiY%vWYS1 zybC{N1uBb2kLGHRt}f(j&jOD^goHVqW5AgyGQ&A$xWqOs)xJWk*q`(FuO7?$&t%8f znY}9~^31{P=uZrbN4%_WdK`aI-;uqrUf;TWJzsw~d!alsuR*lOS?!6>6lw_C(&Q@~|~w$rr73|kC2M4(u%TV#qan={bFNimSn z(##^FRjg`|#I7Pw&^QJ?Vfzb|iXw903nBe5lZ2RQZ>AncJ3(8_!dUE$Wc-4P3~~X5 zW+PJURNwia1BKh}LnKa&>8%lyLAD|tO8x|niRnjo;kD&Y;X}3eBcDTKQ1vzHL&TXS zUea}1LuY~R{DEy>uiv%Y^?iN&l54&B@anmI^Vy}EpP1%{L#04luBL5+CK~o4Q>^}N zF-ZY1EGF-RNU&kaFq&)_;vFU)EP(+61`7-j7k1%DjPR}z)7j)7>n$yBBhSm9WUNe#XP|9J5W2&X}vVK=d=URV7g(_pZ- zIWw6MWQdESN2cZAC~ou$2_e3yNQ#m8z?R&md3VzZFdJR?k!h>~IV(bhT#D+n*{DgS zL*&;KVV@C1#C#PO?p3wH4)B=NA%^(k_ywmY9r(TtH{ox3 zhZ6WNz!4|`V$u>h@S$8Fw`!>X2%nI=6N>>*^R2{m`*E;Vu)wGA*R$Bqb?}DxAHr{2 zLj~K^6dRC4vDALpmc=vs2T4oyK%B6ZXxk?G$+1F{F%3=5Dpg|w=T`Z+}Xy^uqL$AmlumnDax()U<=X&VfT4$*YPwpCUGnwy~w zHa!U;9c0_U{@rfBIF8GSssM1(23YgXN-+R&`b~kQ8g{Z@r!&Dx;L2*)9^_~ z)jy-YEL6aP5E&1C8(coWGMaA)W-pfL25m=wf$lG{yPuas>J5+Q3iL-SgIfR9LdVro z3-@;?{%}I;Jhs-DZ#k`bcCNF#wA}~(3DR+gitJ4d{*Ih09+`Z8WKz3&BY)(k=DAs7 z{EtpNJfSspKWWS}y{kRXnNu2d${;~Iky-BAJ}e<@frYZG0=u>fq;PHVR@+$08e%nI ztd)`lyArK~3phEDGzMD*}eQUX(EAAzE0;iy;dqMDmoC{X%KvEpla5!Fm^1 zyeOq&tb+pGn+mK$OL7%>(lI2Bu98`8W89js4Tsf%*G0Kz_NeK|yU?Uf=e0FI(0y~dG%{y3VkVPX6ZPGf^=LwE#HGK#HGr=LiMwgB*_hj zlce5w2(so+1p6b=_9L6fh0b2AwXGRn$ zQC4mXbVuOPaOV8y|Ihz_|Ks&%*pebp8m; zFE{6p()ovB{*iEgE^fw*v53n!P)$&(NuWC0q*~+hLP)iN%VC)Rm(BTWT#mMInToh@ zz$Ht$&h=JP3+Go3VGtl@cso^wP4 z=US-FQ@vf-Vn>APwT?Tw*px8zolAh~*WnrYBUG0=QQi8c1JxTL)doEfZU3w}f6e2r zg!8E$u6E>7Xi}}oW<*p(wrd@Et?g)y*PAU=Z$-SWH}P`=B>d|pubb3Q-v&Lr(?a!= zP7)gLHmO1h-vg>!EmVb$yuNNyg}iP96$+_3?&#;u`D;5eBQ9X2Q?Y8lVU04AHhR5_ zVNRneVynn3V%8~pY|;Gyb9UMC+1aw~IxhCui7RhhdvlVt%CobmWc%54y72lNr!Snn zaK^aC&Z3IXp1O3Q`I@bk*$Vc!Qy17-Ttzl4pJmS=Ylej!sf;v#4eR_ehvkS*Ed1*Rp0X z2rxI}!p>Gz!y*r}e$_1&*@}mKkcUN8_WYTXr;nvswlZIxDVIdnw>-B}^>cLj0#SH@ zD7+9dDuj&uY-K)u3ij!OF+vyg;AuFEn1eMjF0nJPTaIJr5Y;(L7b52H zFjx)D4l1ct$a1hp1bAuJ%(e3;L(NcAm1?sl_CWYD-TxHp)k>X|;9&osu-I}Hs>O&)TzvuP{7 zT0X&la4zymJUtCJ_n7O7}E`zc_L{NF09(Qy7a3t5*VUMv3BVxETS(+-p(Y6;SE=ONt&0 zF=v769BjyoU5~-H6vI^FH{xRaL*`!hLFOWqyS>Z-=HkxqzY!Z{ARs0{$fDa~0S0TKFMD}1?h#QN-EI}n`jcH=l6>m|m3lpJ=Mza;mi0gi zrjY?(rrH6>c?0ldH<>a8!+*j4{&V-pSGy;^*gf%2yI=UTzWY7@JiPP%tINaBKREhj z-~Ojv%=TR{Jb(0SpD_F=%g5S~Ml1--5>L;qYQaKFH*+w^wu#E%>(jHNd2ZswL zLSU$;Uh=L$n0UkRjsVEt2LtFRv-839Qs%%zZz(hKNL|Vt{p9RYMhp_7M~*RV8X;<; z8aY5o-;KdPdfkXgk&hZNZJK&jynbzSuUg#$0+%CcBuo(#ZWd=*x9Ybl1{|N(H){2XJH#!^bB(CL7)H;Kn~@4m~oy$czVx@r~Of{zbR< z4r~lUOAI!1lVR*PNFdoPh^#Yzo53sb>u{uNg+K)kckryc^;sWdB(HZFJ?oyOU|#RK zXK9$1X@4f9Mv0_-zXwVCJ4ib4!z48Z!3l=yQ!P%gq3oamV$BV*jpVdjovE3P1gUKr z$uL2Fb6}=gt@y`sx$tckD00?3q(>;U?v!(l1gU|(N#@LA*~~SPWI?yuh~*lo)w1ZD z_~@lZf+SYTqKM44MdADUMZZbqxNt#l2Y`h-+hl@9C>op^vH3>Kq~T<2Y&Av=MkNT5 zzEJau9?4LX@bUi+28iQ5z4vea>CgV9Z`XslrM`oY;!Ay_kIpXj9lal0?(4rl^YKNv z*_L}8dp!2*-cNq|+1SFi1?@L`7y1{kF1{aJ{mJKlyjTw2D+ISuV9qSvc7wv5VDN5` zy1V=x7oJ$iFWmgiiwhiC)(Eb>w{-PZaHS9wU|}n;?<|>j15^wKXM@!2Z!`TH9f-td z>OjAu8~c_n(-twQ%d|UD7eKDfiHQElH4VJ>F-BsPF}eY&$#%yude+l{qov^4I;Rqn z0LgTn>jcR#E@b{jFq0voa4#h)#d=-WIxiQfGpaasdHwKHW!`e`UH7Ym-8_9(VnfMkA5Cv1i57ed9-iNO)r4Byo zSxQaZJGq?dy+84B25vHa_iy~gu|Gfd+re$i{nF#Bk3abJ+mA1P_Tge|as2c2!XE|K z00%g5K3KBn0_(#dGan@8LmYrDnpYDCPbkl3AeFy&AO!?~G3|0r5cEg)>wkI|P zu01p;{t&JNFYCGXK8vf71~g^rXIjwYp*g51OI4_L$SJ6KKw1q$tm8u250x*;^3!l| zDbWJdt!BOFKz|-7Y3kf6vS77r81ZU8_M&yyqs-e&2uYUqNUHZn$S?{+y$1pqERowJ zex<`OS@36&cLe4~@EVKCtv(+k13ySun;@z~;2 zaQ#Mb^X=drd+8<)ZaBf>(;awcw&rd00VwgK`1rqoVGGc;=FB|{eTyd-QE=s* z&u144!MnGDf)(7dgFzgm@V7+X#KN(KDYC}Zz<77*%6p4{65P5SAROF|5ZnY|R1JfO z6o4TJJu30H%ZfA)wq-`6Eh_@tx&%^QwneA*!csd=EAb?nf_gTx{pt~y#2Qi{g$ECJ zwo)XAcJh>DsPO3oop6*L=PY-eefeej3fdp(8_*!3hvlg#W>uqzMUKmGJb@;VSDvNs z{1UXXX3EuY+3?^T(w{{|AF~rUJDp`|s)P_o8cA^WueuJhs?fihDZ>=nj)H{&iXN`{ zq^ZWiYiKw5+-eN<(`Kz2&2K$Ygk;cibD%DS!)GWk=^e4qSs~&&xC%`toAq%8k@igy zdNMTRQdHNwfGSM(BxQ$bI6RVu1z&=k)9IPCiP%F#Z3Wx)uvIP2L+8nZUQDG7O};|4 zT%dV`%E!fr%F@6{&_DV}3^L=NNRNB|=H<_J zEggO3i_9xQ;+2i{7eO5jcR%WhHP;e0)(Y$v^pFl`OTE6Pz0D4zR6+DGN-C4v@acFM zRhBX@d;)_IB!qCY%>yTpG&f74%Em?zM7&sCT8H{b%FbP#=w+5l{b`IwD4%c~i+T;@ zfEi8lNbd;4$M2`yS9>u*g54-7m?Z4HyaYGvJ1_0cgzfNi;2oI%VeDS~Qg<2->ZF^} z!(2*69hDctjtaCrNavU6ka*m*>sO)O7B*j3_i;H?KY>{5HhQ3wQUH^AFT#sEY2pifCzhS>=%?IJ_h)CNC&h&;?jt zmU-_5m|kb|qNb?4XmOgYIh>?g4u^OVWL1zT3Ytli9Q6K3Tc+&Q_mIuO(XnN7v&b!x z-83c?*|7!FL4u@evM6CBnU-u>j>tQT=~xOvrV5;`dOBJTqEBN2!H!MYRBeHmMGFh2 z;HbPJnU17@N)$&G9NiIhvCd*alw?~mIYAJ3PRdJ&(@ita2?{bbEGYGDZ5H%P^LOjp z$;gpH62t`MlNel2hXFQ}S`tN7%<}?50)m#dD)54e;TG{Sk8F%|$2R%A3j8g}&Z~|o zalC8`oTTXzXIe<*93hWokfF|sShs8$V@`5xkpn|IoQY(eQ*24h+t{k_4QQV`}*o|hC|vk^dt$FR7JO+i&1i^qDsH>3aqt}5LG zH-(NjX?WFp!(CRngphS5|f?`U})V+A8b z@AHDJo4l%Oj*NNBaa6=Rs4*dFrfu4y$;-Me$zT|)AuI!I6peS_rKJdb9@*NetPYfe z*sFL@7}onKKzs|8O7OHku~D$qj9nlz3j{!+e7a>xmd^9ombJVlO1hXwx~wZm(oLBc zMN@Sgloy<4VDX_OT`K?@$K%gxbyjl_a zS%0Q6kHYTvG zX%N0l1%q;Q@ETi_U{i{2>VVk1u7D2JybYcM7}a@25jgNYo0D`&b=C%#7O-G(im0pLkpjdwtSS&Q zR9kmUR6p3ZZlzW%!Vh9K&<7k=NnZ}!UUPI1!{SWcmN`iQf7UEp;lw=ny`yij1O&@E z3n2{zk{wR8U{8{+KwQ9ig;N}au$~v!?anWkkk{z7kw0UWk!M4YR6z5BDMKRAG=M$P zjS6T-$hHx$VG%jVw|+-WLT7L`zO-go`51w>0e_b@d#fE@ydWFZS8 zKbB2fMY58&HAR+HY=gc8kXEqsbrzO(ct8VZLh$7zh_sxpA&tWj=<^`bDv~2mO=F1N zt_7YBi_4H<6p`0SvJzFuIi?M>HQHyAVmp&Np=f^=OZiOp0^;NU>AFl8`21ZZSg zdArW4CU#5}S)6S{)|0TNb4avRPL?$cx|A;z>Fk8+fuO8LP*h45#3BS2UcAJ=qnHiDc3t zGK{XIKkONZuM9BV`<7Ef%YDPkL%V|A((=%rVBfjrq20?n_5}ydFYnm%@YG6o*WTfk zo}QfpD??2G4w(2bLuc#__McncaX1(|A5Q5`?iyIxKD0f(GQ#w33)g(uOPAEPT(WPA zC6A0ANUjW0p|8i7?%gd?bHL)^r8W+){(ljAPjcl(j7ohw&U7DckviW&F`dMYhl+V< zfT|yv>owgqJeFKRamwLrSF2tgroJVE$e5cj*us>ZB#unE$%02lK_}hd@I?e4>}U&R`3beD?)u06Eh`CBBsUgOT|46qWeRUZ#6*6L$}PEF+g?i6LWR?I|lg@j*L_PC2;~i>-FiH4H4~LKg4#x9J|FgGyrS zv_BALw@oXFu3=Erd;N45uR^sl@@z$YKLj04uACa6EM|a3i<|veyZF5zXn*o|E|vPD IG_4!|4|POaKmY&$ literal 0 HcmV?d00001 diff --git a/scripts/__pycache__/live_docs_queries_data.cpython-314.pyc b/scripts/__pycache__/live_docs_queries_data.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..54bca5323888555fb871def82a136a57af5db0af GIT binary patch literal 3570 zcmbtWS#R4$5MIh;>`1=iBX%6yTE~fF*^#Krj-13fkgINvCd^TwO{-EAWiysYb-A)3 zzSKXV4+Yx4kk|ea<{^M#pg@532e3)siUOUbOlc+CY0wbTU}re{&B@(a?C%RBcz$#K zG5+pD=y%2h&&dAb{jadtK?3WCz5h(IOf7|?E|2k3Dn3^bzj0_{`!fet8x zKu;(`K!=qPprgu3pkvB7&{N6;(9_B!&?#jaXjH*KXOuGqfeOkjSUL-K&ViLVuyGzN z%maQ5&=&xE5il<(qjH#rl=v8;T}lF|sK`JiB{_>?DK#u0bW5cwrfQ+AI74RmUTM@cEbnl`mP4BHYLm#zzO0>gq?Gn zzH4Q}rdT((3_z~vCbe-qZq;bDMps|jmg$V~?_{lB&|fX0wqteMj#r6Q z?0{)A!NJIZet=iD)_L8d@XjCMRufOww^%gJA{VA@LKQbGh%vC*;pJ3Q<4_l4t&ju7 zqmXc*U>}Ag$5T$W0ai3hrIxY}SJ0tJkMM8>;*PUD9PBk_t7_OAsa3X%ZJ!H7Xau<@1HX)()6{GsmrG?XW^%>loSsW(3u;jtwhN3@ouOJdgzb0Ge)Uw)I1hGG~)Z_rCYI8PN4l zjiV!ln;&*Y=BoF}DRdV2bhSDuPU}^;CEAbaS*>PMs}ko*+|c8a=B#k3>cGP`^j%qx z`(@jzm054{Rmgq>zTAo7%y1D@t+JsR2OJ*`0J3Ksp z2vD=1xoyrE=M;a7IHN7AoIDVBTujag2h%+4ouL*+APh8FQ?^ceXOP?PAD&KsYcCTx z11;V^n*vYRmCMyxgSn>pgkaT$koca>Ydh#UdeMBf0xKAV1ZPdrX^oipDXHn$C3P`P#55D!+;6_ zzKsn1RCyhlb;a5DAV7yFW75}crQ$idFu}ANkDrwL`$=J=)PD?5{^-c`*1>H!*bn3^ zL7)VPNI+~q3#1#Cd%X;|8At>~GSg@T@<(L+m$5gI8CRSk$3gtR1G&Zpa<6mx>~Q^% zKoc=xuO}E2*}CC$rN~FpqgIVPn`X%XxSHjo82<6IH<2kWlz5|#je|10F{Hj>nHrD7FpW&J7{g7++Y_G6%4mmmm#h9p7s`iFW$yW*l7zvFem z@~xP5v(G&VmfkTWW!&sHUN>WUkd$^aig%nbVI(Ep)Dthlm|i4ZcCT!EeT?Zx(m8i7 z=M6As&{uoponXw6kM`6XX3PkZz7jlyUI==~8)cG{NcuJelJ7#Q=#4SSIFc^8m%sK- zF=hfugl(XL+U1>Ql1U_`-1L{;6l125bX{<7Y1)B+>L&|E5iEOu6WXoUfUH%e95RArJxDcaUHykoCxjo Uy_*aPXWxZG!kNE-O#3PS7vE@Wz5oCK literal 0 HcmV?d00001 From b70bf65d37bac4ec6eacd5be58f1bb48bdd2aea8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Gr=C3=B8ndahl?= Date: Fri, 8 May 2026 14:28:06 +0200 Subject: [PATCH 2/4] docs: update CLI reference for v2.17.7 --- client_reference/kosli.md | 2 +- client_reference/kosli_allow_artifact.md | 4 +- .../kosli_archive_attestation-type.md | 6 +- client_reference/kosli_archive_environment.md | 6 +- client_reference/kosli_archive_flow.md | 6 +- client_reference/kosli_assert_approval.md | 14 +- client_reference/kosli_assert_artifact.md | 28 +- .../kosli_assert_pullrequest_azure.md | 16 +- .../kosli_assert_pullrequest_bitbucket.md | 14 +- .../kosli_assert_pullrequest_github.md | 12 +- .../kosli_assert_pullrequest_gitlab.md | 14 +- client_reference/kosli_assert_snapshot.md | 8 +- client_reference/kosli_assert_status.md | 2 +- client_reference/kosli_attach-policy.md | 12 +- client_reference/kosli_attest_artifact.md | 60 +- client_reference/kosli_attest_custom.md | 66 +- client_reference/kosli_attest_generic.md | 52 +- client_reference/kosli_attest_jira.md | 126 +- client_reference/kosli_attest_junit.md | 56 +- .../kosli_attest_pullrequest_azure.md | 112 +- .../kosli_attest_pullrequest_bitbucket.md | 98 +- .../kosli_attest_pullrequest_github.md | 96 +- .../kosli_attest_pullrequest_gitlab.md | 96 +- client_reference/kosli_attest_snyk.md | 66 +- client_reference/kosli_attest_sonar.md | 84 +- client_reference/kosli_begin_trail.md | 22 +- client_reference/kosli_completion.md | 12 +- client_reference/kosli_config.md | 20 +- .../kosli_create_attestation-type.md | 22 +- client_reference/kosli_create_environment.md | 12 +- client_reference/kosli_create_flow.md | 20 +- client_reference/kosli_create_policy.md | 18 +- client_reference/kosli_detach-policy.md | 10 +- client_reference/kosli_diff_snapshots.md | 44 +- client_reference/kosli_disable_beta.md | 2 +- client_reference/kosli_enable_beta.md | 2 +- client_reference/kosli_evaluate_input.md | 42 +- client_reference/kosli_evaluate_trail.md | 42 +- client_reference/kosli_evaluate_trails.md | 34 +- client_reference/kosli_fingerprint.md | 10 +- client_reference/kosli_get_approval.md | 10 +- client_reference/kosli_get_artifact.md | 14 +- .../kosli_get_attestation-type.md | 6 +- client_reference/kosli_get_attestation.md | 18 +- client_reference/kosli_get_environment.md | 6 +- client_reference/kosli_get_flow.md | 2 +- client_reference/kosli_get_policy.md | 2 +- client_reference/kosli_get_snapshot.md | 2478 ++++++++--------- client_reference/kosli_get_trail.md | 2 +- client_reference/kosli_join_environment.md | 10 +- client_reference/kosli_list_approvals.md | 16 +- client_reference/kosli_list_artifacts.md | 18 +- .../kosli_list_attestation-types.md | 2 +- client_reference/kosli_list_environments.md | 10 +- client_reference/kosli_list_flows.md | 2 +- client_reference/kosli_list_policies.md | 2 +- client_reference/kosli_list_snapshots.md | 82 +- client_reference/kosli_list_trails.md | 26 +- client_reference/kosli_log_environment.md | 510 ++-- client_reference/kosli_rename_environment.md | 6 +- client_reference/kosli_rename_flow.md | 6 +- client_reference/kosli_report_approval.md | 10 +- client_reference/kosli_report_artifact.md | 30 +- client_reference/kosli_request_approval.md | 10 +- client_reference/kosli_search.md | 10 +- client_reference/kosli_snapshot_azure.md | 60 +- client_reference/kosli_snapshot_docker.md | 10 +- client_reference/kosli_snapshot_ecs.md | 36 +- client_reference/kosli_snapshot_k8s.md | 4 +- client_reference/kosli_snapshot_lambda.md | 52 +- client_reference/kosli_snapshot_path.md | 18 +- client_reference/kosli_snapshot_paths.md | 18 +- client_reference/kosli_snapshot_s3.md | 44 +- client_reference/kosli_snapshot_server.md | 22 +- client_reference/kosli_status.md | 6 +- client_reference/kosli_tag.md | 28 +- client_reference/kosli_version.md | 4 +- 77 files changed, 2505 insertions(+), 2453 deletions(-) diff --git a/client_reference/kosli.md b/client_reference/kosli.md index 91ff3d1..7206dad 100644 --- a/client_reference/kosli.md +++ b/client_reference/kosli.md @@ -24,7 +24,7 @@ Setting the API token to DRY_RUN sets the --dry-run flag. | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -h, --help | help for kosli | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_allow_artifact.md b/client_reference/kosli_allow_artifact.md index 2a30419..0196d44 100644 --- a/client_reference/kosli_allow_artifact.md +++ b/client_reference/kosli_allow_artifact.md @@ -11,7 +11,7 @@ description: "Add an artifact to an environment's allowlist. " kosli allow artifact [IMAGE-NAME | FILE-PATH | DIR-PATH] [flags] ``` -Add an artifact to an environment's allowlist. +Add an artifact to an environment's allowlist. The artifact fingerprint can be provided directly with the `--fingerprint` flag, or calculated based on `--artifact-type` flag. @@ -48,7 +48,7 @@ registry without needing a local Docker daemon. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_archive_attestation-type.md b/client_reference/kosli_archive_attestation-type.md index 23e5e16..72c7e57 100644 --- a/client_reference/kosli_archive_attestation-type.md +++ b/client_reference/kosli_archive_attestation-type.md @@ -29,19 +29,19 @@ New custom attestations using this type cannot be made, but existing attestation | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli archive attestation-type yourAttestationTypeName +kosli archive attestation-type yourAttestationTypeName ``` diff --git a/client_reference/kosli_archive_environment.md b/client_reference/kosli_archive_environment.md index dc35fd8..84d1bd7 100644 --- a/client_reference/kosli_archive_environment.md +++ b/client_reference/kosli_archive_environment.md @@ -29,19 +29,19 @@ The environment will no longer be visible in list of environments, data is still | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli archive environment yourEnvironmentName +kosli archive environment yourEnvironmentName ``` diff --git a/client_reference/kosli_archive_flow.md b/client_reference/kosli_archive_flow.md index 46c72a0..0080fa9 100644 --- a/client_reference/kosli_archive_flow.md +++ b/client_reference/kosli_archive_flow.md @@ -29,19 +29,19 @@ The flow will no longer be visible in list of flows, data is still stored in the | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli archive flow yourFlowName +kosli archive flow yourFlowName ``` diff --git a/client_reference/kosli_assert_approval.md b/client_reference/kosli_assert_approval.md index c18e244..743dccf 100644 --- a/client_reference/kosli_assert_approval.md +++ b/client_reference/kosli_assert_approval.md @@ -11,8 +11,8 @@ description: "Assert an artifact in Kosli has been approved for deployment. " kosli assert approval [IMAGE-NAME | FILE-PATH | DIR-PATH] [flags] ``` -Assert an artifact in Kosli has been approved for deployment. -Exits with non-zero code if the artifact has not been approved. +Assert an artifact in Kosli has been approved for deployment. +Exits with non-zero code if the artifact has not been approved. The artifact fingerprint can be provided directly with the `--fingerprint` flag, or calculated based on `--artifact-type` flag. @@ -48,27 +48,27 @@ registry without needing a local Docker daemon. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli assert approval FILE.tgz - --artifact-type file +kosli assert approval FILE.tgz + --artifact-type file ``` ```shell -kosli assert approval +kosli assert approval --fingerprint yourArtifactFingerprint ``` diff --git a/client_reference/kosli_assert_artifact.md b/client_reference/kosli_assert_artifact.md index 9b81988..945abf7 100644 --- a/client_reference/kosli_assert_artifact.md +++ b/client_reference/kosli_assert_artifact.md @@ -2,7 +2,7 @@ title: "kosli assert artifact" beta: false deprecated: false -description: "Assert the compliance status of an artifact in Kosli. +description: "Assert the compliance status of an artifact in Kosli. There are three ways to choose what to assert against: 1. Against an environment. When `--environment` is specified, @@ -15,7 +15,7 @@ asserts against all poli..." kosli assert artifact [IMAGE-NAME | FILE-PATH | DIR-PATH] [flags] ``` -Assert the compliance status of an artifact in Kosli. +Assert the compliance status of an artifact in Kosli. There are three ways to choose what to assert against: 1. Against an environment. When `--environment` is specified, @@ -58,7 +58,7 @@ non-zero code if non-compliant status. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -80,38 +80,38 @@ non-zero code if non-compliant status. ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli assert artifact - --fingerprint 184c799cd551dd1d8d5c5f9a5d593b2e931f5e36122ee5c793c1d08a19839cc0 - --environment prod +kosli assert artifact + --fingerprint 184c799cd551dd1d8d5c5f9a5d593b2e931f5e36122ee5c793c1d08a19839cc0 + --environment prod ``` ```shell -kosli assert artifact - --fingerprint 184c799cd551dd1d8d5c5f9a5d593b2e931f5e36122ee5c793c1d08a19839cc0 - --policy has-approval,has-been-integration-tested +kosli assert artifact + --fingerprint 184c799cd551dd1d8d5c5f9a5d593b2e931f5e36122ee5c793c1d08a19839cc0 + --policy has-approval,has-been-integration-tested ``` ```shell export KOSLI_FLOW=yourFlowName -kosli assert artifact - --fingerprint 184c799cd551dd1d8d5c5f9a5d593b2e931f5e36122ee5c793c1d08a19839cc0 +kosli assert artifact + --fingerprint 184c799cd551dd1d8d5c5f9a5d593b2e931f5e36122ee5c793c1d08a19839cc0 ``` ```shell unset KOSLI_FLOW -kosli assert artifact library/nginx:1.21 - --artifact-type docker +kosli assert artifact library/nginx:1.21 + --artifact-type docker ``` diff --git a/client_reference/kosli_assert_pullrequest_azure.md b/client_reference/kosli_assert_pullrequest_azure.md index 85dcc1c..fc125d4 100644 --- a/client_reference/kosli_assert_pullrequest_azure.md +++ b/client_reference/kosli_assert_pullrequest_azure.md @@ -11,20 +11,20 @@ description: "Assert an Azure DevOps pull request for a git commit exists. " kosli assert pullrequest azure [flags] ``` -Assert an Azure DevOps pull request for a git commit exists. -The command exits with non-zero exit code +Assert an Azure DevOps pull request for a git commit exists. +The command exits with non-zero exit code if no pull requests were found for the commit. ## Flags | Flag | Description | | :--- | :--- | -| --azure-org-url string | Azure organization url. E.g. "https://dev.azure.com/myOrg" (defaulted if you are running in Azure Devops pipelines: [docs](/ci-defaults) ). | +| --azure-org-url string | Azure organization url. E.g. `https://dev.azure.com/myOrg` (defaulted if you are running in Azure Devops pipelines: [docs](/integrations/ci_cd) ). | | --azure-token string | Azure Personal Access token. | -| --commit string | Git commit for which to find pull request evidence. (defaulted in some CIs: [docs](/ci-defaults) ). (default "HEAD") | +| --commit string | Git commit for which to find pull request evidence. (defaulted in some CIs: [docs](/integrations/ci_cd) ). (default "HEAD") | | -D, --dry-run | [optional] Run in dry-run mode. When enabled, no data is sent to Kosli and the CLI exits with 0 exit code regardless of any errors. | | -h, --help | help for azure | -| --project string | Azure project.(defaulted if you are running in Azure Devops pipelines: [docs](/ci-defaults) ). | -| --repository string | Git repository. (defaulted in some CIs: [docs](/ci-defaults) ). | +| --project string | Azure project.(defaulted if you are running in Azure Devops pipelines: [docs](/integrations/ci_cd) ). | +| --repository string | Git repository. (defaulted in some CIs: [docs](/integrations/ci_cd) ). | ## Flags inherited from parent commands @@ -34,14 +34,14 @@ if no pull requests were found for the commit. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell kosli assert pullrequest azure \ diff --git a/client_reference/kosli_assert_pullrequest_bitbucket.md b/client_reference/kosli_assert_pullrequest_bitbucket.md index 17097ac..9954f3f 100644 --- a/client_reference/kosli_assert_pullrequest_bitbucket.md +++ b/client_reference/kosli_assert_pullrequest_bitbucket.md @@ -11,21 +11,21 @@ description: "Assert a Bitbucket pull request for a git commit exists. " kosli assert pullrequest bitbucket [flags] ``` -Assert a Bitbucket pull request for a git commit exists. +Assert a Bitbucket pull request for a git commit exists. The command exits with non-zero exit code if no pull requests were found for the commit. Authentication to Bitbucket can be done with access token (recommended) or app passwords. Credentials need to have read access for both repos and pull requests. ## Flags | Flag | Description | | :--- | :--- | -| --bitbucket-access-token string | Bitbucket repo/project/workspace access token. See https://developer.atlassian.com/cloud/bitbucket/rest/intro/#access-tokens for more details. | -| --bitbucket-password string | Bitbucket App password. See https://developer.atlassian.com/cloud/bitbucket/rest/intro/#authentication for more details. | +| --bitbucket-access-token string | Bitbucket repo/project/workspace access token. See [Bitbucket access tokens](https://developer.atlassian.com/cloud/bitbucket/rest/intro/#access-tokens) for more details. | +| --bitbucket-password string | Bitbucket App password. See [Bitbucket authentication](https://developer.atlassian.com/cloud/bitbucket/rest/intro/#authentication) for more details. | | --bitbucket-username string | Bitbucket username. Only needed if you use --bitbucket-password | | --bitbucket-workspace string | Bitbucket workspace ID. | -| --commit string | Git commit for which to find pull request evidence. (defaulted in some CIs: [docs](/ci-defaults) ). (default "HEAD") | +| --commit string | Git commit for which to find pull request evidence. (defaulted in some CIs: [docs](/integrations/ci_cd) ). (default "HEAD") | | -D, --dry-run | [optional] Run in dry-run mode. When enabled, no data is sent to Kosli and the CLI exits with 0 exit code regardless of any errors. | | -h, --help | help for bitbucket | -| --repository string | Git repository. (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repository string | Git repository. (defaulted in some CIs: [docs](/integrations/ci_cd) ). | ## Flags inherited from parent commands @@ -35,14 +35,14 @@ Authentication to Bitbucket can be done with access token (recommended) or app p | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell kosli assert pullrequest bitbucket \ diff --git a/client_reference/kosli_assert_pullrequest_github.md b/client_reference/kosli_assert_pullrequest_github.md index 277bc8d..d5ed320 100644 --- a/client_reference/kosli_assert_pullrequest_github.md +++ b/client_reference/kosli_assert_pullrequest_github.md @@ -11,20 +11,20 @@ description: "Assert a Github pull request for a git commit exists. " kosli assert pullrequest github [flags] ``` -Assert a Github pull request for a git commit exists. +Assert a Github pull request for a git commit exists. The command exits with non-zero exit code if no pull requests were found for the commit. ## Flags | Flag | Description | | :--- | :--- | -| --commit string | Git commit for which to find pull request evidence. (defaulted in some CIs: [docs](/ci-defaults) ). (default "HEAD") | +| --commit string | Git commit for which to find pull request evidence. (defaulted in some CIs: [docs](/integrations/ci_cd) ). (default "HEAD") | | -D, --dry-run | [optional] Run in dry-run mode. When enabled, no data is sent to Kosli and the CLI exits with 0 exit code regardless of any errors. | | --github-base-url string | [optional] GitHub base URL (only needed for GitHub Enterprise installations). | -| --github-org string | Github organization. (defaulted if you are running in GitHub Actions: [docs](/ci-defaults) ). | +| --github-org string | Github organization. (defaulted if you are running in GitHub Actions: [docs](/integrations/ci_cd) ). | | --github-token string | Github token. | | -h, --help | help for github | -| --repository string | Git repository. (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repository string | Git repository. (defaulted in some CIs: [docs](/integrations/ci_cd) ). | ## Flags inherited from parent commands @@ -34,14 +34,14 @@ if no pull requests were found for the commit. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell kosli assert pullrequest github \ diff --git a/client_reference/kosli_assert_pullrequest_gitlab.md b/client_reference/kosli_assert_pullrequest_gitlab.md index c6b2502..501b654 100644 --- a/client_reference/kosli_assert_pullrequest_gitlab.md +++ b/client_reference/kosli_assert_pullrequest_gitlab.md @@ -11,20 +11,20 @@ description: "Assert a Gitlab merge request for a git commit exists. " kosli assert pullrequest gitlab [flags] ``` -Assert a Gitlab merge request for a git commit exists. -The command exits with non-zero exit code +Assert a Gitlab merge request for a git commit exists. +The command exits with non-zero exit code if no merge requests were found for the commit. ## Flags | Flag | Description | | :--- | :--- | -| --commit string | Git commit for which to find pull request evidence. (defaulted in some CIs: [docs](/ci-defaults) ). (default "HEAD") | +| --commit string | Git commit for which to find pull request evidence. (defaulted in some CIs: [docs](/integrations/ci_cd) ). (default "HEAD") | | -D, --dry-run | [optional] Run in dry-run mode. When enabled, no data is sent to Kosli and the CLI exits with 0 exit code regardless of any errors. | | --gitlab-base-url string | [optional] Gitlab base URL (only needed for on-prem Gitlab installations). | -| --gitlab-org string | Gitlab organization. (defaulted if you are running in Gitlab Pipelines: [docs](/ci-defaults) ). | +| --gitlab-org string | Gitlab organization. (defaulted if you are running in Gitlab Pipelines: [docs](/integrations/ci_cd) ). | | --gitlab-token string | Gitlab token. | | -h, --help | help for gitlab | -| --repository string | Git repository. (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repository string | Git repository. (defaulted in some CIs: [docs](/integrations/ci_cd) ). | ## Flags inherited from parent commands @@ -34,14 +34,14 @@ if no merge requests were found for the commit. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell kosli assert mergerequest gitlab \ diff --git a/client_reference/kosli_assert_snapshot.md b/client_reference/kosli_assert_snapshot.md index 33da781..5867f87 100644 --- a/client_reference/kosli_assert_snapshot.md +++ b/client_reference/kosli_assert_snapshot.md @@ -14,13 +14,13 @@ kosli assert snapshot ENVIRONMENT-NAME-OR-EXPRESSION [flags] Assert the compliance status of an environment in Kosli. Exits with non-zero code if the environment has a non-compliant status. The expected argument is an expression to specify the specific environment snapshot to assert. -It has the format `ENVIRONMENT_NAME`[SEPARATOR][SNAPSHOT_REFERENCE] +It has the format `ENVIRONMENT_NAME`[SEPARATOR][SNAPSHOT_REFERENCE] Separators can be: - '#' to specify a specific snapshot number for the environment that is being asserted. - '~' to get N-th behind the latest snapshot. -Examples of valid expressions are: +Examples of valid expressions are: - prod (latest snapshot of prod) - prod#10 (snapshot number 10 of prod) - prod~2 (third latest snapshot of prod) @@ -40,14 +40,14 @@ Examples of valid expressions are: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell kosli assert snapshot prod#5 \ diff --git a/client_reference/kosli_assert_status.md b/client_reference/kosli_assert_status.md index 9124d88..12267c7 100644 --- a/client_reference/kosli_assert_status.md +++ b/client_reference/kosli_assert_status.md @@ -27,7 +27,7 @@ Exits with non-zero code if the Kosli server down. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_attach-policy.md b/client_reference/kosli_attach-policy.md index 44e100c..7317c5b 100644 --- a/client_reference/kosli_attach-policy.md +++ b/client_reference/kosli_attach-policy.md @@ -11,7 +11,7 @@ description: "Attach a policy to one or more Kosli environments. " kosli attach-policy POLICY-NAME [flags] ``` -Attach a policy to one or more Kosli environments. +Attach a policy to one or more Kosli environments. ## Flags | Flag | Description | @@ -28,21 +28,21 @@ Attach a policy to one or more Kosli environments. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli attach-policy yourPolicyName - --environment yourFirstEnvironmentName - --environment yourSecondEnvironmentName +kosli attach-policy yourPolicyName + --environment yourFirstEnvironmentName + --environment yourSecondEnvironmentName ``` diff --git a/client_reference/kosli_attest_artifact.md b/client_reference/kosli_attest_artifact.md index 7c1fc0a..6aa8dd7 100644 --- a/client_reference/kosli_attest_artifact.md +++ b/client_reference/kosli_attest_artifact.md @@ -11,7 +11,7 @@ description: "Attest an artifact creation to a Kosli flow. " kosli attest artifact {IMAGE-NAME | FILE-PATH | DIR-PATH} [flags] ``` -Attest an artifact creation to a Kosli flow. +Attest an artifact creation to a Kosli flow. The artifact fingerprint can be provided directly with the `--fingerprint` flag, or calculated based on `--artifact-type` flag. @@ -39,9 +39,9 @@ In other CI systems, set them explicitly to capture repository metadata. | :--- | :--- | | --annotate stringToString | [optional] Annotate the attestation with data using key=value. | | -t, --artifact-type string | The type of the artifact to calculate its SHA256 fingerprint. One of: [oci, docker, file, dir]. Only required if you want Kosli to calculate the fingerprint for you (i.e. when you don't specify '--fingerprint' on commands that allow it). | -| -b, --build-url string | The url of CI pipeline that built the artifact. (defaulted in some CIs: [docs](/ci-defaults) ). | -| -g, --commit string | [defaulted] The git commit from which the artifact was created. (defaulted in some CIs: [docs](/ci-defaults), otherwise defaults to HEAD ). (default "HEAD") | -| -u, --commit-url string | The url for the git commit that created the artifact. (defaulted in some CIs: [docs](/ci-defaults) ). | +| -b, --build-url string | The url of CI pipeline that built the artifact. (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| -g, --commit string | [defaulted] The git commit from which the artifact was created. (defaulted in some CIs: [docs](/integrations/ci_cd), otherwise defaults to HEAD ). (default "HEAD") | +| -u, --commit-url string | The url for the git commit that created the artifact. (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | -N, --display-name string | [optional] Artifact display name, if different from file, image or directory name. | | -D, --dry-run | [optional] Run in dry-run mode. When enabled, no data is sent to Kosli and the CLI exits with 0 exit code regardless of any errors. | | -x, --exclude strings | [optional] The comma separated list of directories and files to exclude from fingerprinting. Can take glob patterns. Only applicable for --artifact-type dir. | @@ -54,11 +54,11 @@ In other CI systems, set them explicitly to capture repository metadata. | --redact-commit-info strings | [optional] The list of commit info to be redacted before sending to Kosli. Allowed values are one or more of [author, message, branch]. | | --registry-password string | [conditional] The container registry password or access token. Only required if you want to read container image SHA256 digest from a remote container registry. | | --registry-username string | [conditional] The container registry username. Only required if you want to read container image SHA256 digest from a remote container registry. | -| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | --repo-root string | [defaulted] The directory where the source git repository is available. (default ".") | -| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | -T, --trail string | The Kosli trail name. | @@ -69,7 +69,7 @@ In other CI systems, set them explicitly to capture repository metadata. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -91,42 +91,42 @@ In other CI systems, set them explicitly to capture repository metadata. ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli attest artifact FILE.tgz - --artifact-type file - --build-url https://exampleci.com - --commit-url https://github.com/YourOrg/YourProject/commit/yourCommitShaThatThisArtifactWasBuiltFrom - --commit yourCommitShaThatThisArtifactWasBuiltFrom - --name yourTemplateArtifactName +kosli attest artifact FILE.tgz + --artifact-type file + --build-url https://exampleci.com + --commit-url https://github.com/YourOrg/YourProject/commit/yourCommitShaThatThisArtifactWasBuiltFrom + --commit yourCommitShaThatThisArtifactWasBuiltFrom + --name yourTemplateArtifactName ``` ```shell -kosli attest artifact ANOTHER_FILE.txt - --build-url https://exampleci.com - --commit-url https://github.com/YourOrg/YourProject/commit/yourCommitShaThatThisArtifactWasBuiltFrom - --commit yourCommitShaThatThisArtifactWasBuiltFrom - --fingerprint yourArtifactFingerprint - --name yourTemplateArtifactName +kosli attest artifact ANOTHER_FILE.txt + --build-url https://exampleci.com + --commit-url https://github.com/YourOrg/YourProject/commit/yourCommitShaThatThisArtifactWasBuiltFrom + --commit yourCommitShaThatThisArtifactWasBuiltFrom + --fingerprint yourArtifactFingerprint + --name yourTemplateArtifactName ``` ```shell -kosli attest artifact ANOTHER_FILE.txt - --build-url https://exampleci.com - --commit-url https://github.com/YourOrg/YourProject/commit/yourCommitShaThatThisArtifactWasBuiltFrom - --commit yourCommitShaThatThisArtifactWasBuiltFrom - --fingerprint yourArtifactFingerprint - --external-url label=https://example.com/attachment - --external-fingerprint label=yourExternalAttachmentFingerprint - --name yourTemplateArtifactName +kosli attest artifact ANOTHER_FILE.txt + --build-url https://exampleci.com + --commit-url https://github.com/YourOrg/YourProject/commit/yourCommitShaThatThisArtifactWasBuiltFrom + --commit yourCommitShaThatThisArtifactWasBuiltFrom + --fingerprint yourArtifactFingerprint + --external-url label=https://example.com/attachment + --external-fingerprint label=yourExternalAttachmentFingerprint + --name yourTemplateArtifactName ``` diff --git a/client_reference/kosli_attest_custom.md b/client_reference/kosli_attest_custom.md index c73f5a8..9dc106b 100644 --- a/client_reference/kosli_attest_custom.md +++ b/client_reference/kosli_attest_custom.md @@ -11,12 +11,12 @@ description: "Report a custom attestation to an artifact or a trail in a Kosli f kosli attest custom [IMAGE-NAME | FILE-PATH | DIR-PATH] [flags] ``` -Report a custom attestation to an artifact or a trail in a Kosli flow. +Report a custom attestation to an artifact or a trail in a Kosli flow. The name of the custom attestation type is specified using the `--type` flag. The path to the JSON file the custom type will evaluate is specified using the `--attestation-data` flag. -The attestation can be bound to a *trail* using the trail name. +The attestation can be bound to a *trail* using the trail name. The attestation can be bound to an *artifact* in two ways: - using the artifact's SHA256 fingerprint which is calculated (based on the `--artifact-type` flag and the artifact name/path argument) or can be provided directly (with the `--fingerprint` flag). - using the artifact's name in the flow yaml template and the git commit from which the artifact is/will be created. Useful when reporting an attestation before creating/reporting the artifact. @@ -36,7 +36,7 @@ In other CI systems, set them explicitly to capture repository metadata. | -t, --artifact-type string | The type of the artifact to calculate its SHA256 fingerprint. One of: [oci, docker, file, dir]. Only required if you want Kosli to calculate the fingerprint for you (i.e. when you don't specify '--fingerprint' on commands that allow it). | | --attachments strings | [optional] The comma-separated list of paths of attachments for the reported attestation. Attachments can be files or directories. All attachments are compressed and uploaded to Kosli's evidence vault. | | --attestation-data string | The filepath of a json file containing the custom attestation data. | -| -g, --commit string | [conditional] The git commit for which the attestation is associated to. Becomes required when reporting an attestation for an artifact before reporting it to Kosli. (defaulted in some CIs: [docs](/ci-defaults) ). | +| -g, --commit string | [conditional] The git commit for which the attestation is associated to. Becomes required when reporting an attestation for an artifact before reporting it to Kosli. (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | --description string | [optional] attestation description | | -D, --dry-run | [optional] Run in dry-run mode. When enabled, no data is sent to Kosli and the CLI exits with 0 exit code regardless of any errors. | | -x, --exclude strings | [optional] The comma separated list of directories and files to exclude from fingerprinting. Can take glob patterns. Only applicable for --artifact-type dir. | @@ -50,11 +50,11 @@ In other CI systems, set them explicitly to capture repository metadata. | --redact-commit-info strings | [optional] The list of commit info to be redacted before sending to Kosli. Allowed values are one or more of [author, message, branch]. | | --registry-password string | [conditional] The container registry password or access token. Only required if you want to read container image SHA256 digest from a remote container registry. | | --registry-username string | [conditional] The container registry username. Only required if you want to read container image SHA256 digest from a remote container registry. | -| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | --repo-root string | [defaulted] The directory where the source git repository is available. Only used if --commit is used or defaulted in CI, see [docs](/integrations/ci_cd/#defaulted-kosli-command-flags-from-ci-variables) . (default ".") | -| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | -T, --trail string | The Kosli trail name. | | --type string | The name of the custom attestation type. | | -u, --user-data string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. | @@ -67,7 +67,7 @@ In other CI systems, set them explicitly to capture repository metadata. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -84,55 +84,55 @@ In other CI systems, set them explicitly to capture repository metadata. ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli attest custom yourDockerImageName - --artifact-type oci - --type customTypeName - --name yourAttestationName - --attestation-data yourJsonFilePath +kosli attest custom yourDockerImageName + --artifact-type oci + --type customTypeName + --name yourAttestationName + --attestation-data yourJsonFilePath ``` ```shell -kosli attest custom - --fingerprint yourDockerImageFingerprint - --type customTypeName - --name yourAttestationName - --attestation-data yourJsonFilePath +kosli attest custom + --fingerprint yourDockerImageFingerprint + --type customTypeName + --name yourAttestationName + --attestation-data yourJsonFilePath ``` ```shell -kosli attest custom - --type customTypeName - --name yourAttestationName - --attestation-data yourJsonFilePath +kosli attest custom + --type customTypeName + --name yourAttestationName + --attestation-data yourJsonFilePath ``` ```shell -kosli attest custom - --type customTypeName - --name yourTemplateArtifactName.yourAttestationName - --attestation-data yourJsonFilePath - --commit yourArtifactGitCommit +kosli attest custom + --type customTypeName + --name yourTemplateArtifactName.yourAttestationName + --attestation-data yourJsonFilePath + --commit yourArtifactGitCommit ``` ```shell -kosli attest custom - --type customTypeName - --name yourAttestationName - --attestation-data yourJsonFilePath - --attachments yourAttachmentPathName +kosli attest custom + --type customTypeName + --name yourAttestationName + --attestation-data yourJsonFilePath + --attachments yourAttachmentPathName ``` diff --git a/client_reference/kosli_attest_generic.md b/client_reference/kosli_attest_generic.md index 6a69a9a..dbfaebf 100644 --- a/client_reference/kosli_attest_generic.md +++ b/client_reference/kosli_attest_generic.md @@ -11,9 +11,9 @@ description: "Report a generic attestation to an artifact or a trail in a Kosli kosli attest generic [IMAGE-NAME | FILE-PATH | DIR-PATH] [flags] ``` -Report a generic attestation to an artifact or a trail in a Kosli flow. +Report a generic attestation to an artifact or a trail in a Kosli flow. -The attestation can be bound to a *trail* using the trail name. +The attestation can be bound to a *trail* using the trail name. The attestation can be bound to an *artifact* in two ways: - using the artifact's SHA256 fingerprint which is calculated (based on the `--artifact-type` flag and the artifact name/path argument) or can be provided directly (with the `--fingerprint` flag). - using the artifact's name in the flow yaml template and the git commit from which the artifact is/will be created. Useful when reporting an attestation before creating/reporting the artifact. @@ -32,7 +32,7 @@ In other CI systems, set them explicitly to capture repository metadata. | --annotate stringToString | [optional] Annotate the attestation with data using key=value. | | -t, --artifact-type string | The type of the artifact to calculate its SHA256 fingerprint. One of: [oci, docker, file, dir]. Only required if you want Kosli to calculate the fingerprint for you (i.e. when you don't specify '--fingerprint' on commands that allow it). | | --attachments strings | [optional] The comma-separated list of paths of attachments for the reported attestation. Attachments can be files or directories. All attachments are compressed and uploaded to Kosli's evidence vault. | -| -g, --commit string | [conditional] The git commit for which the attestation is associated to. Becomes required when reporting an attestation for an artifact before reporting it to Kosli. (defaulted in some CIs: [docs](/ci-defaults) ). | +| -g, --commit string | [conditional] The git commit for which the attestation is associated to. Becomes required when reporting an attestation for an artifact before reporting it to Kosli. (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | -C, --compliant | [defaulted] Whether the attestation is compliant or not. A boolean flag [docs](/faq/#boolean-flags) (default true) | | --description string | [optional] attestation description | | -D, --dry-run | [optional] Run in dry-run mode. When enabled, no data is sent to Kosli and the CLI exits with 0 exit code regardless of any errors. | @@ -47,11 +47,11 @@ In other CI systems, set them explicitly to capture repository metadata. | --redact-commit-info strings | [optional] The list of commit info to be redacted before sending to Kosli. Allowed values are one or more of [author, message, branch]. | | --registry-password string | [conditional] The container registry password or access token. Only required if you want to read container image SHA256 digest from a remote container registry. | | --registry-username string | [conditional] The container registry username. Only required if you want to read container image SHA256 digest from a remote container registry. | -| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | --repo-root string | [defaulted] The directory where the source git repository is available. Only used if --commit is used or defaulted in CI, see [docs](/integrations/ci_cd/#defaulted-kosli-command-flags-from-ci-variables) . (default ".") | -| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | -T, --trail string | The Kosli trail name. | | -u, --user-data string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. | @@ -63,7 +63,7 @@ In other CI systems, set them explicitly to capture repository metadata. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -85,53 +85,53 @@ In other CI systems, set them explicitly to capture repository metadata. ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli attest generic yourDockerImageName - --artifact-type docker - --name yourAttestationName +kosli attest generic yourDockerImageName + --artifact-type docker + --name yourAttestationName ``` ```shell -kosli attest generic - --fingerprint yourDockerImageFingerprint - --name yourAttestationName +kosli attest generic + --fingerprint yourDockerImageFingerprint + --name yourAttestationName ``` ```shell -kosli attest generic - --name yourAttestationName +kosli attest generic + --name yourAttestationName ``` ```shell -kosli attest generic - --name yourTemplateArtifactName.yourAttestationName - --commit yourArtifactGitCommit +kosli attest generic + --name yourTemplateArtifactName.yourAttestationName + --commit yourArtifactGitCommit ``` ```shell -kosli attest generic - --name yourAttestationName - --attachments yourAttachmentPathName +kosli attest generic + --name yourAttestationName + --attachments yourAttachmentPathName ``` ```shell -kosli attest generic - --name yourAttestationName - --compliant=false +kosli attest generic + --name yourAttestationName + --compliant=false ``` diff --git a/client_reference/kosli_attest_jira.md b/client_reference/kosli_attest_jira.md index 1043f9e..6f2d990 100644 --- a/client_reference/kosli_attest_jira.md +++ b/client_reference/kosli_attest_jira.md @@ -11,9 +11,9 @@ description: "Report a jira attestation to an artifact or a trail in a Kosli flo kosli attest jira [IMAGE-NAME | FILE-PATH | DIR-PATH] [flags] ``` -Report a jira attestation to an artifact or a trail in a Kosli flow. +Report a jira attestation to an artifact or a trail in a Kosli flow. Parses the given commit's message, current branch name or the content of the `--jira-secondary-source` -argument for Jira issue references of the form: +argument for Jira issue references of the form: 'at least 2 characters long, starting with an uppercase letter project key followed by dash and one or more digits'. @@ -24,7 +24,7 @@ If the `--ignore-branch-match` is set, the branch name is not parsed for a match The found issue references will be checked against Jira to confirm their existence. The attestation is reported in all cases, and its compliance status depends on referencing -existing Jira issues. +existing Jira issues. If you have wrong Jira credentials or wrong Jira-base-url it will be reported as non existing Jira issue. This is because Jira returns same 404 error code in all cases. @@ -34,7 +34,7 @@ the complete list so you can select the once you need. The issue fields uses the https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-issues/#api-rest-api-2-issue-issueidorkey-get-request -The attestation can be bound to a *trail* using the trail name. +The attestation can be bound to a *trail* using the trail name. The attestation can be bound to an *artifact* in two ways: - using the artifact's SHA256 fingerprint which is calculated (based on the `--artifact-type` flag and the artifact name/path argument) or can be provided directly (with the `--fingerprint` flag). - using the artifact's name in the flow yaml template and the git commit from which the artifact is/will be created. Useful when reporting an attestation before creating/reporting the artifact. @@ -54,7 +54,7 @@ In other CI systems, set them explicitly to capture repository metadata. | -t, --artifact-type string | The type of the artifact to calculate its SHA256 fingerprint. One of: [oci, docker, file, dir]. Only required if you want Kosli to calculate the fingerprint for you (i.e. when you don't specify '--fingerprint' on commands that allow it). | | --assert | [optional] Exit with non-zero code if the attestation is non-compliant | | --attachments strings | [optional] The comma-separated list of paths of attachments for the reported attestation. Attachments can be files or directories. All attachments are compressed and uploaded to Kosli's evidence vault. | -| -g, --commit string | [conditional] The git commit for which the attestation is associated to. Becomes required when reporting an attestation for an artifact before reporting it to Kosli. (defaulted in some CIs: [docs](/ci-defaults) ). | +| -g, --commit string | [conditional] The git commit for which the attestation is associated to. Becomes required when reporting an attestation for an artifact before reporting it to Kosli. (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | --description string | [optional] attestation description | | -D, --dry-run | [optional] Run in dry-run mode. When enabled, no data is sent to Kosli and the CLI exits with 0 exit code regardless of any errors. | | -x, --exclude strings | [optional] The comma separated list of directories and files to exclude from fingerprinting. Can take glob patterns. Only applicable for --artifact-type dir. | @@ -65,7 +65,7 @@ In other CI systems, set them explicitly to capture repository metadata. | -h, --help | help for jira | | --ignore-branch-match | Ignore branch name when searching for Jira ticket reference. | | --jira-api-token string | Jira API token (for Jira Cloud) | -| --jira-base-url string | The base url for the jira project, e.g. 'https://kosli.atlassian.net' | +| --jira-base-url string | The base url for the jira project, e.g. `https://kosli.atlassian.net` | | --jira-issue-fields string | [optional] The comma separated list of fields to include from the Jira issue. Default no fields are included. '*all' will give all fields. | | --jira-pat string | Jira personal access token (for self-hosted Jira) | | --jira-project-key strings | [optional] Jira project key to match against. Can be repeated. Defaults to matching any jira project key. | @@ -76,11 +76,11 @@ In other CI systems, set them explicitly to capture repository metadata. | --redact-commit-info strings | [optional] The list of commit info to be redacted before sending to Kosli. Allowed values are one or more of [author, message, branch]. | | --registry-password string | [conditional] The container registry password or access token. Only required if you want to read container image SHA256 digest from a remote container registry. | | --registry-username string | [conditional] The container registry username. Only required if you want to read container image SHA256 digest from a remote container registry. | -| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | --repo-root string | [defaulted] The directory where the source git repository is available. Only used if --commit is used or defaulted in CI, see [docs](/integrations/ci_cd/#defaulted-kosli-command-flags-from-ci-variables) . (default ".") | -| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | -T, --trail string | The Kosli trail name. | | -u, --user-data string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. | @@ -92,111 +92,111 @@ In other CI systems, set them explicitly to capture repository metadata. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli attest jira yourDockerImageName - --artifact-type docker - --name yourAttestationName - --jira-base-url https://kosli.atlassian.net - --jira-username user@domain.com - --jira-api-token yourJiraAPIToken +kosli attest jira yourDockerImageName + --artifact-type docker + --name yourAttestationName + --jira-base-url https://kosli.atlassian.net + --jira-username user@domain.com + --jira-api-token yourJiraAPIToken ``` ```shell -kosli attest jira - --fingerprint yourDockerImageFingerprint - --name yourAttestationName - --jira-base-url https://kosli.atlassian.net - --jira-username user@domain.com - --jira-api-token yourJiraAPIToken +kosli attest jira + --fingerprint yourDockerImageFingerprint + --name yourAttestationName + --jira-base-url https://kosli.atlassian.net + --jira-username user@domain.com + --jira-api-token yourJiraAPIToken ``` ```shell -kosli attest jira - --name yourAttestationName - --jira-base-url https://kosli.atlassian.net - --jira-username user@domain.com - --jira-api-token yourJiraAPIToken +kosli attest jira + --name yourAttestationName + --jira-base-url https://kosli.atlassian.net + --jira-username user@domain.com + --jira-api-token yourJiraAPIToken ``` ```shell -kosli attest jira - --name yourAttestationName - --jira-base-url https://kosli.atlassian.net - --jira-username user@domain.com - --jira-api-token yourJiraAPIToken - --jira-project-key ABC +kosli attest jira + --name yourAttestationName + --jira-base-url https://kosli.atlassian.net + --jira-username user@domain.com + --jira-api-token yourJiraAPIToken + --jira-project-key ABC ``` ```shell -kosli attest jira - --name yourAttestationName - --jira-base-url https://kosli.atlassian.net - --jira-username user@domain.com - --jira-api-token yourJiraAPIToken +kosli attest jira + --name yourAttestationName + --jira-base-url https://kosli.atlassian.net + --jira-username user@domain.com + --jira-api-token yourJiraAPIToken --jira-issue-fields "summary,description,creator" ``` ```shell -kosli attest jira - --name yourTemplateArtifactName.yourAttestationName - --commit yourArtifactGitCommit - --jira-base-url https://kosli.atlassian.net - --jira-username user@domain.com - --jira-api-token yourJiraAPIToken +kosli attest jira + --name yourTemplateArtifactName.yourAttestationName + --commit yourArtifactGitCommit + --jira-base-url https://kosli.atlassian.net + --jira-username user@domain.com + --jira-api-token yourJiraAPIToken ``` ```shell -kosli attest jira - --name yourAttestationName - --jira-base-url https://kosli.atlassian.net - --jira-username user@domain.com - --jira-api-token yourJiraAPIToken - --attachments yourAttachmentPathName +kosli attest jira + --name yourAttestationName + --jira-base-url https://kosli.atlassian.net + --jira-username user@domain.com + --jira-api-token yourJiraAPIToken + --attachments yourAttachmentPathName ``` ```shell -kosli attest jira - --name yourAttestationName - --jira-base-url https://kosli.atlassian.net - --jira-username user@domain.com - --jira-api-token yourJiraAPIToken +kosli attest jira + --name yourAttestationName + --jira-base-url https://kosli.atlassian.net + --jira-username user@domain.com + --jira-api-token yourJiraAPIToken --assert ``` ```shell -kosli attest jira - --name yourAttestationName - --jira-secondary-source ${{ github.head_ref }} - --jira-base-url https://kosli.atlassian.net - --jira-username user@domain.com - --jira-api-token yourJiraAPIToken +kosli attest jira + --name yourAttestationName + --jira-secondary-source ${{ github.head_ref }} + --jira-base-url https://kosli.atlassian.net + --jira-username user@domain.com + --jira-api-token yourJiraAPIToken ``` diff --git a/client_reference/kosli_attest_junit.md b/client_reference/kosli_attest_junit.md index 3477502..b3c80bd 100644 --- a/client_reference/kosli_attest_junit.md +++ b/client_reference/kosli_attest_junit.md @@ -15,9 +15,9 @@ kosli attest junit [IMAGE-NAME | FILE-PATH | DIR-PATH] [flags] Report a junit attestation to an artifact or a trail in a Kosli flow. JUnit xml files are read from the `--results-dir` directory which defaults to the current directory. -The xml files are automatically uploaded as `--attachments` via the `--upload-results` flag which defaults to `true`. +The xml files are automatically uploaded as `--attachments` via the `--upload-results` flag which defaults to `true`. -The attestation can be bound to a *trail* using the trail name. +The attestation can be bound to a *trail* using the trail name. The attestation can be bound to an *artifact* in two ways: - using the artifact's SHA256 fingerprint which is calculated (based on the `--artifact-type` flag and the artifact name/path argument) or can be provided directly (with the `--fingerprint` flag). - using the artifact's name in the flow yaml template and the git commit from which the artifact is/will be created. Useful when reporting an attestation before creating/reporting the artifact. @@ -36,7 +36,7 @@ In other CI systems, set them explicitly to capture repository metadata. | --annotate stringToString | [optional] Annotate the attestation with data using key=value. | | -t, --artifact-type string | The type of the artifact to calculate its SHA256 fingerprint. One of: [oci, docker, file, dir]. Only required if you want Kosli to calculate the fingerprint for you (i.e. when you don't specify '--fingerprint' on commands that allow it). | | --attachments strings | [optional] The comma-separated list of paths of attachments for the reported attestation. Attachments can be files or directories. All attachments are compressed and uploaded to Kosli's evidence vault. | -| -g, --commit string | [conditional] The git commit for which the attestation is associated to. Becomes required when reporting an attestation for an artifact before reporting it to Kosli. (defaulted in some CIs: [docs](/ci-defaults) ). | +| -g, --commit string | [conditional] The git commit for which the attestation is associated to. Becomes required when reporting an attestation for an artifact before reporting it to Kosli. (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | --description string | [optional] attestation description | | -D, --dry-run | [optional] Run in dry-run mode. When enabled, no data is sent to Kosli and the CLI exits with 0 exit code regardless of any errors. | | -x, --exclude strings | [optional] The comma separated list of directories and files to exclude from fingerprinting. Can take glob patterns. Only applicable for --artifact-type dir. | @@ -50,11 +50,11 @@ In other CI systems, set them explicitly to capture repository metadata. | --redact-commit-info strings | [optional] The list of commit info to be redacted before sending to Kosli. Allowed values are one or more of [author, message, branch]. | | --registry-password string | [conditional] The container registry password or access token. Only required if you want to read container image SHA256 digest from a remote container registry. | | --registry-username string | [conditional] The container registry username. Only required if you want to read container image SHA256 digest from a remote container registry. | -| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | --repo-root string | [defaulted] The directory where the source git repository is available. Only used if --commit is used or defaulted in CI, see [docs](/integrations/ci_cd/#defaulted-kosli-command-flags-from-ci-variables) . (default ".") | -| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | -R, --results-dir string | [defaulted] The path to a directory with JUnit test results. By default, the directory will be uploaded to Kosli's evidence vault. (default ".") | | -T, --trail string | The Kosli trail name. | | --upload-results | [defaulted] Whether to upload the provided Junit results directory as an attachment to Kosli or not. (default true) | @@ -68,7 +68,7 @@ In other CI systems, set them explicitly to capture repository metadata. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -90,50 +90,50 @@ In other CI systems, set them explicitly to capture repository metadata. ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli attest junit yourDockerImageName - --artifact-type docker - --name yourAttestationName - --results-dir yourFolderWithJUnitResults +kosli attest junit yourDockerImageName + --artifact-type docker + --name yourAttestationName + --results-dir yourFolderWithJUnitResults ``` ```shell -kosli attest junit - --fingerprint yourDockerImageFingerprint - --name yourAttestationName - --results-dir yourFolderWithJUnitResults +kosli attest junit + --fingerprint yourDockerImageFingerprint + --name yourAttestationName + --results-dir yourFolderWithJUnitResults ``` ```shell -kosli attest junit - --name yourAttestationName - --results-dir yourFolderWithJUnitResults +kosli attest junit + --name yourAttestationName + --results-dir yourFolderWithJUnitResults ``` ```shell -kosli attest junit - --name yourTemplateArtifactName.yourAttestationName - --commit yourArtifactGitCommit - --results-dir yourFolderWithJUnitResults +kosli attest junit + --name yourTemplateArtifactName.yourAttestationName + --commit yourArtifactGitCommit + --results-dir yourFolderWithJUnitResults ``` ```shell -kosli attest junit - --name yourAttestationName - --results-dir yourFolderWithJUnitResults - --attachments yourAttachmentPathName +kosli attest junit + --name yourAttestationName + --results-dir yourFolderWithJUnitResults + --attachments yourAttachmentPathName ``` diff --git a/client_reference/kosli_attest_pullrequest_azure.md b/client_reference/kosli_attest_pullrequest_azure.md index 09af5ab..bdd4c73 100644 --- a/client_reference/kosli_attest_pullrequest_azure.md +++ b/client_reference/kosli_attest_pullrequest_azure.md @@ -11,11 +11,11 @@ description: "Report an Azure Devops pull request attestation to an artifact or kosli attest pullrequest azure [IMAGE-NAME | FILE-PATH | DIR-PATH] [flags] ``` -Report an Azure Devops pull request attestation to an artifact or a trail in a Kosli flow. +Report an Azure Devops pull request attestation to an artifact or a trail in a Kosli flow. It checks if a pull request exists for the artifact (based on its git commit) and reports the pull-request attestation to the artifact in Kosli. -The attestation can be bound to a *trail* using the trail name. +The attestation can be bound to a *trail* using the trail name. The attestation can be bound to an *artifact* in two ways: - using the artifact's SHA256 fingerprint which is calculated (based on the `--artifact-type` flag and the artifact name/path argument) or can be provided directly (with the `--fingerprint` flag). - using the artifact's name in the flow yaml template and the git commit from which the artifact is/will be created. Useful when reporting an attestation before creating/reporting the artifact. @@ -27,9 +27,9 @@ The attestation can be bound to an *artifact* in two ways: | -t, --artifact-type string | The type of the artifact to calculate its SHA256 fingerprint. One of: [oci, docker, file, dir]. Only required if you want Kosli to calculate the fingerprint for you (i.e. when you don't specify '--fingerprint' on commands that allow it). | | --assert | [optional] Exit with non-zero code if no pull requests found for the given commit. | | --attachments strings | [optional] The comma-separated list of paths of attachments for the reported attestation. Attachments can be files or directories. All attachments are compressed and uploaded to Kosli's evidence vault. | -| --azure-org-url string | Azure organization url. E.g. "https://dev.azure.com/myOrg" (defaulted if you are running in Azure Devops pipelines: [docs](/ci-defaults) ). | +| --azure-org-url string | Azure organization url. E.g. `https://dev.azure.com/myOrg` (defaulted if you are running in Azure Devops pipelines: [docs](/integrations/ci_cd) ). | | --azure-token string | Azure Personal Access token. | -| -g, --commit string | [conditional] The git commit for which the attestation is associated to. Becomes required when reporting an attestation for an artifact before reporting it to Kosli. (defaulted in some CIs: [docs](/ci-defaults) ). | +| -g, --commit string | [conditional] The git commit for which the attestation is associated to. Becomes required when reporting an attestation for an artifact before reporting it to Kosli. (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | --description string | [optional] attestation description | | -D, --dry-run | [optional] Run in dry-run mode. When enabled, no data is sent to Kosli and the CLI exits with 0 exit code regardless of any errors. | | -x, --exclude strings | [optional] The comma separated list of directories and files to exclude from fingerprinting. Can take glob patterns. Only applicable for --artifact-type dir. | @@ -40,15 +40,15 @@ The attestation can be bound to an *artifact* in two ways: | -h, --help | help for azure | | -n, --name string | The name of the attestation as declared in the flow or trail yaml template. | | -o, --origin-url string | [optional] The url pointing to where the attestation came from or is related. (defaulted to the CI url in some CIs: [docs](/integrations/ci_cd/#defaulted-kosli-command-flags-from-ci-variables) ). | -| --project string | Azure project.(defaulted if you are running in Azure Devops pipelines: [docs](/ci-defaults) ). | +| --project string | Azure project.(defaulted if you are running in Azure Devops pipelines: [docs](/integrations/ci_cd) ). | | --redact-commit-info strings | [optional] The list of commit info to be redacted before sending to Kosli. Allowed values are one or more of [author, message, branch]. | | --registry-password string | [conditional] The container registry password or access token. Only required if you want to read container image SHA256 digest from a remote container registry. | | --registry-username string | [conditional] The container registry username. Only required if you want to read container image SHA256 digest from a remote container registry. | -| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | --repo-root string | [defaulted] The directory where the source git repository is available. Only used if --commit is used or defaulted in CI, see [docs](/integrations/ci_cd/#defaulted-kosli-command-flags-from-ci-variables) . (default ".") | -| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | -T, --trail string | The Kosli trail name. | | -u, --user-data string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. | @@ -60,88 +60,88 @@ The attestation can be bound to an *artifact* in two ways: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli attest pullrequest azure yourDockerImageName - --artifact-type docker - --name yourAttestationName - --azure-org-url https://dev.azure.com/myOrg - --project yourAzureDevOpsProject - --azure-token yourAzureToken - --commit yourGitCommitSha1 - --repository yourAzureGitRepository +kosli attest pullrequest azure yourDockerImageName + --artifact-type docker + --name yourAttestationName + --azure-org-url https://dev.azure.com/myOrg + --project yourAzureDevOpsProject + --azure-token yourAzureToken + --commit yourGitCommitSha1 + --repository yourAzureGitRepository ``` ```shell -kosli attest pullrequest azure - --fingerprint yourDockerImageFingerprint - --name yourAttestationName - --azure-org-url https://dev.azure.com/myOrg - --project yourAzureDevOpsProject - --azure-token yourAzureToken - --commit yourGitCommitSha1 - --repository yourAzureGitRepository +kosli attest pullrequest azure + --fingerprint yourDockerImageFingerprint + --name yourAttestationName + --azure-org-url https://dev.azure.com/myOrg + --project yourAzureDevOpsProject + --azure-token yourAzureToken + --commit yourGitCommitSha1 + --repository yourAzureGitRepository ``` ```shell -kosli attest pullrequest azure - --name yourAttestationName - --azure-org-url https://dev.azure.com/myOrg - --project yourAzureDevOpsProject - --azure-token yourAzureToken - --commit yourGitCommitSha1 - --repository yourAzureGitRepository +kosli attest pullrequest azure + --name yourAttestationName + --azure-org-url https://dev.azure.com/myOrg + --project yourAzureDevOpsProject + --azure-token yourAzureToken + --commit yourGitCommitSha1 + --repository yourAzureGitRepository ``` ```shell -kosli attest pullrequest azure - --name yourTemplateArtifactName.yourAttestationName - --azure-org-url https://dev.azure.com/myOrg - --project yourAzureDevOpsProject - --azure-token yourAzureToken - --commit yourGitCommitSha1 - --repository yourAzureGitRepository +kosli attest pullrequest azure + --name yourTemplateArtifactName.yourAttestationName + --azure-org-url https://dev.azure.com/myOrg + --project yourAzureDevOpsProject + --azure-token yourAzureToken + --commit yourGitCommitSha1 + --repository yourAzureGitRepository ``` ```shell -kosli attest pullrequest azure - --name yourAttestationName - --azure-org-url https://dev.azure.com/myOrg - --project yourAzureDevOpsProject - --azure-token yourAzureToken - --commit yourGitCommitSha1 - --repository yourAzureGitRepository - --attachments=yourAttachmentPathName +kosli attest pullrequest azure + --name yourAttestationName + --azure-org-url https://dev.azure.com/myOrg + --project yourAzureDevOpsProject + --azure-token yourAzureToken + --commit yourGitCommitSha1 + --repository yourAzureGitRepository + --attachments=yourAttachmentPathName ``` ```shell -kosli attest pullrequest azure - --name yourTemplateArtifactName.yourAttestationName - --azure-org-url https://dev.azure.com/myOrg - --project yourAzureDevOpsProject - --azure-token yourAzureToken - --commit yourGitCommitSha1 - --repository yourAzureGitRepository +kosli attest pullrequest azure + --name yourTemplateArtifactName.yourAttestationName + --azure-org-url https://dev.azure.com/myOrg + --project yourAzureDevOpsProject + --azure-token yourAzureToken + --commit yourGitCommitSha1 + --repository yourAzureGitRepository --assert ``` diff --git a/client_reference/kosli_attest_pullrequest_bitbucket.md b/client_reference/kosli_attest_pullrequest_bitbucket.md index bf02ab1..7df0786 100644 --- a/client_reference/kosli_attest_pullrequest_bitbucket.md +++ b/client_reference/kosli_attest_pullrequest_bitbucket.md @@ -11,12 +11,12 @@ description: "Report a Bitbucket pull request attestation to an artifact or a tr kosli attest pullrequest bitbucket [IMAGE-NAME | FILE-PATH | DIR-PATH] [flags] ``` -Report a Bitbucket pull request attestation to an artifact or a trail in a Kosli flow. +Report a Bitbucket pull request attestation to an artifact or a trail in a Kosli flow. It checks if a pull request exists for a given merge commit and reports the pull-request attestation to Kosli. Authentication to Bitbucket can be done with access token (recommended) or app passwords. Credentials need to have read access for both repos and pull requests. -The attestation can be bound to a *trail* using the trail name. +The attestation can be bound to a *trail* using the trail name. The attestation can be bound to an *artifact* in two ways: - using the artifact's SHA256 fingerprint which is calculated (based on the `--artifact-type` flag and the artifact name/path argument) or can be provided directly (with the `--fingerprint` flag). - using the artifact's name in the flow yaml template and the git commit from which the artifact is/will be created. Useful when reporting an attestation before creating/reporting the artifact. @@ -28,8 +28,8 @@ The attestation can be bound to an *artifact* in two ways: | -t, --artifact-type string | The type of the artifact to calculate its SHA256 fingerprint. One of: [oci, docker, file, dir]. Only required if you want Kosli to calculate the fingerprint for you (i.e. when you don't specify '--fingerprint' on commands that allow it). | | --assert | [optional] Exit with non-zero code if no pull requests found for the given commit. | | --attachments strings | [optional] The comma-separated list of paths of attachments for the reported attestation. Attachments can be files or directories. All attachments are compressed and uploaded to Kosli's evidence vault. | -| --bitbucket-access-token string | Bitbucket repo/project/workspace access token. See https://developer.atlassian.com/cloud/bitbucket/rest/intro/#access-tokens for more details. | -| --bitbucket-password string | Bitbucket App password. See https://developer.atlassian.com/cloud/bitbucket/rest/intro/#authentication for more details. | +| --bitbucket-access-token string | Bitbucket repo/project/workspace access token. See [Bitbucket access tokens](https://developer.atlassian.com/cloud/bitbucket/rest/intro/#access-tokens) for more details. | +| --bitbucket-password string | Bitbucket App password. See [Bitbucket authentication](https://developer.atlassian.com/cloud/bitbucket/rest/intro/#authentication) for more details. | | --bitbucket-username string | Bitbucket username. Only needed if you use --bitbucket-password | | --bitbucket-workspace string | Bitbucket workspace ID. | | -g, --commit string | the git merge commit to be checked for associated pull requests. | @@ -46,11 +46,11 @@ The attestation can be bound to an *artifact* in two ways: | --redact-commit-info strings | [optional] The list of commit info to be redacted before sending to Kosli. Allowed values are one or more of [author, message, branch]. | | --registry-password string | [conditional] The container registry password or access token. Only required if you want to read container image SHA256 digest from a remote container registry. | | --registry-username string | [conditional] The container registry username. Only required if you want to read container image SHA256 digest from a remote container registry. | -| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | --repo-root string | [defaulted] The directory where the source git repository is available. Only used if --commit is used or defaulted in CI, see [docs](/integrations/ci_cd/#defaulted-kosli-command-flags-from-ci-variables) . (default ".") | -| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | -T, --trail string | The Kosli trail name. | | -u, --user-data string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. | @@ -62,82 +62,82 @@ The attestation can be bound to an *artifact* in two ways: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli attest pullrequest bitbucket yourDockerImageName - --artifact-type docker - --name yourAttestationName - --bitbucket-access-token yourBitbucketAccessToken - --bitbucket-workspace yourBitbucketWorkspace - --commit yourArtifactGitCommit - --repository yourBitbucketGitRepository +kosli attest pullrequest bitbucket yourDockerImageName + --artifact-type docker + --name yourAttestationName + --bitbucket-access-token yourBitbucketAccessToken + --bitbucket-workspace yourBitbucketWorkspace + --commit yourArtifactGitCommit + --repository yourBitbucketGitRepository ``` ```shell -kosli attest pullrequest bitbucket - --fingerprint yourDockerImageFingerprint - --name yourAttestationName - --bitbucket-access-token yourBitbucketAccessToken - --bitbucket-workspace yourBitbucketWorkspace - --commit yourArtifactGitCommit - --repository yourBitbucketGitRepository +kosli attest pullrequest bitbucket + --fingerprint yourDockerImageFingerprint + --name yourAttestationName + --bitbucket-access-token yourBitbucketAccessToken + --bitbucket-workspace yourBitbucketWorkspace + --commit yourArtifactGitCommit + --repository yourBitbucketGitRepository ``` ```shell -kosli attest pullrequest bitbucket - --name yourAttestationName - --bitbucket-access-token yourBitbucketAccessToken - --bitbucket-workspace yourBitbucketWorkspace - --commit yourArtifactGitCommit - --repository yourBitbucketGitRepository +kosli attest pullrequest bitbucket + --name yourAttestationName + --bitbucket-access-token yourBitbucketAccessToken + --bitbucket-workspace yourBitbucketWorkspace + --commit yourArtifactGitCommit + --repository yourBitbucketGitRepository ``` ```shell -kosli attest pullrequest bitbucket - --name yourTemplateArtifactName.yourAttestationName - --bitbucket-access-token yourBitbucketAccessToken - --bitbucket-workspace yourBitbucketWorkspace - --commit yourArtifactGitCommit - --repository yourBitbucketGitRepository +kosli attest pullrequest bitbucket + --name yourTemplateArtifactName.yourAttestationName + --bitbucket-access-token yourBitbucketAccessToken + --bitbucket-workspace yourBitbucketWorkspace + --commit yourArtifactGitCommit + --repository yourBitbucketGitRepository ``` ```shell -kosli attest pullrequest bitbucket - --name yourAttestationName - --bitbucket-access-token yourBitbucketAccessToken - --bitbucket-workspace yourBitbucketWorkspace - --commit yourArtifactGitCommit - --repository yourBitbucketGitRepository - --attachments=yourAttachmentPathName +kosli attest pullrequest bitbucket + --name yourAttestationName + --bitbucket-access-token yourBitbucketAccessToken + --bitbucket-workspace yourBitbucketWorkspace + --commit yourArtifactGitCommit + --repository yourBitbucketGitRepository + --attachments=yourAttachmentPathName ``` ```shell -kosli attest pullrequest bitbucket - --name yourTemplateArtifactName.yourAttestationName - --bitbucket-access-token yourBitbucketAccessToken - --bitbucket-workspace yourBitbucketWorkspace - --commit yourArtifactGitCommit - --repository yourBitbucketGitRepository +kosli attest pullrequest bitbucket + --name yourTemplateArtifactName.yourAttestationName + --bitbucket-access-token yourBitbucketAccessToken + --bitbucket-workspace yourBitbucketWorkspace + --commit yourArtifactGitCommit + --repository yourBitbucketGitRepository --assert ``` diff --git a/client_reference/kosli_attest_pullrequest_github.md b/client_reference/kosli_attest_pullrequest_github.md index 18e87f6..ed3540d 100644 --- a/client_reference/kosli_attest_pullrequest_github.md +++ b/client_reference/kosli_attest_pullrequest_github.md @@ -11,11 +11,11 @@ description: "Report a Github pull request attestation to an artifact or a trail kosli attest pullrequest github [IMAGE-NAME | FILE-PATH | DIR-PATH] [flags] ``` -Report a Github pull request attestation to an artifact or a trail in a Kosli flow. +Report a Github pull request attestation to an artifact or a trail in a Kosli flow. It checks if a pull request exists for a given merge commit and reports the pull-request attestation to Kosli. -The attestation can be bound to a *trail* using the trail name. +The attestation can be bound to a *trail* using the trail name. The attestation can be bound to an *artifact* in two ways: - using the artifact's SHA256 fingerprint which is calculated (based on the `--artifact-type` flag and the artifact name/path argument) or can be provided directly (with the `--fingerprint` flag). - using the artifact's name in the flow yaml template and the git commit from which the artifact is/will be created. Useful when reporting an attestation before creating/reporting the artifact. @@ -36,7 +36,7 @@ The attestation can be bound to an *artifact* in two ways: | -F, --fingerprint string | [conditional] The SHA256 fingerprint of the artifact to attach the attestation to. Only required if the attestation is for an artifact and --artifact-type and artifact name/path are not used. | | -f, --flow string | The Kosli flow name. | | --github-base-url string | [optional] GitHub base URL (only needed for GitHub Enterprise installations). | -| --github-org string | Github organization. (defaulted if you are running in GitHub Actions: [docs](/ci-defaults) ). | +| --github-org string | Github organization. (defaulted if you are running in GitHub Actions: [docs](/integrations/ci_cd) ). | | --github-token string | Github token. | | -h, --help | help for github | | -n, --name string | The name of the attestation as declared in the flow or trail yaml template. | @@ -44,11 +44,11 @@ The attestation can be bound to an *artifact* in two ways: | --redact-commit-info strings | [optional] The list of commit info to be redacted before sending to Kosli. Allowed values are one or more of [author, message, branch]. | | --registry-password string | [conditional] The container registry password or access token. Only required if you want to read container image SHA256 digest from a remote container registry. | | --registry-username string | [conditional] The container registry username. Only required if you want to read container image SHA256 digest from a remote container registry. | -| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | --repo-root string | [defaulted] The directory where the source git repository is available. Only used if --commit is used or defaulted in CI, see [docs](/integrations/ci_cd/#defaulted-kosli-command-flags-from-ci-variables) . (default ".") | -| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | -T, --trail string | The Kosli trail name. | | -u, --user-data string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. | @@ -60,7 +60,7 @@ The attestation can be bound to an *artifact* in two ways: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -77,75 +77,75 @@ The attestation can be bound to an *artifact* in two ways: ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli attest pullrequest github yourDockerImageName - --artifact-type docker - --name yourAttestationName - --github-token yourGithubToken - --github-org yourGithubOrg - --commit yourArtifactGitCommit - --repository yourGithubGitRepository +kosli attest pullrequest github yourDockerImageName + --artifact-type docker + --name yourAttestationName + --github-token yourGithubToken + --github-org yourGithubOrg + --commit yourArtifactGitCommit + --repository yourGithubGitRepository ``` ```shell -kosli attest pullrequest github - --fingerprint yourDockerImageFingerprint - --name yourAttestationName - --github-token yourGithubToken - --github-org yourGithubOrg - --commit yourArtifactGitCommit - --repository yourGithubGitRepository +kosli attest pullrequest github + --fingerprint yourDockerImageFingerprint + --name yourAttestationName + --github-token yourGithubToken + --github-org yourGithubOrg + --commit yourArtifactGitCommit + --repository yourGithubGitRepository ``` ```shell -kosli attest pullrequest github - --name yourAttestationName - --github-token yourGithubToken - --github-org yourGithubOrg - --commit yourArtifactGitCommit - --repository yourGithubGitRepository +kosli attest pullrequest github + --name yourAttestationName + --github-token yourGithubToken + --github-org yourGithubOrg + --commit yourArtifactGitCommit + --repository yourGithubGitRepository ``` ```shell -kosli attest pullrequest github - --name yourTemplateArtifactName.yourAttestationName - --github-token yourGithubToken - --github-org yourGithubOrg - --commit yourArtifactGitCommit - --repository yourGithubGitRepository +kosli attest pullrequest github + --name yourTemplateArtifactName.yourAttestationName + --github-token yourGithubToken + --github-org yourGithubOrg + --commit yourArtifactGitCommit + --repository yourGithubGitRepository ``` ```shell -kosli attest pullrequest github - --name yourAttestationName - --github-token yourGithubToken - --github-org yourGithubOrg - --commit yourArtifactGitCommit - --repository yourGithubGitRepository - --attachments=yourAttachmentPathName +kosli attest pullrequest github + --name yourAttestationName + --github-token yourGithubToken + --github-org yourGithubOrg + --commit yourArtifactGitCommit + --repository yourGithubGitRepository + --attachments=yourAttachmentPathName ``` ```shell -kosli attest pullrequest github - --name yourTemplateArtifactName.yourAttestationName - --github-token yourGithubToken - --github-org yourGithubOrg - --commit yourArtifactGitCommit - --repository yourGithubGitRepository +kosli attest pullrequest github + --name yourTemplateArtifactName.yourAttestationName + --github-token yourGithubToken + --github-org yourGithubOrg + --commit yourArtifactGitCommit + --repository yourGithubGitRepository --assert ``` diff --git a/client_reference/kosli_attest_pullrequest_gitlab.md b/client_reference/kosli_attest_pullrequest_gitlab.md index f61c894..6645a0e 100644 --- a/client_reference/kosli_attest_pullrequest_gitlab.md +++ b/client_reference/kosli_attest_pullrequest_gitlab.md @@ -11,11 +11,11 @@ description: "Report a Gitlab merge request attestation to an artifact or a trai kosli attest pullrequest gitlab [IMAGE-NAME | FILE-PATH | DIR-PATH] [flags] ``` -Report a Gitlab merge request attestation to an artifact or a trail in a Kosli flow. +Report a Gitlab merge request attestation to an artifact or a trail in a Kosli flow. It checks if a merge request exists for a given merge commit and reports the merge request attestation to Kosli. -The attestation can be bound to a *trail* using the trail name. +The attestation can be bound to a *trail* using the trail name. The attestation can be bound to an *artifact* in two ways: - using the artifact's SHA256 fingerprint which is calculated (based on the `--artifact-type` flag and the artifact name/path argument) or can be provided directly (with the `--fingerprint` flag). - using the artifact's name in the flow yaml template and the git commit from which the artifact is/will be created. Useful when reporting an attestation before creating/reporting the artifact. @@ -36,7 +36,7 @@ The attestation can be bound to an *artifact* in two ways: | -F, --fingerprint string | [conditional] The SHA256 fingerprint of the artifact to attach the attestation to. Only required if the attestation is for an artifact and --artifact-type and artifact name/path are not used. | | -f, --flow string | The Kosli flow name. | | --gitlab-base-url string | [optional] Gitlab base URL (only needed for on-prem Gitlab installations). | -| --gitlab-org string | Gitlab organization. (defaulted if you are running in Gitlab Pipelines: [docs](/ci-defaults) ). | +| --gitlab-org string | Gitlab organization. (defaulted if you are running in Gitlab Pipelines: [docs](/integrations/ci_cd) ). | | --gitlab-token string | Gitlab token. | | -h, --help | help for gitlab | | -n, --name string | The name of the attestation as declared in the flow or trail yaml template. | @@ -44,11 +44,11 @@ The attestation can be bound to an *artifact* in two ways: | --redact-commit-info strings | [optional] The list of commit info to be redacted before sending to Kosli. Allowed values are one or more of [author, message, branch]. | | --registry-password string | [conditional] The container registry password or access token. Only required if you want to read container image SHA256 digest from a remote container registry. | | --registry-username string | [conditional] The container registry username. Only required if you want to read container image SHA256 digest from a remote container registry. | -| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | --repo-root string | [defaulted] The directory where the source git repository is available. Only used if --commit is used or defaulted in CI, see [docs](/integrations/ci_cd/#defaulted-kosli-command-flags-from-ci-variables) . (default ".") | -| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | -T, --trail string | The Kosli trail name. | | -u, --user-data string | [optional] The path to a JSON file containing additional data you would like to attach to the attestation. | @@ -60,7 +60,7 @@ The attestation can be bound to an *artifact* in two ways: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -77,75 +77,75 @@ The attestation can be bound to an *artifact* in two ways: ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli attest pullrequest gitlab yourDockerImageName - --artifact-type docker - --name yourAttestationName - --gitlab-token yourGitlabToken - --gitlab-org yourGitlabOrg - --commit yourArtifactGitCommit - --repository yourGithubGitRepository +kosli attest pullrequest gitlab yourDockerImageName + --artifact-type docker + --name yourAttestationName + --gitlab-token yourGitlabToken + --gitlab-org yourGitlabOrg + --commit yourArtifactGitCommit + --repository yourGithubGitRepository ``` ```shell -kosli attest pullrequest gitlab - --fingerprint yourDockerImageFingerprint - --name yourAttestationName - --gitlab-token yourGitlabToken - --gitlab-org yourGitlabOrg - --commit yourArtifactGitCommit - --repository yourGithubGitRepository +kosli attest pullrequest gitlab + --fingerprint yourDockerImageFingerprint + --name yourAttestationName + --gitlab-token yourGitlabToken + --gitlab-org yourGitlabOrg + --commit yourArtifactGitCommit + --repository yourGithubGitRepository ``` ```shell -kosli attest pullrequest gitlab - --name yourAttestationName - --gitlab-token yourGitlabToken - --gitlab-org yourGitlabOrg - --commit yourArtifactGitCommit - --repository yourGithubGitRepository +kosli attest pullrequest gitlab + --name yourAttestationName + --gitlab-token yourGitlabToken + --gitlab-org yourGitlabOrg + --commit yourArtifactGitCommit + --repository yourGithubGitRepository ``` ```shell -kosli attest pullrequest gitlab - --name yourTemplateArtifactName.yourAttestationName - --gitlab-token yourGitlabToken - --gitlab-org yourGitlabOrg - --commit yourArtifactGitCommit - --repository yourGithubGitRepository +kosli attest pullrequest gitlab + --name yourTemplateArtifactName.yourAttestationName + --gitlab-token yourGitlabToken + --gitlab-org yourGitlabOrg + --commit yourArtifactGitCommit + --repository yourGithubGitRepository ``` ```shell -kosli attest pullrequest gitlab - --name yourAttestationName - --gitlab-token yourGitlabToken - --gitlab-org yourGitlabOrg - --commit yourArtifactGitCommit - --repository yourGithubGitRepository - --attachments=yourAttachmentPathName +kosli attest pullrequest gitlab + --name yourAttestationName + --gitlab-token yourGitlabToken + --gitlab-org yourGitlabOrg + --commit yourArtifactGitCommit + --repository yourGithubGitRepository + --attachments=yourAttachmentPathName ``` ```shell -kosli attest pullrequest gitlab - --name yourTemplateArtifactName.yourAttestationName - --gitlab-token yourGitlabToken - --gitlab-org yourGitlabOrg - --commit yourArtifactGitCommit - --repository yourGithubGitRepository +kosli attest pullrequest gitlab + --name yourTemplateArtifactName.yourAttestationName + --gitlab-token yourGitlabToken + --gitlab-org yourGitlabOrg + --commit yourArtifactGitCommit + --repository yourGithubGitRepository --assert ``` diff --git a/client_reference/kosli_attest_snyk.md b/client_reference/kosli_attest_snyk.md index 343987e..47fa320 100644 --- a/client_reference/kosli_attest_snyk.md +++ b/client_reference/kosli_attest_snyk.md @@ -11,8 +11,8 @@ description: "Report a snyk attestation to an artifact or a trail in a Kosli flo kosli attest snyk [IMAGE-NAME | FILE-PATH | DIR-PATH] [flags] ``` -Report a snyk attestation to an artifact or a trail in a Kosli flow. -Only SARIF snyk output is accepted. +Report a snyk attestation to an artifact or a trail in a Kosli flow. +Only SARIF snyk output is accepted. Snyk output can be for "snyk code test", "snyk container test", or "snyk iac test". The `--scan-results` .json file is analyzed and a summary of the scan results are reported to Kosli. @@ -21,7 +21,7 @@ By default, the `--scan-results` .json file is also uploaded to Kosli's evidence You can disable that by setting `--upload-results=false` -The attestation can be bound to a *trail* using the trail name. +The attestation can be bound to a *trail* using the trail name. The attestation can be bound to an *artifact* in two ways: - using the artifact's SHA256 fingerprint which is calculated (based on the `--artifact-type` flag and the artifact name/path argument) or can be provided directly (with the `--fingerprint` flag). - using the artifact's name in the flow yaml template and the git commit from which the artifact is/will be created. Useful when reporting an attestation before creating/reporting the artifact. @@ -40,7 +40,7 @@ In other CI systems, set them explicitly to capture repository metadata. | --annotate stringToString | [optional] Annotate the attestation with data using key=value. | | -t, --artifact-type string | The type of the artifact to calculate its SHA256 fingerprint. One of: [oci, docker, file, dir]. Only required if you want Kosli to calculate the fingerprint for you (i.e. when you don't specify '--fingerprint' on commands that allow it). | | --attachments strings | [optional] The comma-separated list of paths of attachments for the reported attestation. Attachments can be files or directories. All attachments are compressed and uploaded to Kosli's evidence vault. | -| -g, --commit string | [conditional] The git commit for which the attestation is associated to. Becomes required when reporting an attestation for an artifact before reporting it to Kosli. (defaulted in some CIs: [docs](/ci-defaults) ). | +| -g, --commit string | [conditional] The git commit for which the attestation is associated to. Becomes required when reporting an attestation for an artifact before reporting it to Kosli. (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | --description string | [optional] attestation description | | -D, --dry-run | [optional] Run in dry-run mode. When enabled, no data is sent to Kosli and the CLI exits with 0 exit code regardless of any errors. | | -x, --exclude strings | [optional] The comma separated list of directories and files to exclude from fingerprinting. Can take glob patterns. Only applicable for --artifact-type dir. | @@ -54,11 +54,11 @@ In other CI systems, set them explicitly to capture repository metadata. | --redact-commit-info strings | [optional] The list of commit info to be redacted before sending to Kosli. Allowed values are one or more of [author, message, branch]. | | --registry-password string | [conditional] The container registry password or access token. Only required if you want to read container image SHA256 digest from a remote container registry. | | --registry-username string | [conditional] The container registry username. Only required if you want to read container image SHA256 digest from a remote container registry. | -| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | --repo-root string | [defaulted] The directory where the source git repository is available. Only used if --commit is used or defaulted in CI, see [docs](/integrations/ci_cd/#defaulted-kosli-command-flags-from-ci-variables) . (default ".") | -| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | -R, --scan-results string | The path to Snyk scan SARIF results file from 'snyk test' and 'snyk container test'. By default, the Snyk results will be uploaded to Kosli's evidence vault. | | -T, --trail string | The Kosli trail name. | | --upload-results | [defaulted] Whether to upload the provided Snyk results file as an attachment to Kosli or not. (default true) | @@ -72,7 +72,7 @@ In other CI systems, set them explicitly to capture repository metadata. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -94,59 +94,59 @@ In other CI systems, set them explicitly to capture repository metadata. ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli attest snyk yourDockerImageName - --artifact-type docker - --name yourAttestationName - --scan-results yourSnykSARIFScanResults +kosli attest snyk yourDockerImageName + --artifact-type docker + --name yourAttestationName + --scan-results yourSnykSARIFScanResults ``` ```shell -kosli attest snyk - --fingerprint yourDockerImageFingerprint - --name yourAttestationName - --scan-results yourSnykSARIFScanResults +kosli attest snyk + --fingerprint yourDockerImageFingerprint + --name yourAttestationName + --scan-results yourSnykSARIFScanResults ``` ```shell -kosli attest snyk - --name yourAttestationName - --scan-results yourSnykSARIFScanResults +kosli attest snyk + --name yourAttestationName + --scan-results yourSnykSARIFScanResults ``` ```shell -kosli attest snyk - --name yourTemplateArtifactName.yourAttestationName - --commit yourArtifactGitCommit - --scan-results yourSnykSARIFScanResults +kosli attest snyk + --name yourTemplateArtifactName.yourAttestationName + --commit yourArtifactGitCommit + --scan-results yourSnykSARIFScanResults ``` ```shell -kosli attest snyk - --name yourAttestationName - --scan-results yourSnykSARIFScanResults - --attachments yourEvidencePathName +kosli attest snyk + --name yourAttestationName + --scan-results yourSnykSARIFScanResults + --attachments yourEvidencePathName ``` ```shell -kosli attest snyk - --name yourAttestationName - --scan-results yourSnykSARIFScanResults - --upload-results=false +kosli attest snyk + --name yourAttestationName + --scan-results yourSnykSARIFScanResults + --upload-results=false ``` diff --git a/client_reference/kosli_attest_sonar.md b/client_reference/kosli_attest_sonar.md index 2fbd2ae..862ec66 100644 --- a/client_reference/kosli_attest_sonar.md +++ b/client_reference/kosli_attest_sonar.md @@ -11,7 +11,7 @@ description: "Report a SonarQube attestation to an artifact or a trail in a Kosl kosli attest sonar [IMAGE-NAME | FILE-PATH | DIR-PATH] [flags] ``` -Report a SonarQube attestation to an artifact or a trail in a Kosli flow. +Report a SonarQube attestation to an artifact or a trail in a Kosli flow. Retrieves results for the specified scan from SonarQube Cloud or SonarQube Server and attests them to Kosli. The results are parsed to find the status of the project's quality gate which is used to determine the attestation's compliance status. Both branch scans and pull request scans are supported. @@ -39,7 +39,7 @@ Note that if your project is very large and you are using SonarQube Cloud's auto In this case, we recommend using Kosli's Sonar webhook integration ( [docs](/integrations/sonar/) ) rather than the CLI to attest the scan results. -The attestation can be bound to a *trail* using the trail name. +The attestation can be bound to a *trail* using the trail name. The attestation can be bound to an *artifact* in two ways: - using the artifact's SHA256 fingerprint which is calculated (based on the `--artifact-type` flag and the artifact name/path argument) or can be provided directly (with the `--fingerprint` flag). - using the artifact's name in the flow yaml template and the git commit from which the artifact is/will be created. Useful when reporting an attestation before creating/reporting the artifact. @@ -50,7 +50,7 @@ The attestation can be bound to an *artifact* in two ways: | --annotate stringToString | [optional] Annotate the attestation with data using key=value. | | -t, --artifact-type string | The type of the artifact to calculate its SHA256 fingerprint. One of: [oci, docker, file, dir]. Only required if you want Kosli to calculate the fingerprint for you (i.e. when you don't specify '--fingerprint' on commands that allow it). | | --attachments strings | [optional] The comma-separated list of paths of attachments for the reported attestation. Attachments can be files or directories. All attachments are compressed and uploaded to Kosli's evidence vault. | -| -g, --commit string | [conditional] The git commit for which the attestation is associated to. Becomes required when reporting an attestation for an artifact before reporting it to Kosli. (defaulted in some CIs: [docs](/ci-defaults) ). | +| -g, --commit string | [conditional] The git commit for which the attestation is associated to. Becomes required when reporting an attestation for an artifact before reporting it to Kosli. (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | --description string | [optional] attestation description | | -D, --dry-run | [optional] Run in dry-run mode. When enabled, no data is sent to Kosli and the CLI exits with 0 exit code regardless of any errors. | | -x, --exclude strings | [optional] The comma separated list of directories and files to exclude from fingerprinting. Can take glob patterns. Only applicable for --artifact-type dir. | @@ -66,11 +66,11 @@ The attestation can be bound to an *artifact* in two ways: | --redact-commit-info strings | [optional] The list of commit info to be redacted before sending to Kosli. Allowed values are one or more of [author, message, branch]. | | --registry-password string | [conditional] The container registry password or access token. Only required if you want to read container image SHA256 digest from a remote container registry. | | --registry-username string | [conditional] The container registry username. Only required if you want to read container image SHA256 digest from a remote container registry. | -| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | --repo-root string | [defaulted] The directory where the source git repository is available. Only used if --commit is used or defaulted in CI, see [docs](/integrations/ci_cd/#defaulted-kosli-command-flags-from-ci-variables) . (default ".") | -| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | --sonar-api-token string | [required] SonarQube API token. | | --sonar-ce-task-url string | [conditional] The URL of the SonarQube CE task. Can be used instead of --sonar-working-dir when the report-task.txt file is not accessible, e.g. due to container isolation in CI/CD pipelines. | | --sonar-project-key string | [conditional] The project key of the SonarQube project. Only required if you want to use the project key/revision/pull-request to get the scan results rather than using Sonar's metadata file. | @@ -88,7 +88,7 @@ The attestation can be bound to an *artifact* in two ways: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -105,76 +105,76 @@ The attestation can be bound to an *artifact* in two ways: ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli attest sonar - --name yourAttestationName - --sonar-api-token yourSonarAPIToken - --sonar-working-dir yourSonarWorkingDirPath +kosli attest sonar + --name yourAttestationName + --sonar-api-token yourSonarAPIToken + --sonar-working-dir yourSonarWorkingDirPath ``` ```shell -kosli attest sonar - --name yourAttestationName - --sonar-api-token yourSonarAPIToken - --sonar-working-dir yourSonarWorkingDirPath +kosli attest sonar + --name yourAttestationName + --sonar-api-token yourSonarAPIToken + --sonar-working-dir yourSonarWorkingDirPath --max-wait 60 ``` ```shell -kosli attest sonar - --name yourAttestationName - --sonar-api-token yourSonarAPIToken - --sonar-project-key yourSonarProjectKey - --sonar-revision yourSonarRevision +kosli attest sonar + --name yourAttestationName + --sonar-api-token yourSonarAPIToken + --sonar-project-key yourSonarProjectKey + --sonar-revision yourSonarRevision ``` ```shell -kosli attest sonar - --name yourAttestationName - --sonar-api-token yourSonarAPIToken - --sonar-server-url yourSonarServerURL - --sonar-project-key yourSonarProjectKey - --sonar-revision yourSonarRevision +kosli attest sonar + --name yourAttestationName + --sonar-api-token yourSonarAPIToken + --sonar-server-url yourSonarServerURL + --sonar-project-key yourSonarProjectKey + --sonar-revision yourSonarRevision ``` ```shell -kosli attest sonar - --name yourAttestationName - --sonar-api-token yourSonarAPIToken - --sonar-project-key yourSonarProjectKey - --pull-request yourPullRequestID +kosli attest sonar + --name yourAttestationName + --sonar-api-token yourSonarAPIToken + --sonar-project-key yourSonarProjectKey + --pull-request yourPullRequestID ``` ```shell -kosli attest sonar - --name yourAttestationName - --sonar-api-token yourSonarAPIToken - --sonar-working-dir yourSonarWorkingDirPath - --attachment yourAttachmentPath +kosli attest sonar + --name yourAttestationName + --sonar-api-token yourSonarAPIToken + --sonar-working-dir yourSonarWorkingDirPath + --attachment yourAttachmentPath --max-wait 300 ``` ```shell -kosli attest sonar - --name yourAttestationName - --sonar-api-token yourSonarAPIToken - --sonar-ce-task-url yourCETaskURL +kosli attest sonar + --name yourAttestationName + --sonar-api-token yourSonarAPIToken + --sonar-ce-task-url yourCETaskURL ``` diff --git a/client_reference/kosli_begin_trail.md b/client_reference/kosli_begin_trail.md index 1a7c82b..b7bd67e 100644 --- a/client_reference/kosli_begin_trail.md +++ b/client_reference/kosli_begin_trail.md @@ -25,7 +25,7 @@ In other CI systems, set them explicitly to capture repository metadata. ## Flags | Flag | Description | | :--- | :--- | -| -g, --commit string | [defaulted] The git commit from which the trail is begun. (defaulted in some CIs: [docs](/ci-defaults), otherwise defaults to HEAD ). | +| -g, --commit string | [defaulted] The git commit from which the trail is begun. (defaulted in some CIs: [docs](/integrations/ci_cd), otherwise defaults to HEAD ). | | --description string | [optional] The Kosli trail description. | | -D, --dry-run | [optional] Run in dry-run mode. When enabled, no data is sent to Kosli and the CLI exits with 0 exit code regardless of any errors. | | --external-fingerprint stringToString | [optional] A SHA256 fingerprint of an external attachment represented by --external-url. The format is label=fingerprint (labels cannot contain '.' or '='). This flag can be set multiple times. There must be an external url with a matching label for each external fingerprint. | @@ -34,11 +34,11 @@ In other CI systems, set them explicitly to capture repository metadata. | -h, --help | help for trail | | -o, --origin-url string | [optional] The url pointing to where the attestation came from or is related. (defaulted to the CI url in some CIs: [docs](/integrations/ci_cd/#defaulted-kosli-command-flags-from-ci-variables) ). | | --redact-commit-info strings | [optional] The list of commit info to be redacted before sending to Kosli. Allowed values are one or more of [author, message, branch]. | -| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-id string | [conditional] The stable, unique identifier for the repository in your VCS provider (e.g. a numeric ID). Do not use the repository name as it can change if the repo is renamed. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repo-provider string | [optional] The source code hosting provider. One of: github, gitlab, bitbucket, azure-devops (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | --repo-root string | [defaulted] The directory where the source git repository is available. Only used if --commit is used or defaulted in CI, see [docs](/integrations/ci_cd/#defaulted-kosli-command-flags-from-ci-variables) . (default ".") | -| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | -| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/ci-defaults) ). | +| --repo-url string | [conditional] The URL of the repository. Must be a valid URL. All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| --repository string | [conditional] The name of the repository (e.g. owner/repo-name). All three of --repo-id, --repo-url and --repository must be set to record repository information (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | -f, --template-file string | [optional] The path to a yaml template file. | | -u, --user-data string | [optional] The path to a JSON file containing additional data you would like to attach to the flow trail. | @@ -50,7 +50,7 @@ In other CI systems, set them explicitly to capture repository metadata. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -72,15 +72,15 @@ In other CI systems, set them explicitly to capture repository metadata. ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli begin trail yourTrailName - --description yourTrailDescription - --template-file /path/to/your/template/file.yml - --user-data /path/to/your/user-data/file.json +kosli begin trail yourTrailName + --description yourTrailDescription + --template-file /path/to/your/template/file.yml + --user-data /path/to/your/user-data/file.json ``` diff --git a/client_reference/kosli_completion.md b/client_reference/kosli_completion.md index e9350df..b70e30a 100644 --- a/client_reference/kosli_completion.md +++ b/client_reference/kosli_completion.md @@ -18,19 +18,19 @@ To load completions: ``` $ source <(kosli completion bash) ``` - To load completions for each session, execute once: + To load completions for each session, execute once: On Linux: ``` $ kosli completion bash > /etc/bash_completion.d/kosli - ``` + ``` On macOS: ``` $ kosli completion bash > $(brew --prefix)/etc/bash_completion.d/kosli ``` ### Zsh - If shell completion is not already enabled in your environment, + If shell completion is not already enabled in your environment, you will need to enable it. You can execute the following once: ``` $ echo "autoload -U compinit; compinit" >> ~/.zshrc @@ -46,7 +46,7 @@ you will need to enable it. You can execute the following once: $ kosli completion fish | source ``` To load completions for each session, execute once: - ``` + ``` $ kosli completion fish > ~/.config/fish/completions/kosli.fish ``` ### PowerShell @@ -56,7 +56,7 @@ you will need to enable it. You can execute the following once: To load completions for every new session, run: ``` PS> kosli completion powershell > kosli.ps1 - ``` + ``` and source this file from your PowerShell profile. @@ -73,7 +73,7 @@ you will need to enable it. You can execute the following once: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_config.md b/client_reference/kosli_config.md index aea31d3..ec04d1c 100644 --- a/client_reference/kosli_config.md +++ b/client_reference/kosli_config.md @@ -11,7 +11,7 @@ description: "Config global Kosli flags values and store them in $HOME/.kosli . kosli config [flags] ``` -Config global Kosli flags values and store them in $HOME/.kosli . +Config global Kosli flags values and store them in $HOME/.kosli . Flag values are determined in the following order (highest precedence first): - command line flags on each executed command. @@ -20,9 +20,9 @@ Flag values are determined in the following order (highest precedence first): - default config file in $HOME/.kosli You can configure global Kosli flags (the ones that apply to all/most commands) using their dedicated -convenience flags (e.g. --org). +convenience flags (e.g. --org). -API tokens are stored in the suitable credentials manager on your machine. +API tokens are stored in the suitable credentials manager on your machine. Other Kosli flags can be configured using the --set flag which takes a comma-separated list of key=value pairs. Keys correspond to the specific flag name, capitalized. For instance: --flow would be set using --set FLOW=value @@ -43,23 +43,23 @@ Keys correspond to the specific flag name, capitalized. For instance: --flow wou | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli config --org=yourOrg - --api-token=yourAPIToken - --host=https://app.kosli.com - --debug=false - --max-api-retries=3 +kosli config --org=yourOrg + --api-token=yourAPIToken + --host=https://app.kosli.com + --debug=false + --max-api-retries=3 --http-proxy=http://192.0.0.1:8080 ``` diff --git a/client_reference/kosli_create_attestation-type.md b/client_reference/kosli_create_attestation-type.md index 6cbd151..d9cd13d 100644 --- a/client_reference/kosli_create_attestation-type.md +++ b/client_reference/kosli_create_attestation-type.md @@ -16,15 +16,15 @@ You can specify attestation type parameters in flags. `TYPE-NAME` must start with a letter or number, and only contain letters, numbers, `.`, `-`, `_`, and `~`. -`--schema` is a path to a file containing a JSON schema which will be used to validate attestations made using this type. -The schema is used to specify the structure of the attestation data, e.g. any fields that are required or +`--schema` is a path to a file containing a JSON schema which will be used to validate attestations made using this type. +The schema is used to specify the structure of the attestation data, e.g. any fields that are required or the expected type of the data. -See an example schema file +See an example schema file [here](https://github.com/cyber-dojo/kosli-attestation-types/blob/f9130c58d3a8151b0b0e7c5db284e4380eb2d2cf/metrics-coverage.schema.json). -`--jq` defines an evaluation rule, given in jq-format, for this attestation type. The flag can be repeated in order to add additional rules. -These rules specify acceptable values for attestation data, e.g. `.age >= 21` or `.failing_tests == 0`. -When a custom attestation is reported, the provided data is evaluated according to the rules defined in its attestation-type. +`--jq` defines an evaluation rule, given in jq-format, for this attestation type. The flag can be repeated in order to add additional rules. +These rules specify acceptable values for attestation data, e.g. `.age >= 21` or `.failing_tests == 0`. +When a custom attestation is reported, the provided data is evaluated according to the rules defined in its attestation-type. All rules must return `true` for the evaluation to pass and the attestation to be determined compliant. @@ -45,7 +45,7 @@ All rules must return `true` for the evaluation to pass and the attestation to b | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -62,7 +62,7 @@ All rules must return `true` for the evaluation to pass and the attestation to b ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). @@ -73,9 +73,9 @@ kosli create attestation-type customTypeName ```shell -kosli create attestation-type customTypeName - --description "Attest that a person meets the age requirements." - --schema person-schema.json +kosli create attestation-type customTypeName + --description "Attest that a person meets the age requirements." + --schema person-schema.json --jq ".age >= 18" --jq ".age < 65" ``` diff --git a/client_reference/kosli_create_environment.md b/client_reference/kosli_create_environment.md index 4829425..d2091f2 100644 --- a/client_reference/kosli_create_environment.md +++ b/client_reference/kosli_create_environment.md @@ -56,30 +56,30 @@ to them. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell kosli create environment yourEnvironmentName - --type K8S - --description "my new env" + --type K8S + --description "my new env" ``` ```shell kosli create environment yourLogicalEnvironmentName - --type logical + --type logical --included-environments realEnv1,realEnv2,realEnv3 - --description "my full prod" + --description "my full prod" ``` diff --git a/client_reference/kosli_create_flow.md b/client_reference/kosli_create_flow.md index 5ff78bc..fec0943 100644 --- a/client_reference/kosli_create_flow.md +++ b/client_reference/kosli_create_flow.md @@ -36,7 +36,7 @@ You can specify flow parameters in flags. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -58,24 +58,24 @@ You can specify flow parameters in flags. ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli create flow yourFlowName - --description yourFlowDescription - --visibility private OR public - --use-empty-template +kosli create flow yourFlowName + --description yourFlowDescription + --visibility private OR public + --use-empty-template ``` ```shell -kosli create flow yourFlowName - --description yourFlowDescription - --visibility private OR public - --template-file /path/to/your/template/file.yml +kosli create flow yourFlowName + --description yourFlowDescription + --visibility private OR public + --template-file /path/to/your/template/file.yml ``` diff --git a/client_reference/kosli_create_policy.md b/client_reference/kosli_create_policy.md index 9e4adba..cb11ef1 100644 --- a/client_reference/kosli_create_policy.md +++ b/client_reference/kosli_create_policy.md @@ -30,30 +30,30 @@ Updating policy content creates a new version of the policy. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli create policy yourPolicyName yourPolicyFile.yml - --description yourPolicyDescription - --type env +kosli create policy yourPolicyName yourPolicyFile.yml + --description yourPolicyDescription + --type env ``` ```shell -kosli create policy yourPolicyName yourPolicyFile.yml - --description yourPolicyDescription - --type env - --comment yourChangeComment +kosli create policy yourPolicyName yourPolicyFile.yml + --description yourPolicyDescription + --type env + --comment yourChangeComment ``` diff --git a/client_reference/kosli_detach-policy.md b/client_reference/kosli_detach-policy.md index bdd76c7..50ba64c 100644 --- a/client_reference/kosli_detach-policy.md +++ b/client_reference/kosli_detach-policy.md @@ -28,21 +28,21 @@ If the environment has no more policies attached to it, then its snapshots' stat | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli detach-policy yourPolicyName - --environment yourFirstEnvironmentName - --environment yourSecondEnvironmentName +kosli detach-policy yourPolicyName + --environment yourFirstEnvironmentName + --environment yourSecondEnvironmentName ``` diff --git a/client_reference/kosli_diff_snapshots.md b/client_reference/kosli_diff_snapshots.md index 57ad618..8848dc2 100644 --- a/client_reference/kosli_diff_snapshots.md +++ b/client_reference/kosli_diff_snapshots.md @@ -11,7 +11,7 @@ description: "Diff environment snapshots. " kosli diff snapshots SNAPPISH_1 SNAPPISH_2 [flags] ``` -Diff environment snapshots. +Diff environment snapshots. Specify SNAPPISH_1 and SNAPPISH_2 by: - environmentName - the latest snapshot for environmentName, at the time of the request @@ -45,7 +45,7 @@ Specify SNAPPISH_1 and SNAPPISH_2 by: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -67,7 +67,7 @@ kosli diff snapshots aws-beta aws-prod --output=json ```json { "snappish1": { - "snapshot_id": "aws-beta#6654", + "snapshot_id": "aws-beta#6662", "artifacts": [ { "fingerprint": "4db0e95a793aa0539250f9998bc4fbe10b5d96a339730c20a25b9e763a8a5ff3", @@ -77,6 +77,14 @@ kosli diff snapshots aws-beta aws-prod --output=json "commit_url": "https://gitlab.com/cyber-dojo/creator/-/commit/b3152a10de1f36b7dbe2818c0918af06fd3aca61", "instance_count": 1 }, + { + "fingerprint": "5a59b16b0975773a0afeebc30426a86cc40fc12b80f9f42fc911c6d7f9285344", + "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:ad3700e@sha256:5a59b16b0975773a0afeebc30426a86cc40fc12b80f9f42fc911c6d7f9285344", + "most_recent_timestamp": 1778237609, + "flow": "runner-ci", + "commit_url": "https://github.com/cyber-dojo/runner/commit/ad3700ecacd79ea8ebef6689874804f1a2851d4c", + "instance_count": 3 + }, { "fingerprint": "e99c33d87e5e6d5098aecf627a89e1408e6ca8394eb2c8923823b74b5bb3567c", "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:6f7b1b0@sha256:e99c33d87e5e6d5098aecf627a89e1408e6ca8394eb2c8923823b74b5bb3567c", @@ -88,8 +96,16 @@ kosli diff snapshots aws-beta aws-prod --output=json ] }, "snappish2": { - "snapshot_id": "aws-prod#4382", + "snapshot_id": "aws-prod#4386", "artifacts": [ + { + "fingerprint": "2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:8768460@sha256:2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "most_recent_timestamp": 1778178487, + "flow": "runner-ci", + "commit_url": "https://github.com/cyber-dojo/runner/commit/8768460dc1c91de5f6485a7d3e36870b683edfc3", + "instance_count": 3 + }, { "fingerprint": "541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:1999d13@sha256:541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", @@ -113,14 +129,6 @@ kosli diff snapshots aws-beta aws-prod --output=json }, "not-changed": { "artifacts": [ - { - "fingerprint": "2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", - "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:8768460@sha256:2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", - "most_recent_timestamp": 1778178487, - "flow": "runner-ci", - "commit_url": "https://github.com/cyber-dojo/runner/commit/8768460dc1c91de5f6485a7d3e36870b683edfc3", - "instance_count": 3 - }, { "fingerprint": "3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:a6ece2b@sha256:3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", @@ -187,31 +195,31 @@ kosli diff snapshots aws-beta aws-prod --output=json ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli diff snapshots envName~3 envName +kosli diff snapshots envName~3 envName ``` ```shell -kosli diff snapshots envName1 envName2 +kosli diff snapshots envName1 envName2 ``` ```shell -kosli diff snapshots envName1 envName2 - --show-unchanged +kosli diff snapshots envName1 envName2 + --show-unchanged ``` ```shell -kosli diff snapshots envName@{2.weeks.ago} envName +kosli diff snapshots envName@{2.weeks.ago} envName ``` diff --git a/client_reference/kosli_disable_beta.md b/client_reference/kosli_disable_beta.md index 5425119..5af0028 100644 --- a/client_reference/kosli_disable_beta.md +++ b/client_reference/kosli_disable_beta.md @@ -26,7 +26,7 @@ Disable beta features for an organization. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_enable_beta.md b/client_reference/kosli_enable_beta.md index 3cc9db5..dd73dda 100644 --- a/client_reference/kosli_enable_beta.md +++ b/client_reference/kosli_enable_beta.md @@ -26,7 +26,7 @@ Enable beta features for an organization. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_evaluate_input.md b/client_reference/kosli_evaluate_input.md index 29b7823..85f2ebc 100644 --- a/client_reference/kosli_evaluate_input.md +++ b/client_reference/kosli_evaluate_input.md @@ -49,7 +49,7 @@ This accepts inline JSON or a file reference (`@file.json`). | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -60,71 +60,71 @@ This accepts inline JSON or a file reference (`@file.json`). View an example of the `kosli evaluate input` command in GitHub. - In [this YAML file](https://github.com/cyber-dojo/snyk-scanning/blob/2c586e9ede3ce361642ddc9414312833c3fbf5e2/tests/test_rego_rules.sh#L153) + In [this YAML file](https://github.com/cyber-dojo/snyk-scanning/blob/9508524934b5a7a42caedb42f6675d177f841568/tests/test_rego_rules.sh#L197) ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli evaluate trail TRAIL --flow FLOW - --policy allow-all.rego +kosli evaluate trail TRAIL --flow FLOW + --policy allow-all.rego --show-input --output json | jq '.input' > trail-data.json ``` ```shell -kosli evaluate input - --input-file trail-data.json +kosli evaluate input + --input-file trail-data.json --policy policy.rego ``` ```shell -kosli evaluate input - --input-file trail-data.json - --policy policy.rego - --show-input +kosli evaluate input + --input-file trail-data.json + --policy policy.rego + --show-input --output json ``` ```shell -cat trail-data.json | kosli evaluate input +cat trail-data.json | kosli evaluate input --policy policy.rego ``` ```shell -kosli evaluate input - --input-file trail-data.json - --policy policy.rego +kosli evaluate input + --input-file trail-data.json + --policy policy.rego --params '{"threshold": 3}' ``` ```shell -kosli evaluate input - --input-file trail-data.json - --policy policy.rego +kosli evaluate input + --input-file trail-data.json + --policy policy.rego --params @params.json ``` ```shell -kosli evaluate input - --input-file trail-data.json - --policy policy.rego +kosli evaluate input + --input-file trail-data.json + --policy policy.rego --no-assert ``` diff --git a/client_reference/kosli_evaluate_trail.md b/client_reference/kosli_evaluate_trail.md index 0db3207..58702f6 100644 --- a/client_reference/kosli_evaluate_trail.md +++ b/client_reference/kosli_evaluate_trail.md @@ -40,7 +40,7 @@ full data structure available to the policy. Use `--output json` for structured | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -51,60 +51,60 @@ full data structure available to the policy. Use `--output json` for structured View an example of the `kosli evaluate trail` command in GitHub. - In [this YAML file](https://github.com/cyber-dojo/snyk-scanning/blob/2c586e9ede3ce361642ddc9414312833c3fbf5e2/.github/workflows/artifact_snyk_test.yml#L344) + In [this YAML file](https://github.com/cyber-dojo/snyk-scanning/blob/9508524934b5a7a42caedb42f6675d177f841568/.github/workflows/artifact_snyk_test.yml#L350) ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli evaluate trail yourTrailName - --policy yourPolicyFile.rego +kosli evaluate trail yourTrailName + --policy yourPolicyFile.rego ``` ```shell -kosli evaluate trail yourTrailName - --policy yourPolicyFile.rego - --attestations pull-request +kosli evaluate trail yourTrailName + --policy yourPolicyFile.rego + --attestations pull-request ``` ```shell -kosli evaluate trail yourTrailName - --policy yourPolicyFile.rego - --show-input - --output json +kosli evaluate trail yourTrailName + --policy yourPolicyFile.rego + --show-input + --output json ``` ```shell -kosli evaluate trail yourTrailName - --policy yourPolicyFile.rego - --params '{"min_approvers": 2}' +kosli evaluate trail yourTrailName + --policy yourPolicyFile.rego + --params '{"min_approvers": 2}' ``` ```shell -kosli evaluate trail yourTrailName - --policy yourPolicyFile.rego - --params @params.json +kosli evaluate trail yourTrailName + --policy yourPolicyFile.rego + --params @params.json ``` ```shell -kosli evaluate trail yourTrailName - --policy yourPolicyFile.rego - --no-assert +kosli evaluate trail yourTrailName + --policy yourPolicyFile.rego + --no-assert ``` diff --git a/client_reference/kosli_evaluate_trails.md b/client_reference/kosli_evaluate_trails.md index 1318b2a..2d6f7ac 100644 --- a/client_reference/kosli_evaluate_trails.md +++ b/client_reference/kosli_evaluate_trails.md @@ -41,53 +41,53 @@ full data structure available to the policy. Use `--output json` for structured | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli evaluate trails yourTrailName1 yourTrailName2 - --policy yourPolicyFile.rego +kosli evaluate trails yourTrailName1 yourTrailName2 + --policy yourPolicyFile.rego ``` ```shell -kosli evaluate trails yourTrailName1 yourTrailName2 - --policy yourPolicyFile.rego - --attestations pull-request +kosli evaluate trails yourTrailName1 yourTrailName2 + --policy yourPolicyFile.rego + --attestations pull-request ``` ```shell -kosli evaluate trails yourTrailName1 yourTrailName2 - --policy yourPolicyFile.rego - --show-input - --output json +kosli evaluate trails yourTrailName1 yourTrailName2 + --policy yourPolicyFile.rego + --show-input + --output json ``` ```shell -kosli evaluate trails yourTrailName1 yourTrailName2 - --policy yourPolicyFile.rego - --params '{"min_approvers": 2}' +kosli evaluate trails yourTrailName1 yourTrailName2 + --policy yourPolicyFile.rego + --params '{"min_approvers": 2}' ``` ```shell -kosli evaluate trails yourTrailName1 yourTrailName2 - --policy yourPolicyFile.rego - --no-assert +kosli evaluate trails yourTrailName1 yourTrailName2 + --policy yourPolicyFile.rego + --no-assert ``` diff --git a/client_reference/kosli_fingerprint.md b/client_reference/kosli_fingerprint.md index 69fd8dd..689ad2a 100644 --- a/client_reference/kosli_fingerprint.md +++ b/client_reference/kosli_fingerprint.md @@ -24,12 +24,12 @@ the image must have been pushed to or pulled from a registry. A freshly built im `docker build`) does not have a repo digest. For images already in a registry, prefer `--artifact-type=oci` to fetch the digest directly from the registry. -When fingerprinting a 'dir' artifact, you can exclude certain paths from fingerprint calculation +When fingerprinting a 'dir' artifact, you can exclude certain paths from fingerprint calculation using the `--exclude` flag. Excluded paths are relative to the DIR-PATH and can be literal paths or glob patterns. With a directory structure like this `foo/bar/zam/file.txt` if you are calculating the fingerprint of `foo/bar` you need to exclude `zam/file.txt` which is relative to the DIR-PATH. -The supported glob pattern syntax is what is documented here: https://pkg.go.dev/path/filepath#Match , +The supported glob pattern syntax is what is documented here: https://pkg.go.dev/path/filepath#Match , plus the ability to use recursive globs "**" If the directory structure contains a symbolic link to a *file* (for example, a link 'from/this/file' and a target of 'to/another/file') then: @@ -67,7 +67,7 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file, | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -78,13 +78,13 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file, View an example of the `kosli fingerprint` command in GitHub. - In [this YAML file](https://github.com/cyber-dojo/snyk-scanning/blob/2c586e9ede3ce361642ddc9414312833c3fbf5e2/.github/workflows/artifact_snyk_test.yml#L183) + In [this YAML file](https://github.com/cyber-dojo/snyk-scanning/blob/9508524934b5a7a42caedb42f6675d177f841568/.github/workflows/artifact_snyk_test.yml#L183) ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). diff --git a/client_reference/kosli_get_approval.md b/client_reference/kosli_get_approval.md index 52f0b6c..99220af 100644 --- a/client_reference/kosli_get_approval.md +++ b/client_reference/kosli_get_approval.md @@ -38,31 +38,31 @@ EXPRESSION can be specified as follows: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli get approval flowName~1 +kosli get approval flowName~1 ``` ```shell -kosli get approval flowName#10 +kosli get approval flowName#10 ``` ```shell -kosli get approval flowName +kosli get approval flowName ``` diff --git a/client_reference/kosli_get_artifact.md b/client_reference/kosli_get_artifact.md index 0ea248d..ca5f71a 100644 --- a/client_reference/kosli_get_artifact.md +++ b/client_reference/kosli_get_artifact.md @@ -16,7 +16,7 @@ You can get an artifact by its fingerprint or by its git commit sha. In case of using the git commit, it is possible to get multiple artifacts matching the git commit. The expected argument is an expression to specify the artifact to get. -It has the format `FLOW_NAME``SEPARATOR``COMMIT_SHA1|ARTIFACT_FINGERPRINT` +It has the format `FLOW_NAME``SEPARATOR``COMMIT_SHA1|ARTIFACT_FINGERPRINT` Expression can be specified as follows: - flowName@`fingerprint` artifact with a given fingerprint. The fingerprint can be short or complete. @@ -44,37 +44,37 @@ Examples of valid expressions are: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli get artifact flowName@fingerprint +kosli get artifact flowName@fingerprint ``` ```shell -kosli get artifact flowName@fingerprint +kosli get artifact flowName@fingerprint ``` ```shell -kosli get artifact flowName:commitSHA +kosli get artifact flowName:commitSHA ``` ```shell -kosli get artifact flowName:commitSHA +kosli get artifact flowName:commitSHA ``` diff --git a/client_reference/kosli_get_attestation-type.md b/client_reference/kosli_get_attestation-type.md index 4ed52ff..8320507 100644 --- a/client_reference/kosli_get_attestation-type.md +++ b/client_reference/kosli_get_attestation-type.md @@ -11,7 +11,7 @@ description: "Get a custom Kosli attestation type. " kosli get attestation-type TYPE-NAME [flags] ``` -Get a custom Kosli attestation type. +Get a custom Kosli attestation type. The TYPE-NAME can be specified as follows: - customTypeName - Returns the unversioned custom attestation type, containing details of all versions of the type. @@ -36,14 +36,14 @@ The TYPE-NAME can be specified as follows: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). diff --git a/client_reference/kosli_get_attestation.md b/client_reference/kosli_get_attestation.md index 9a5d779..900d078 100644 --- a/client_reference/kosli_get_attestation.md +++ b/client_reference/kosli_get_attestation.md @@ -11,13 +11,13 @@ description: "Get an attestation using its name or id. " kosli get attestation [ATTESTATION-NAME] [flags] ``` -Get an attestation using its name or id. +Get an attestation using its name or id. You can get an attestation from a trail or artifact using its name. The attestation name should be given -WITHOUT dot-notation. -To get an attestation from a trail, specify the trail name using the `--trail` flag. -To get an attestation from an artifact, specify the artifact fingerprint using the `--fingerprint` flag. -These flags cannot be used together. In both cases the flow must also be specified using the `--flow` flag. +WITHOUT dot-notation. +To get an attestation from a trail, specify the trail name using the `--trail` flag. +To get an attestation from an artifact, specify the artifact fingerprint using the `--fingerprint` flag. +These flags cannot be used together. In both cases the flow must also be specified using the `--flow` flag. If there are multiple attestations with the same name on the trail or artifact, a list of all will be returned. You can also get an attestation by its id using the `--attestation-id` flag. This cannot be used with the attestation name, @@ -42,7 +42,7 @@ or any of the `--flow`, `--trail` or `--fingerprint` flags. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -125,18 +125,18 @@ kosli get attestation snyk-container-scan --flow=differ-ci --fingerprint=0cbbe3a ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli get attestation attestationName +kosli get attestation attestationName ``` ```shell -kosli get attestation attestationName +kosli get attestation attestationName --fingerprint fingerprint ``` diff --git a/client_reference/kosli_get_environment.md b/client_reference/kosli_get_environment.md index 9f90183..1a04a5e 100644 --- a/client_reference/kosli_get_environment.md +++ b/client_reference/kosli_get_environment.md @@ -27,7 +27,7 @@ Get an environment's metadata. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -51,8 +51,8 @@ kosli get environment aws-prod --output=json "name": "aws-prod", "type": "ECS", "description": "The ECS cluster for production cyber-dojo", - "last_modified_at": 1778219758.5460255, - "last_reported_at": 1778219758.5460255, + "last_modified_at": 1778242858.628268, + "last_reported_at": 1778242858.628268, "state": true, "include_scaling": false, "tags": { diff --git a/client_reference/kosli_get_flow.md b/client_reference/kosli_get_flow.md index 9e80fe5..d7515f4 100644 --- a/client_reference/kosli_get_flow.md +++ b/client_reference/kosli_get_flow.md @@ -27,7 +27,7 @@ Get the metadata of a specific flow. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_get_policy.md b/client_reference/kosli_get_policy.md index befb57f..ec0771a 100644 --- a/client_reference/kosli_get_policy.md +++ b/client_reference/kosli_get_policy.md @@ -27,7 +27,7 @@ Get a policy's metadata. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_get_snapshot.md b/client_reference/kosli_get_snapshot.md index ea02235..e601d2e 100644 --- a/client_reference/kosli_get_snapshot.md +++ b/client_reference/kosli_get_snapshot.md @@ -11,7 +11,7 @@ description: "Get a specified environment snapshot. " kosli get snapshot ENVIRONMENT-NAME-OR-EXPRESSION [flags] ``` -Get a specified environment snapshot. +Get a specified environment snapshot. ENVIRONMENT-NAME-OR-EXPRESSION can be specified as follows: - environmentName - the latest snapshot for environmentName, at the time of the request @@ -44,7 +44,7 @@ ENVIRONMENT-NAME-OR-EXPRESSION can be specified as follows: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -65,7 +65,7 @@ kosli get snapshot aws-prod --output=json ```json { - "index": 4382, + "index": 4386, "is_latest": true, "next_snapshot_timestamp": null, "artifact_compliance_count": { @@ -73,13 +73,13 @@ kosli get snapshot aws-prod --output=json "false": 0, "null": 0 }, - "timestamp": 1778213818.5191746, + "timestamp": 1778225998.5296352, "type": "ECS", "compliant": true, - "html_url": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4382", + "html_url": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4386", "artifacts": [ { - "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:8768460@sha256:2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:cfb0d52@sha256:a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "compliant": true, "deployments": [], "policy_decisions": [ @@ -101,8 +101,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "runner-ci", - "trail_name": "8768460dc1c91de5f6485a7d3e36870b683edfc3", + "flow_name": "saver-ci", + "trail_name": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", "artifact_status": null } }, @@ -110,23 +110,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-47", + "trail_name": "promotion-one-46", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": null } } @@ -146,8 +146,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "runner-ci", - "trail_name": "8768460dc1c91de5f6485a7d3e36870b683edfc3", + "flow_name": "saver-ci", + "trail_name": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", "artifact_status": "COMPLIANT" } }, @@ -155,23 +155,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-47", + "trail_name": "promotion-one-46", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": "COMPLIANT" } } @@ -195,8 +195,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "runner-ci", - "trail_name": "8768460dc1c91de5f6485a7d3e36870b683edfc3", + "flow_name": "saver-ci", + "trail_name": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", "artifact_status": null } }, @@ -204,23 +204,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-47", + "trail_name": "promotion-one-46", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": null } } @@ -253,8 +253,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "runner-ci", - "trail_name": "8768460dc1c91de5f6485a7d3e36870b683edfc3", + "flow_name": "saver-ci", + "trail_name": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", "artifact_status": null } }, @@ -262,23 +262,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-47", + "trail_name": "promotion-one-46", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": null } } @@ -304,8 +304,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "runner-ci", - "trail_name": "8768460dc1c91de5f6485a7d3e36870b683edfc3", + "flow_name": "saver-ci", + "trail_name": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", "artifact_status": "COMPLIANT" } }, @@ -313,23 +313,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-47", + "trail_name": "promotion-one-46", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": "COMPLIANT" } } @@ -353,8 +353,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "runner-ci", - "trail_name": "8768460dc1c91de5f6485a7d3e36870b683edfc3", + "flow_name": "saver-ci", + "trail_name": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", "artifact_status": null } }, @@ -362,23 +362,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-47", + "trail_name": "promotion-one-46", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "artifact_status": null } } @@ -389,71 +389,69 @@ kosli get snapshot aws-prod --output=json } ], "reasons_for_incompliance": [], - "fingerprint": "2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "fingerprint": "a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", "creationTimestamp": [ - 1778178483, - 1778178485, - 1778178487 + 1778158856 ], "pods": null, "annotation": { "type": "updated-provenance", - "was": 3, - "now": 3 + "was": 1, + "now": 1 }, - "flow_name": "runner-ci", - "git_commit": "8768460dc1c91de5f6485a7d3e36870b683edfc3", - "commit_url": "https://github.com/cyber-dojo/runner/commit/8768460dc1c91de5f6485a7d3e36870b683edfc3", - "html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=4d69a029-0ed8-4ead-b1f5-f6e36c52", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci", + "flow_name": "saver-ci", + "git_commit": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "commit_url": "https://github.com/cyber-dojo/saver/commit/cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed?artifact_id=680cd12d-e9b5-4a2a-8abf-1e75a370", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/runner/compare/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e...8768460dc1c91de5f6485a7d3e36870b683edfc3", - "previous_git_commit": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", - "previous_fingerprint": "b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:a2ffba5@sha256:b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "diff_url": "https://github.com/cyber-dojo/saver/compare/92c0996cd9ae7642eb0769f928abe6cb6c391751...cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "previous_git_commit": "92c0996cd9ae7642eb0769f928abe6cb6c391751", + "previous_fingerprint": "1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:92c0996@sha256:1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/runner/commit/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", - "previous_trail_name": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", - "previous_template_reference_name": "runner" + "previous_git_commit_url": "https://github.com/cyber-dojo/saver/commit/92c0996cd9ae7642eb0769f928abe6cb6c391751", + "previous_trail_name": "92c0996cd9ae7642eb0769f928abe6cb6c391751", + "previous_template_reference_name": "saver" }, - "commit_lead_time": 12009.0, + "commit_lead_time": 900.0, "flows": [ { - "flow_name": "runner-ci", - "trail_name": "8768460dc1c91de5f6485a7d3e36870b683edfc3", - "template_reference_name": "runner", - "git_commit": "8768460dc1c91de5f6485a7d3e36870b683edfc3", - "commit_url": "https://github.com/cyber-dojo/runner/commit/8768460dc1c91de5f6485a7d3e36870b683edfc3", + "flow_name": "saver-ci", + "trail_name": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "template_reference_name": "saver", + "git_commit": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "commit_url": "https://github.com/cyber-dojo/saver/commit/cfb0d52610ab73011f325c4bb5bf0b54fb51031c", "git_commit_info": { - "sha1": "8768460dc1c91de5f6485a7d3e36870b683edfc3", - "message": "Merge pull request #228 from cyber-dojo/add-doc-on-vulns\n\nAdd document detailing each known current snyk vulnerability", + "sha1": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "message": "Run CI workflow to check updated called snyk-scanning reusable workflow (#365)", "author": "Jon Jagger ", "branch": "main", - "timestamp": 1778166474.0, - "url": "https://github.com/cyber-dojo/runner/commit/8768460dc1c91de5f6485a7d3e36870b683edfc3" + "timestamp": 1778157956.0, + "url": "https://github.com/cyber-dojo/saver/commit/cfb0d52610ab73011f325c4bb5bf0b54fb51031c" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=4d69a029-0ed8-4ead-b1f5-f6e36c52", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci", + "html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed?artifact_id=680cd12d-e9b5-4a2a-8abf-1e75a370", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/runner/compare/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e...8768460dc1c91de5f6485a7d3e36870b683edfc3", - "previous_git_commit": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", - "previous_fingerprint": "b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:a2ffba5@sha256:b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "diff_url": "https://github.com/cyber-dojo/saver/compare/92c0996cd9ae7642eb0769f928abe6cb6c391751...cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "previous_git_commit": "92c0996cd9ae7642eb0769f928abe6cb6c391751", + "previous_fingerprint": "1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:92c0996@sha256:1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/runner/commit/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", - "previous_trail_name": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", - "previous_template_reference_name": "runner" + "previous_git_commit_url": "https://github.com/cyber-dojo/saver/commit/92c0996cd9ae7642eb0769f928abe6cb6c391751", + "previous_trail_name": "92c0996cd9ae7642eb0769f928abe6cb6c391751", + "previous_template_reference_name": "saver" }, - "commit_lead_time": 12009.0, + "commit_lead_time": 900.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "production-promotion", - "trail_name": "promotion-one-47", - "template_reference_name": "runner", + "trail_name": "promotion-one-46", + "template_reference_name": "saver", "git_commit": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f", "git_commit_info": { @@ -464,74 +462,74 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777361993.0, "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=198d0c91-0c81-43f4-8394-28bcbc26", + "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed?artifact_id=1e37acfd-223d-4121-887e-10e9f294", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/1085da6ce837c6ebc77dda1e23b5de4e3c33380f...1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "previous_git_commit": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "previous_fingerprint": "b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:a2ffba5@sha256:b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa...1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "previous_git_commit": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", + "previous_fingerprint": "1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:92c0996@sha256:1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "previous_trail_name": "promote-all-12", - "previous_template_reference_name": "runner" + "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", + "previous_trail_name": "promote-all-11", + "previous_template_reference_name": "saver" }, - "commit_lead_time": 816490.0, + "commit_lead_time": 796863.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", - "template_reference_name": "runner", - "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "template_reference_name": "saver", + "git_commit": "35479d51cd93407e3b25338a64f5539514c8663c", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c", "git_commit_info": { - "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "35479d51cd93407e3b25338a64f5539514c8663c", + "message": "Restructure rego policy so violations mirror compliance cases\n\nThe three violation rules did not map cleanly onto the two compliance\ncases. Replaced ignore_expiry_within_limit with ignore_too_far_ahead\n(names the failure rather than the success), added inactive_ignore_msg\nto compute the right diagnostic for each ignore sub-case, and reduced\nviolations from three rules to two -- one per compliance case, each\nusing not of the corresponding positive helper.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1778157272.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + "timestamp": 1778225680.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=71d615d1-5deb-41fd-999b-7385377d", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed?artifact_id=0cd4005d-17c3-44ad-a28f-9e801bad", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", "deployment_diff": null, - "commit_lead_time": 21211.0, + "commit_lead_time": -66824.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { - "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", - "template_reference_name": "runner", - "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "template_reference_name": "saver", + "git_commit": "35479d51cd93407e3b25338a64f5539514c8663c", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c", "git_commit_info": { - "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "35479d51cd93407e3b25338a64f5539514c8663c", + "message": "Restructure rego policy so violations mirror compliance cases\n\nThe three violation rules did not map cleanly onto the two compliance\ncases. Replaced ignore_expiry_within_limit with ignore_too_far_ahead\n(names the failure rather than the success), added inactive_ignore_msg\nto compute the right diagnostic for each ignore sub-case, and reduced\nviolations from three rules to two -- one per compliance case, each\nusing not of the corresponding positive helper.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1778157272.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + "timestamp": 1778225680.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=3643933b-99be-4337-aa5e-6a302d56", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed?artifact_id=4ebfdbd3-7e1d-4447-8f6b-5c28de0d", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact", "deployment_diff": null, - "commit_lead_time": 21211.0, + "commit_lead_time": -66824.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] } ], "ecs_context": { - "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/90432eba3a174098bb6f8c7a9c4a5193", + "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/25db3e22b29149ed970c25bc4d772823", "cluster_name": null, "service_name": null } }, { - "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:cfb0d52@sha256:a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:db53382@sha256:f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "compliant": true, "deployments": [], "policy_decisions": [ @@ -553,8 +551,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "saver-ci", - "trail_name": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "flow_name": "languages-start-points-ci", + "trail_name": "db53382650db8b7b3f216d0055009b0d77685677", "artifact_status": null } }, @@ -562,7 +560,31 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-46", + "trail_name": "promotion-one-45", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-beta", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": null } }, @@ -570,7 +592,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": null } }, @@ -578,7 +600,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": null } } @@ -598,8 +620,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "saver-ci", - "trail_name": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "flow_name": "languages-start-points-ci", + "trail_name": "db53382650db8b7b3f216d0055009b0d77685677", "artifact_status": "COMPLIANT" } }, @@ -607,7 +629,31 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-46", + "trail_name": "promotion-one-45", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-beta", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": "COMPLIANT" } }, @@ -615,7 +661,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": "COMPLIANT" } }, @@ -623,7 +669,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": "COMPLIANT" } } @@ -641,14 +687,14 @@ kosli get snapshot aws-prod --output=json "must_be_compliant": true } }, - "satisfied": null, - "ignored": true, + "satisfied": true, + "ignored": false, "resolutions": [ { "type": "rule_not_applicable", "context": { - "flow_name": "saver-ci", - "trail_name": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "flow_name": "languages-start-points-ci", + "trail_name": "db53382650db8b7b3f216d0055009b0d77685677", "artifact_status": null } }, @@ -656,7 +702,31 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-46", + "trail_name": "promotion-one-45", + "artifact_status": null + } + }, + { + "type": "rule_satisfied", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-beta", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": null } }, @@ -664,7 +734,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": null } }, @@ -672,7 +742,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": null } } @@ -705,8 +775,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "saver-ci", - "trail_name": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "flow_name": "languages-start-points-ci", + "trail_name": "db53382650db8b7b3f216d0055009b0d77685677", "artifact_status": null } }, @@ -714,7 +784,31 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-46", + "trail_name": "promotion-one-45", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-beta", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": null } }, @@ -722,7 +816,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": null } }, @@ -730,7 +824,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": null } } @@ -756,8 +850,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "saver-ci", - "trail_name": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "flow_name": "languages-start-points-ci", + "trail_name": "db53382650db8b7b3f216d0055009b0d77685677", "artifact_status": "COMPLIANT" } }, @@ -765,7 +859,31 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-46", + "trail_name": "promotion-one-45", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-beta", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": "COMPLIANT" } }, @@ -773,7 +891,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": "COMPLIANT" } }, @@ -781,7 +899,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": "COMPLIANT" } } @@ -805,8 +923,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "saver-ci", - "trail_name": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "flow_name": "languages-start-points-ci", + "trail_name": "db53382650db8b7b3f216d0055009b0d77685677", "artifact_status": null } }, @@ -814,7 +932,31 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-46", + "trail_name": "promotion-one-45", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-beta", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": null } }, @@ -822,7 +964,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": null } }, @@ -830,7 +972,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "artifact_status": null } } @@ -841,69 +983,69 @@ kosli get snapshot aws-prod --output=json } ], "reasons_for_incompliance": [], - "fingerprint": "a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "fingerprint": "f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "creationTimestamp": [ - 1778158856 + 1778081137 ], "pods": null, "annotation": { - "type": "unchanged", + "type": "updated-provenance", "was": 1, "now": 1 }, - "flow_name": "saver-ci", - "git_commit": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", - "commit_url": "https://github.com/cyber-dojo/saver/commit/cfb0d52610ab73011f325c4bb5bf0b54fb51031c", - "html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed?artifact_id=680cd12d-e9b5-4a2a-8abf-1e75a370", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci", + "flow_name": "languages-start-points-ci", + "git_commit": "db53382650db8b7b3f216d0055009b0d77685677", + "commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/db53382650db8b7b3f216d0055009b0d77685677", + "html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=cc5da9c3-89bd-4ac1-a5ed-8885517d", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/saver/compare/92c0996cd9ae7642eb0769f928abe6cb6c391751...cfb0d52610ab73011f325c4bb5bf0b54fb51031c", - "previous_git_commit": "92c0996cd9ae7642eb0769f928abe6cb6c391751", - "previous_fingerprint": "1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:92c0996@sha256:1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "diff_url": "https://github.com/cyber-dojo/languages-start-points/compare/1a191ad636b6d1d2215e3726ad307f48f58843b6...db53382650db8b7b3f216d0055009b0d77685677", + "previous_git_commit": "1a191ad636b6d1d2215e3726ad307f48f58843b6", + "previous_fingerprint": "808640967968ed09d2719d88e77e77a617030e5335d408a077d98cfbbeb49cf4", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:1a191ad@sha256:808640967968ed09d2719d88e77e77a617030e5335d408a077d98cfbbeb49cf4", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/saver/commit/92c0996cd9ae7642eb0769f928abe6cb6c391751", - "previous_trail_name": "92c0996cd9ae7642eb0769f928abe6cb6c391751", - "previous_template_reference_name": "saver" + "previous_git_commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/1a191ad636b6d1d2215e3726ad307f48f58843b6", + "previous_trail_name": "1a191ad636b6d1d2215e3726ad307f48f58843b6", + "previous_template_reference_name": "languages-start-points" }, - "commit_lead_time": 900.0, + "commit_lead_time": 846.0, "flows": [ { - "flow_name": "saver-ci", - "trail_name": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", - "template_reference_name": "saver", - "git_commit": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", - "commit_url": "https://github.com/cyber-dojo/saver/commit/cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "flow_name": "languages-start-points-ci", + "trail_name": "db53382650db8b7b3f216d0055009b0d77685677", + "template_reference_name": "languages-start-points", + "git_commit": "db53382650db8b7b3f216d0055009b0d77685677", + "commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/db53382650db8b7b3f216d0055009b0d77685677", "git_commit_info": { - "sha1": "cfb0d52610ab73011f325c4bb5bf0b54fb51031c", - "message": "Run CI workflow to check updated called snyk-scanning reusable workflow (#365)", + "sha1": "db53382650db8b7b3f216d0055009b0d77685677", + "message": "Merge pull request #206 from cyber-dojo/update-csharp-nunit2\n\nUpdate csharp-nunit", "author": "Jon Jagger ", "branch": "main", - "timestamp": 1778157956.0, - "url": "https://github.com/cyber-dojo/saver/commit/cfb0d52610ab73011f325c4bb5bf0b54fb51031c" + "timestamp": 1778080291.0, + "url": "https://github.com/cyber-dojo/languages-start-points/commit/db53382650db8b7b3f216d0055009b0d77685677" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed?artifact_id=680cd12d-e9b5-4a2a-8abf-1e75a370", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/saver-ci", + "html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=cc5da9c3-89bd-4ac1-a5ed-8885517d", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/saver/compare/92c0996cd9ae7642eb0769f928abe6cb6c391751...cfb0d52610ab73011f325c4bb5bf0b54fb51031c", - "previous_git_commit": "92c0996cd9ae7642eb0769f928abe6cb6c391751", - "previous_fingerprint": "1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:92c0996@sha256:1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "diff_url": "https://github.com/cyber-dojo/languages-start-points/compare/1a191ad636b6d1d2215e3726ad307f48f58843b6...db53382650db8b7b3f216d0055009b0d77685677", + "previous_git_commit": "1a191ad636b6d1d2215e3726ad307f48f58843b6", + "previous_fingerprint": "808640967968ed09d2719d88e77e77a617030e5335d408a077d98cfbbeb49cf4", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:1a191ad@sha256:808640967968ed09d2719d88e77e77a617030e5335d408a077d98cfbbeb49cf4", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/saver/commit/92c0996cd9ae7642eb0769f928abe6cb6c391751", - "previous_trail_name": "92c0996cd9ae7642eb0769f928abe6cb6c391751", - "previous_template_reference_name": "saver" + "previous_git_commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/1a191ad636b6d1d2215e3726ad307f48f58843b6", + "previous_trail_name": "1a191ad636b6d1d2215e3726ad307f48f58843b6", + "previous_template_reference_name": "languages-start-points" }, - "commit_lead_time": 900.0, + "commit_lead_time": 846.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "production-promotion", - "trail_name": "promotion-one-46", - "template_reference_name": "saver", + "trail_name": "promotion-one-45", + "template_reference_name": "languages-start-points", "git_commit": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f", "git_commit_info": { @@ -914,74 +1056,137 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777361993.0, "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed?artifact_id=1e37acfd-223d-4121-887e-10e9f294", + "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=88d4f5e5-448f-4b7c-b8a6-e21c5cfc", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa...1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "previous_git_commit": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "previous_fingerprint": "1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:92c0996@sha256:1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", + "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/1085da6ce837c6ebc77dda1e23b5de4e3c33380f...1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "previous_git_commit": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "previous_fingerprint": "808640967968ed09d2719d88e77e77a617030e5335d408a077d98cfbbeb49cf4", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:1a191ad@sha256:808640967968ed09d2719d88e77e77a617030e5335d408a077d98cfbbeb49cf4", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "previous_trail_name": "promote-all-11", - "previous_template_reference_name": "saver" + "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "previous_trail_name": "promotion-one-44", + "previous_template_reference_name": "languages-start-points" }, - "commit_lead_time": 796863.0, + "commit_lead_time": 719144.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "template_reference_name": "languages-start-points", + "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", + "git_commit_info": { + "sha1": "117e18e0cb1eab30b9747ece58327eabfc595b90", + "message": "Add debug commands for kosli-fingerprint", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1777614935.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=7037421b-6bc3-4370-86e5-34d83a36", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod", + "deployment_diff": null, + "commit_lead_time": 466202.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-vulns-aws-beta", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "template_reference_name": "languages-start-points", + "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", + "git_commit_info": { + "sha1": "117e18e0cb1eab30b9747ece58327eabfc595b90", + "message": "Add debug commands for kosli-fingerprint", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1777614935.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=d58e2fcc-a224-47de-8c1b-4fc7bdbb", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta", + "deployment_diff": null, + "commit_lead_time": 466202.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "template_reference_name": "languages-start-points", + "git_commit": "e50b0406a64efc36fb236afd464e75b31877f623", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623", + "git_commit_info": { + "sha1": "e50b0406a64efc36fb236afd464e75b31877f623", + "message": "Split snyk Kosli flows to separate per-vuln and per-artifact trails\n\nsnyk-vulns-{env} mixed two trail naming patterns: {repo}-{severity}-{CVE}\nfor individual vulnerabilities, and {repo}-{fingerprint} for aggregate\nartifact scan results. snyk-{env}-per-vuln and snyk-{env}-per-artifact\nmake each flow's purpose explicit and the Kosli UI easier to navigate.\n\nAlso removes temporary debug logging from the fingerprint step.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778153406.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=ebdd640f-262f-44d5-ac49-0c708fe2", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285", + "deployment_diff": null, + "commit_lead_time": -72269.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", - "template_reference_name": "saver", - "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "template_reference_name": "languages-start-points", + "git_commit": "35479d51cd93407e3b25338a64f5539514c8663c", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c", "git_commit_info": { - "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "35479d51cd93407e3b25338a64f5539514c8663c", + "message": "Restructure rego policy so violations mirror compliance cases\n\nThe three violation rules did not map cleanly onto the two compliance\ncases. Replaced ignore_expiry_within_limit with ignore_too_far_ahead\n(names the failure rather than the success), added inactive_ignore_msg\nto compute the right diagnostic for each ignore sub-case, and reduced\nviolations from three rules to two -- one per compliance case, each\nusing not of the corresponding positive helper.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1778157272.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + "timestamp": 1778225680.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed?artifact_id=52503371-4731-4037-a24b-570704a1", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=f7829fd9-2079-44ad-89d2-84688b3e", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact", "deployment_diff": null, - "commit_lead_time": 1584.0, + "commit_lead_time": -144543.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "saver-a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", - "template_reference_name": "saver", - "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "template_reference_name": "languages-start-points", + "git_commit": "35479d51cd93407e3b25338a64f5539514c8663c", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c", "git_commit_info": { - "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "35479d51cd93407e3b25338a64f5539514c8663c", + "message": "Restructure rego policy so violations mirror compliance cases\n\nThe three violation rules did not map cleanly onto the two compliance\ncases. Replaced ignore_expiry_within_limit with ignore_too_far_ahead\n(names the failure rather than the success), added inactive_ignore_msg\nto compute the right diagnostic for each ignore sub-case, and reduced\nviolations from three rules to two -- one per compliance case, each\nusing not of the corresponding positive helper.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1778157272.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + "timestamp": 1778225680.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed?artifact_id=041452ac-9c46-49f1-a43b-f828f8f4", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=5b227917-43d6-4346-8e6b-14d2559e", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", "deployment_diff": null, - "commit_lead_time": 1584.0, + "commit_lead_time": -144543.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] } ], "ecs_context": { - "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/25db3e22b29149ed970c25bc4d772823", + "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/4c27d625895a4234a4e8a819817e4289", "cluster_name": null, "service_name": null } }, { - "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:db53382@sha256:f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:a6ece2b@sha256:3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "compliant": true, "deployments": [], "policy_decisions": [ @@ -1003,8 +1208,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "languages-start-points-ci", - "trail_name": "db53382650db8b7b3f216d0055009b0d77685677", + "flow_name": "dashboard-ci", + "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", "artifact_status": null } }, @@ -1012,7 +1217,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-45", + "trail_name": "promote-all-11", "artifact_status": null } }, @@ -1020,7 +1225,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } }, @@ -1028,7 +1233,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } }, @@ -1036,23 +1241,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } } @@ -1072,8 +1277,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "languages-start-points-ci", - "trail_name": "db53382650db8b7b3f216d0055009b0d77685677", + "flow_name": "dashboard-ci", + "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", "artifact_status": "COMPLIANT" } }, @@ -1081,7 +1286,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-45", + "trail_name": "promote-all-11", "artifact_status": "COMPLIANT" } }, @@ -1089,7 +1294,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": "COMPLIANT" } }, @@ -1097,7 +1302,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": "COMPLIANT" } }, @@ -1105,23 +1310,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": "COMPLIANT" } } @@ -1145,8 +1350,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "languages-start-points-ci", - "trail_name": "db53382650db8b7b3f216d0055009b0d77685677", + "flow_name": "dashboard-ci", + "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", "artifact_status": null } }, @@ -1154,7 +1359,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-45", + "trail_name": "promote-all-11", "artifact_status": null } }, @@ -1162,7 +1367,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_satisfied", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } }, @@ -1170,7 +1375,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } }, @@ -1178,23 +1383,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } } @@ -1227,8 +1432,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "languages-start-points-ci", - "trail_name": "db53382650db8b7b3f216d0055009b0d77685677", + "flow_name": "dashboard-ci", + "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", "artifact_status": null } }, @@ -1236,7 +1441,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-45", + "trail_name": "promote-all-11", "artifact_status": null } }, @@ -1244,7 +1449,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } }, @@ -1252,7 +1457,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } }, @@ -1260,23 +1465,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } } @@ -1302,8 +1507,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "languages-start-points-ci", - "trail_name": "db53382650db8b7b3f216d0055009b0d77685677", + "flow_name": "dashboard-ci", + "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", "artifact_status": "COMPLIANT" } }, @@ -1311,7 +1516,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-45", + "trail_name": "promote-all-11", "artifact_status": "COMPLIANT" } }, @@ -1319,7 +1524,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": "COMPLIANT" } }, @@ -1327,7 +1532,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": "COMPLIANT" } }, @@ -1335,23 +1540,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": "COMPLIANT" } } @@ -1375,8 +1580,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "languages-start-points-ci", - "trail_name": "db53382650db8b7b3f216d0055009b0d77685677", + "flow_name": "dashboard-ci", + "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", "artifact_status": null } }, @@ -1384,7 +1589,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promotion-one-45", + "trail_name": "promote-all-11", "artifact_status": null } }, @@ -1392,7 +1597,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } }, @@ -1400,7 +1605,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } }, @@ -1408,23 +1613,23 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "artifact_status": null } } @@ -1435,100 +1640,100 @@ kosli get snapshot aws-prod --output=json } ], "reasons_for_incompliance": [], - "fingerprint": "f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "fingerprint": "3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "creationTimestamp": [ - 1778081137 + 1776923862 ], "pods": null, "annotation": { - "type": "unchanged", + "type": "updated-provenance", "was": 1, "now": 1 }, - "flow_name": "languages-start-points-ci", - "git_commit": "db53382650db8b7b3f216d0055009b0d77685677", - "commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/db53382650db8b7b3f216d0055009b0d77685677", - "html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=cc5da9c3-89bd-4ac1-a5ed-8885517d", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci", + "flow_name": "dashboard-ci", + "git_commit": "a6ece2b597888f7ab149759daadda08e3afab0c1", + "commit_url": "https://github.com/cyber-dojo/dashboard/commit/a6ece2b597888f7ab149759daadda08e3afab0c1", + "html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=1281066d-38ba-432c-92c2-f3d7003e", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/languages-start-points/compare/1a191ad636b6d1d2215e3726ad307f48f58843b6...db53382650db8b7b3f216d0055009b0d77685677", - "previous_git_commit": "1a191ad636b6d1d2215e3726ad307f48f58843b6", - "previous_fingerprint": "808640967968ed09d2719d88e77e77a617030e5335d408a077d98cfbbeb49cf4", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:1a191ad@sha256:808640967968ed09d2719d88e77e77a617030e5335d408a077d98cfbbeb49cf4", + "diff_url": "https://github.com/cyber-dojo/dashboard/compare/632127a7f162ad1ac02305a2940888264034364b...a6ece2b597888f7ab149759daadda08e3afab0c1", + "previous_git_commit": "632127a7f162ad1ac02305a2940888264034364b", + "previous_fingerprint": "a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:632127a@sha256:a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/1a191ad636b6d1d2215e3726ad307f48f58843b6", - "previous_trail_name": "1a191ad636b6d1d2215e3726ad307f48f58843b6", - "previous_template_reference_name": "languages-start-points" + "previous_git_commit_url": "https://github.com/cyber-dojo/dashboard/commit/632127a7f162ad1ac02305a2940888264034364b", + "previous_trail_name": "632127a7f162ad1ac02305a2940888264034364b", + "previous_template_reference_name": "dashboard" }, - "commit_lead_time": 846.0, + "commit_lead_time": 2577.0, "flows": [ { - "flow_name": "languages-start-points-ci", - "trail_name": "db53382650db8b7b3f216d0055009b0d77685677", - "template_reference_name": "languages-start-points", - "git_commit": "db53382650db8b7b3f216d0055009b0d77685677", - "commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/db53382650db8b7b3f216d0055009b0d77685677", + "flow_name": "dashboard-ci", + "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", + "template_reference_name": "dashboard", + "git_commit": "a6ece2b597888f7ab149759daadda08e3afab0c1", + "commit_url": "https://github.com/cyber-dojo/dashboard/commit/a6ece2b597888f7ab149759daadda08e3afab0c1", "git_commit_info": { - "sha1": "db53382650db8b7b3f216d0055009b0d77685677", - "message": "Merge pull request #206 from cyber-dojo/update-csharp-nunit2\n\nUpdate csharp-nunit", + "sha1": "a6ece2b597888f7ab149759daadda08e3afab0c1", + "message": "Remove defaulted aws-rolename from snyk-scanning job (#363)", "author": "Jon Jagger ", "branch": "main", - "timestamp": 1778080291.0, - "url": "https://github.com/cyber-dojo/languages-start-points/commit/db53382650db8b7b3f216d0055009b0d77685677" + "timestamp": 1776921285.0, + "url": "https://github.com/cyber-dojo/dashboard/commit/a6ece2b597888f7ab149759daadda08e3afab0c1" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=cc5da9c3-89bd-4ac1-a5ed-8885517d", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci", + "html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=1281066d-38ba-432c-92c2-f3d7003e", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/languages-start-points/compare/1a191ad636b6d1d2215e3726ad307f48f58843b6...db53382650db8b7b3f216d0055009b0d77685677", - "previous_git_commit": "1a191ad636b6d1d2215e3726ad307f48f58843b6", - "previous_fingerprint": "808640967968ed09d2719d88e77e77a617030e5335d408a077d98cfbbeb49cf4", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:1a191ad@sha256:808640967968ed09d2719d88e77e77a617030e5335d408a077d98cfbbeb49cf4", + "diff_url": "https://github.com/cyber-dojo/dashboard/compare/632127a7f162ad1ac02305a2940888264034364b...a6ece2b597888f7ab149759daadda08e3afab0c1", + "previous_git_commit": "632127a7f162ad1ac02305a2940888264034364b", + "previous_fingerprint": "a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:632127a@sha256:a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/languages-start-points/commit/1a191ad636b6d1d2215e3726ad307f48f58843b6", - "previous_trail_name": "1a191ad636b6d1d2215e3726ad307f48f58843b6", - "previous_template_reference_name": "languages-start-points" + "previous_git_commit_url": "https://github.com/cyber-dojo/dashboard/commit/632127a7f162ad1ac02305a2940888264034364b", + "previous_trail_name": "632127a7f162ad1ac02305a2940888264034364b", + "previous_template_reference_name": "dashboard" }, - "commit_lead_time": 846.0, + "commit_lead_time": 2577.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "production-promotion", - "trail_name": "promotion-one-45", - "template_reference_name": "languages-start-points", - "git_commit": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "trail_name": "promote-all-11", + "template_reference_name": "dashboard", + "git_commit": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", + "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", "git_commit_info": { - "sha1": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "message": "Add Snyk scan to promote-all, scoped to aws-prod compliance only\n\nMirrors the change made to promote-one: inserts a snyk-scan job\n(before sdlc-control-gate) that scans each artifact against the\naws-prod environment policy. Removes KOSLI_AWS_BETA env var and\nthe aws-beta assert and attest steps.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", + "message": "Revert WEB_SECRET_KEY_BASE changes - SECRET_KEY_BASE now fetched from AWS SSM in web's Terraform\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1777361993.0, - "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f" + "timestamp": 1776099255.0, + "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=88d4f5e5-448f-4b7c-b8a6-e21c5cfc", + "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=2acc6089-d810-49af-a10f-ff262a82", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/1085da6ce837c6ebc77dda1e23b5de4e3c33380f...1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "previous_git_commit": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "previous_fingerprint": "808640967968ed09d2719d88e77e77a617030e5335d408a077d98cfbbeb49cf4", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:1a191ad@sha256:808640967968ed09d2719d88e77e77a617030e5335d408a077d98cfbbeb49cf4", + "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa...87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", + "previous_git_commit": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", + "previous_fingerprint": "a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:632127a@sha256:a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "previous_trail_name": "promotion-one-44", - "previous_template_reference_name": "languages-start-points" + "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", + "previous_trail_name": "promote-all-10", + "previous_template_reference_name": "dashboard" }, - "commit_lead_time": 719144.0, + "commit_lead_time": 824607.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", - "template_reference_name": "languages-start-points", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "template_reference_name": "dashboard", "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", "git_commit_info": { @@ -1539,17 +1744,17 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=7037421b-6bc3-4370-86e5-34d83a36", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=5be0f361-8a6d-4e2d-a7d7-d07cf99d", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod", "deployment_diff": null, - "commit_lead_time": 466202.0, + "commit_lead_time": -691073.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", - "template_reference_name": "languages-start-points", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "template_reference_name": "dashboard", "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", "git_commit_info": { @@ -1560,17 +1765,17 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=d58e2fcc-a224-47de-8c1b-4fc7bdbb", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=7bf8e775-a41e-4128-bcab-cf0a3461", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta", "deployment_diff": null, - "commit_lead_time": 466202.0, + "commit_lead_time": -691073.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", - "template_reference_name": "languages-start-points", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "template_reference_name": "dashboard", "git_commit": "e50b0406a64efc36fb236afd464e75b31877f623", "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623", "git_commit_info": { @@ -1581,64 +1786,64 @@ kosli get snapshot aws-prod --output=json "timestamp": 1778153406.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=ebdd640f-262f-44d5-ac49-0c708fe2", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=87660fcc-9088-4b68-ad78-e3d873aa", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285", "deployment_diff": null, - "commit_lead_time": -72269.0, + "commit_lead_time": -1229544.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { - "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", - "template_reference_name": "languages-start-points", - "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "template_reference_name": "dashboard", + "git_commit": "35479d51cd93407e3b25338a64f5539514c8663c", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c", "git_commit_info": { - "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "35479d51cd93407e3b25338a64f5539514c8663c", + "message": "Restructure rego policy so violations mirror compliance cases\n\nThe three violation rules did not map cleanly onto the two compliance\ncases. Replaced ignore_expiry_within_limit with ignore_too_far_ahead\n(names the failure rather than the success), added inactive_ignore_msg\nto compute the right diagnostic for each ignore sub-case, and reduced\nviolations from three rules to two -- one per compliance case, each\nusing not of the corresponding positive helper.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1778157272.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + "timestamp": 1778225680.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=349919c1-8fe5-483f-977a-262ab1e3", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=ae4b690e-af60-4a12-a53a-e6c66495", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact", "deployment_diff": null, - "commit_lead_time": -76135.0, + "commit_lead_time": -1301818.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "languages-start-points-f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", - "template_reference_name": "languages-start-points", - "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "template_reference_name": "dashboard", + "git_commit": "35479d51cd93407e3b25338a64f5539514c8663c", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c", "git_commit_info": { - "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "35479d51cd93407e3b25338a64f5539514c8663c", + "message": "Restructure rego policy so violations mirror compliance cases\n\nThe three violation rules did not map cleanly onto the two compliance\ncases. Replaced ignore_expiry_within_limit with ignore_too_far_ahead\n(names the failure rather than the success), added inactive_ignore_msg\nto compute the right diagnostic for each ignore sub-case, and reduced\nviolations from three rules to two -- one per compliance case, each\nusing not of the corresponding positive helper.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1778157272.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + "timestamp": 1778225680.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=c0634b8e-3c3b-4e98-9801-5cb5f83e", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=531e7cf8-1002-4523-9056-9e28ccb9", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", "deployment_diff": null, - "commit_lead_time": -76135.0, + "commit_lead_time": -1301818.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] } ], "ecs_context": { - "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/4c27d625895a4234a4e8a819817e4289", + "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/0993e7a4118e4a7699ad6eb9c06a4b47", "cluster_name": null, "service_name": null } }, { - "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:1999d13@sha256:541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:30dffd0@sha256:becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "compliant": true, "deployments": [], "policy_decisions": [ @@ -1660,8 +1865,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "web-ci", - "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", + "flow_name": "differ-ci", + "trail_name": "30dffd09c3f896a322c65029247abcea3019c43a", "artifact_status": null } }, @@ -1669,7 +1874,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-13", + "trail_name": "promote-all-11", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": null } }, @@ -1677,15 +1890,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": null } }, @@ -1693,7 +1906,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": null } } @@ -1713,8 +1934,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "web-ci", - "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", + "flow_name": "differ-ci", + "trail_name": "30dffd09c3f896a322c65029247abcea3019c43a", "artifact_status": "COMPLIANT" } }, @@ -1722,7 +1943,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-13", + "trail_name": "promote-all-11", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": "COMPLIANT" } }, @@ -1730,15 +1959,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": "COMPLIANT" } }, @@ -1746,7 +1975,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": "COMPLIANT" } } @@ -1770,8 +2007,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "web-ci", - "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", + "flow_name": "differ-ci", + "trail_name": "30dffd09c3f896a322c65029247abcea3019c43a", "artifact_status": null } }, @@ -1779,7 +2016,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-13", + "trail_name": "promote-all-11", + "artifact_status": null + } + }, + { + "type": "rule_satisfied", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": null } }, @@ -1787,15 +2032,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": null } }, { - "type": "rule_satisfied", + "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": null } }, @@ -1803,7 +2048,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": null } } @@ -1836,8 +2089,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "web-ci", - "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", + "flow_name": "differ-ci", + "trail_name": "30dffd09c3f896a322c65029247abcea3019c43a", "artifact_status": null } }, @@ -1845,7 +2098,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-13", + "trail_name": "promote-all-11", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": null } }, @@ -1853,15 +2114,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": null } }, @@ -1869,7 +2130,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": null } } @@ -1895,8 +2164,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "web-ci", - "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", + "flow_name": "differ-ci", + "trail_name": "30dffd09c3f896a322c65029247abcea3019c43a", "artifact_status": "COMPLIANT" } }, @@ -1904,31 +2173,47 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-13", + "trail_name": "promote-all-11", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "flow_name": "snyk-vulns-aws-beta", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": "COMPLIANT" + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": "COMPLIANT" } } @@ -1952,8 +2237,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "web-ci", - "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", + "flow_name": "differ-ci", + "trail_name": "30dffd09c3f896a322c65029247abcea3019c43a", "artifact_status": null } }, @@ -1961,7 +2246,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-13", + "trail_name": "promote-all-11", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": null } }, @@ -1969,15 +2262,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": null } }, @@ -1985,7 +2278,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "artifact_status": null + } + }, + { + "type": "rule_not_applicable", + "context": { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "artifact_status": null } } @@ -1996,102 +2297,100 @@ kosli get snapshot aws-prod --output=json } ], "reasons_for_incompliance": [], - "fingerprint": "541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "fingerprint": "becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "creationTimestamp": [ - 1777842904, - 1777842905, - 1777842905 + 1776923213 ], "pods": null, "annotation": { - "type": "unchanged", - "was": 3, - "now": 3 + "type": "updated-provenance", + "was": 1, + "now": 1 }, - "flow_name": "web-ci", - "git_commit": "1999d1303424879336b04fa3310256554aa6cfa6", - "commit_url": "https://github.com/cyber-dojo/web/commit/1999d1303424879336b04fa3310256554aa6cfa6", - "html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=359b4539-989d-48f5-88eb-8a553baf", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci", + "flow_name": "differ-ci", + "git_commit": "30dffd09c3f896a322c65029247abcea3019c43a", + "commit_url": "https://github.com/cyber-dojo/differ/commit/30dffd09c3f896a322c65029247abcea3019c43a", + "html_url": "https://app.kosli.com/cyber-dojo/flows/differ-ci/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=046919b1-42dd-47f8-8569-912d0259", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/differ-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/web/compare/23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98...1999d1303424879336b04fa3310256554aa6cfa6", - "previous_git_commit": "23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", - "previous_fingerprint": "3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:23d6f24@sha256:3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", + "diff_url": "https://github.com/cyber-dojo/differ/compare/c9bbaa1eceb4b8bdffa065ea7034de23d3364919...30dffd09c3f896a322c65029247abcea3019c43a", + "previous_git_commit": "c9bbaa1eceb4b8bdffa065ea7034de23d3364919", + "previous_fingerprint": "480f4443a28b5057b956b1bcce13475b41bd2c1343563f18337ac0e7bf6e65ea", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:c9bbaa1@sha256:480f4443a28b5057b956b1bcce13475b41bd2c1343563f18337ac0e7bf6e65ea", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/web/commit/23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", - "previous_trail_name": "23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", - "previous_template_reference_name": "web" + "previous_git_commit_url": "https://github.com/cyber-dojo/differ/commit/c9bbaa1eceb4b8bdffa065ea7034de23d3364919", + "previous_trail_name": "c9bbaa1eceb4b8bdffa065ea7034de23d3364919", + "previous_template_reference_name": "differ" }, - "commit_lead_time": 1241.0, + "commit_lead_time": 1092.0, "flows": [ { - "flow_name": "web-ci", - "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", - "template_reference_name": "web", - "git_commit": "1999d1303424879336b04fa3310256554aa6cfa6", - "commit_url": "https://github.com/cyber-dojo/web/commit/1999d1303424879336b04fa3310256554aa6cfa6", + "flow_name": "differ-ci", + "trail_name": "30dffd09c3f896a322c65029247abcea3019c43a", + "template_reference_name": "differ", + "git_commit": "30dffd09c3f896a322c65029247abcea3019c43a", + "commit_url": "https://github.com/cyber-dojo/differ/commit/30dffd09c3f896a322c65029247abcea3019c43a", "git_commit_info": { - "sha1": "1999d1303424879336b04fa3310256554aa6cfa6", - "message": "Enable CSRF token enforcement on POST requests (Phase 2) (#306)\n\nPhase 1 (deployed April 14) set the csrf_token cookie on all responses.\nPhase 2 enables the enforcement check that was left commented out pending\nall users reloading. Adds a global jQuery ajaxSend hook so all POST\nrequests automatically include the token, and updates the controller test\nbase to seed the cookie and merge the token into POST params.\n\nUsers with a kata page open before this deploy will get one 403 on their\nnext test run; reloading the page picks up the new JS and self-heals.\n\nCo-authored-by: Claude Sonnet 4.6 ", + "sha1": "30dffd09c3f896a322c65029247abcea3019c43a", + "message": "Remove defaulted aws-rolename from snyk-scanning job (#373)", "author": "Jon Jagger ", "branch": "main", - "timestamp": 1777841663.0, - "url": "https://github.com/cyber-dojo/web/commit/1999d1303424879336b04fa3310256554aa6cfa6" + "timestamp": 1776922121.0, + "url": "https://github.com/cyber-dojo/differ/commit/30dffd09c3f896a322c65029247abcea3019c43a" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=359b4539-989d-48f5-88eb-8a553baf", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci", + "html_url": "https://app.kosli.com/cyber-dojo/flows/differ-ci/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=046919b1-42dd-47f8-8569-912d0259", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/differ-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/web/compare/23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98...1999d1303424879336b04fa3310256554aa6cfa6", - "previous_git_commit": "23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", - "previous_fingerprint": "3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:23d6f24@sha256:3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", + "diff_url": "https://github.com/cyber-dojo/differ/compare/c9bbaa1eceb4b8bdffa065ea7034de23d3364919...30dffd09c3f896a322c65029247abcea3019c43a", + "previous_git_commit": "c9bbaa1eceb4b8bdffa065ea7034de23d3364919", + "previous_fingerprint": "480f4443a28b5057b956b1bcce13475b41bd2c1343563f18337ac0e7bf6e65ea", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:c9bbaa1@sha256:480f4443a28b5057b956b1bcce13475b41bd2c1343563f18337ac0e7bf6e65ea", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/web/commit/23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", - "previous_trail_name": "23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", - "previous_template_reference_name": "web" + "previous_git_commit_url": "https://github.com/cyber-dojo/differ/commit/c9bbaa1eceb4b8bdffa065ea7034de23d3364919", + "previous_trail_name": "c9bbaa1eceb4b8bdffa065ea7034de23d3364919", + "previous_template_reference_name": "differ" }, - "commit_lead_time": 1241.0, + "commit_lead_time": 1092.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "production-promotion", - "trail_name": "promote-all-13", - "template_reference_name": "web", - "git_commit": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "trail_name": "promote-all-11", + "template_reference_name": "differ", + "git_commit": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", + "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", "git_commit_info": { - "sha1": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "message": "Add Snyk scan to promote-all, scoped to aws-prod compliance only\n\nMirrors the change made to promote-one: inserts a snyk-scan job\n(before sdlc-control-gate) that scans each artifact against the\naws-prod environment policy. Removes KOSLI_AWS_BETA env var and\nthe aws-beta assert and attest steps.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", + "message": "Revert WEB_SECRET_KEY_BASE changes - SECRET_KEY_BASE now fetched from AWS SSM in web's Terraform\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1777361993.0, - "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f" + "timestamp": 1776099255.0, + "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=a34a55d8-2118-49ac-8899-aa2b6306", + "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=a5169b25-0d5c-491c-991e-2c1d389b", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/1085da6ce837c6ebc77dda1e23b5de4e3c33380f...1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "previous_git_commit": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "previous_fingerprint": "3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:23d6f24@sha256:3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", + "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa...87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", + "previous_git_commit": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", + "previous_fingerprint": "480f4443a28b5057b956b1bcce13475b41bd2c1343563f18337ac0e7bf6e65ea", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:c9bbaa1@sha256:480f4443a28b5057b956b1bcce13475b41bd2c1343563f18337ac0e7bf6e65ea", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f", - "previous_trail_name": "promote-all-12", - "previous_template_reference_name": "web" + "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", + "previous_trail_name": "promote-all-10", + "previous_template_reference_name": "differ" }, - "commit_lead_time": 480911.0, + "commit_lead_time": 823958.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", - "template_reference_name": "web", + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "template_reference_name": "differ", "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", "git_commit_info": { @@ -2102,17 +2401,17 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=70de9485-fbcc-4d37-a744-546c44ba", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=4eefbc15-7ea4-4d60-87d8-3a6098cb", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod", "deployment_diff": null, - "commit_lead_time": 227969.0, + "commit_lead_time": -691722.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", - "template_reference_name": "web", + "flow_name": "snyk-vulns-aws-beta", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "template_reference_name": "differ", "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", "git_commit_info": { @@ -2123,43 +2422,85 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=d6d28b90-e930-4451-bb36-13e65471", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=f295a00f-04cf-4c92-96d2-44181c6a", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta", "deployment_diff": null, - "commit_lead_time": 227969.0, + "commit_lead_time": -691722.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "template_reference_name": "differ", + "git_commit": "e50b0406a64efc36fb236afd464e75b31877f623", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623", + "git_commit_info": { + "sha1": "e50b0406a64efc36fb236afd464e75b31877f623", + "message": "Split snyk Kosli flows to separate per-vuln and per-artifact trails\n\nsnyk-vulns-{env} mixed two trail naming patterns: {repo}-{severity}-{CVE}\nfor individual vulnerabilities, and {repo}-{fingerprint} for aggregate\nartifact scan results. snyk-{env}-per-vuln and snyk-{env}-per-artifact\nmake each flow's purpose explicit and the Kosli UI easier to navigate.\n\nAlso removes temporary debug logging from the fingerprint step.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778153406.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=274a4692-c2f3-48eb-b9d9-6cbbedad", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285", + "deployment_diff": null, + "commit_lead_time": -1230193.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", - "template_reference_name": "web", - "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "template_reference_name": "differ", + "git_commit": "35479d51cd93407e3b25338a64f5539514c8663c", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c", "git_commit_info": { - "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "35479d51cd93407e3b25338a64f5539514c8663c", + "message": "Restructure rego policy so violations mirror compliance cases\n\nThe three violation rules did not map cleanly onto the two compliance\ncases. Replaced ignore_expiry_within_limit with ignore_too_far_ahead\n(names the failure rather than the success), added inactive_ignore_msg\nto compute the right diagnostic for each ignore sub-case, and reduced\nviolations from three rules to two -- one per compliance case, each\nusing not of the corresponding positive helper.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1778157272.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + "timestamp": 1778225680.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=35faecec-2fd2-4bf2-a035-0bf6ec0b", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=fc9028e8-b169-4ff7-9f55-839b7f81", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", "deployment_diff": null, - "commit_lead_time": -314368.0, + "commit_lead_time": -1302467.0, + "artifact_compliance_in_flow": true, + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "template_reference_name": "differ", + "git_commit": "35479d51cd93407e3b25338a64f5539514c8663c", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c", + "git_commit_info": { + "sha1": "35479d51cd93407e3b25338a64f5539514c8663c", + "message": "Restructure rego policy so violations mirror compliance cases\n\nThe three violation rules did not map cleanly onto the two compliance\ncases. Replaced ignore_expiry_within_limit with ignore_too_far_ahead\n(names the failure rather than the success), added inactive_ignore_msg\nto compute the right diagnostic for each ignore sub-case, and reduced\nviolations from three rules to two -- one per compliance case, each\nusing not of the corresponding positive helper.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "author": "JonJagger ", + "branch": "main", + "timestamp": 1778225680.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=f9f2ad7e-4938-470d-be03-ab8e290e", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact", + "deployment_diff": null, + "commit_lead_time": -1302467.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] } ], "ecs_context": { - "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/9560296ee7a54a18afe27e41c76be7c5", + "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/ee14a7db1433415dbcbf9b2a5a983c4d", "cluster_name": null, "service_name": null } }, { - "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:a6ece2b@sha256:3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:8768460@sha256:2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "compliant": true, "deployments": [], "policy_decisions": [ @@ -2181,8 +2522,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "dashboard-ci", - "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", + "flow_name": "runner-ci", + "trail_name": "8768460dc1c91de5f6485a7d3e36870b683edfc3", "artifact_status": null } }, @@ -2190,31 +2531,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-11", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "promotion-one-47", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "artifact_status": null } }, @@ -2222,15 +2547,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "artifact_status": null } } @@ -2250,8 +2567,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "dashboard-ci", - "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", + "flow_name": "runner-ci", + "trail_name": "8768460dc1c91de5f6485a7d3e36870b683edfc3", "artifact_status": "COMPLIANT" } }, @@ -2259,31 +2576,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-11", - "artifact_status": "COMPLIANT" - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "artifact_status": "COMPLIANT" - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "promotion-one-47", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "artifact_status": "COMPLIANT" } }, @@ -2291,15 +2592,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "artifact_status": "COMPLIANT" - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "artifact_status": "COMPLIANT" } } @@ -2317,14 +2610,14 @@ kosli get snapshot aws-prod --output=json "must_be_compliant": true } }, - "satisfied": true, - "ignored": false, + "satisfied": null, + "ignored": true, "resolutions": [ { "type": "rule_not_applicable", "context": { - "flow_name": "dashboard-ci", - "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", + "flow_name": "runner-ci", + "trail_name": "8768460dc1c91de5f6485a7d3e36870b683edfc3", "artifact_status": null } }, @@ -2332,31 +2625,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-11", - "artifact_status": null - } - }, - { - "type": "rule_satisfied", - "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "promotion-one-47", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "artifact_status": null } }, @@ -2364,15 +2641,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "artifact_status": null } } @@ -2405,8 +2674,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "dashboard-ci", - "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", + "flow_name": "runner-ci", + "trail_name": "8768460dc1c91de5f6485a7d3e36870b683edfc3", "artifact_status": null } }, @@ -2414,31 +2683,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-11", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "promotion-one-47", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "artifact_status": null } }, @@ -2446,15 +2699,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "artifact_status": null } } @@ -2480,8 +2725,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "dashboard-ci", - "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", + "flow_name": "runner-ci", + "trail_name": "8768460dc1c91de5f6485a7d3e36870b683edfc3", "artifact_status": "COMPLIANT" } }, @@ -2489,31 +2734,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-11", - "artifact_status": "COMPLIANT" - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "artifact_status": "COMPLIANT" - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "promotion-one-47", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "artifact_status": "COMPLIANT" } }, @@ -2521,15 +2750,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "artifact_status": "COMPLIANT" - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "artifact_status": "COMPLIANT" } } @@ -2553,8 +2774,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "dashboard-ci", - "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", + "flow_name": "runner-ci", + "trail_name": "8768460dc1c91de5f6485a7d3e36870b683edfc3", "artifact_status": null } }, @@ -2562,31 +2783,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-11", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "promotion-one-47", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "artifact_status": null } }, @@ -2594,15 +2799,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "artifact_status": null } } @@ -2613,163 +2810,102 @@ kosli get snapshot aws-prod --output=json } ], "reasons_for_incompliance": [], - "fingerprint": "3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "fingerprint": "2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", "creationTimestamp": [ - 1776923862 + 1778178483, + 1778178485, + 1778178487 ], "pods": null, "annotation": { "type": "unchanged", - "was": 1, - "now": 1 + "was": 3, + "now": 3 }, - "flow_name": "dashboard-ci", - "git_commit": "a6ece2b597888f7ab149759daadda08e3afab0c1", - "commit_url": "https://github.com/cyber-dojo/dashboard/commit/a6ece2b597888f7ab149759daadda08e3afab0c1", - "html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=1281066d-38ba-432c-92c2-f3d7003e", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci", + "flow_name": "runner-ci", + "git_commit": "8768460dc1c91de5f6485a7d3e36870b683edfc3", + "commit_url": "https://github.com/cyber-dojo/runner/commit/8768460dc1c91de5f6485a7d3e36870b683edfc3", + "html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=4d69a029-0ed8-4ead-b1f5-f6e36c52", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/dashboard/compare/632127a7f162ad1ac02305a2940888264034364b...a6ece2b597888f7ab149759daadda08e3afab0c1", - "previous_git_commit": "632127a7f162ad1ac02305a2940888264034364b", - "previous_fingerprint": "a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:632127a@sha256:a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", + "diff_url": "https://github.com/cyber-dojo/runner/compare/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e...8768460dc1c91de5f6485a7d3e36870b683edfc3", + "previous_git_commit": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", + "previous_fingerprint": "b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:a2ffba5@sha256:b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/dashboard/commit/632127a7f162ad1ac02305a2940888264034364b", - "previous_trail_name": "632127a7f162ad1ac02305a2940888264034364b", - "previous_template_reference_name": "dashboard" + "previous_git_commit_url": "https://github.com/cyber-dojo/runner/commit/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", + "previous_trail_name": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", + "previous_template_reference_name": "runner" }, - "commit_lead_time": 2577.0, + "commit_lead_time": 12009.0, "flows": [ { - "flow_name": "dashboard-ci", - "trail_name": "a6ece2b597888f7ab149759daadda08e3afab0c1", - "template_reference_name": "dashboard", - "git_commit": "a6ece2b597888f7ab149759daadda08e3afab0c1", - "commit_url": "https://github.com/cyber-dojo/dashboard/commit/a6ece2b597888f7ab149759daadda08e3afab0c1", + "flow_name": "runner-ci", + "trail_name": "8768460dc1c91de5f6485a7d3e36870b683edfc3", + "template_reference_name": "runner", + "git_commit": "8768460dc1c91de5f6485a7d3e36870b683edfc3", + "commit_url": "https://github.com/cyber-dojo/runner/commit/8768460dc1c91de5f6485a7d3e36870b683edfc3", "git_commit_info": { - "sha1": "a6ece2b597888f7ab149759daadda08e3afab0c1", - "message": "Remove defaulted aws-rolename from snyk-scanning job (#363)", + "sha1": "8768460dc1c91de5f6485a7d3e36870b683edfc3", + "message": "Merge pull request #228 from cyber-dojo/add-doc-on-vulns\n\nAdd document detailing each known current snyk vulnerability", "author": "Jon Jagger ", "branch": "main", - "timestamp": 1776921285.0, - "url": "https://github.com/cyber-dojo/dashboard/commit/a6ece2b597888f7ab149759daadda08e3afab0c1" - }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=1281066d-38ba-432c-92c2-f3d7003e", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci", + "timestamp": 1778166474.0, + "url": "https://github.com/cyber-dojo/runner/commit/8768460dc1c91de5f6485a7d3e36870b683edfc3" + }, + "html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=4d69a029-0ed8-4ead-b1f5-f6e36c52", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/runner-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/dashboard/compare/632127a7f162ad1ac02305a2940888264034364b...a6ece2b597888f7ab149759daadda08e3afab0c1", - "previous_git_commit": "632127a7f162ad1ac02305a2940888264034364b", - "previous_fingerprint": "a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:632127a@sha256:a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", + "diff_url": "https://github.com/cyber-dojo/runner/compare/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e...8768460dc1c91de5f6485a7d3e36870b683edfc3", + "previous_git_commit": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", + "previous_fingerprint": "b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:a2ffba5@sha256:b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/dashboard/commit/632127a7f162ad1ac02305a2940888264034364b", - "previous_trail_name": "632127a7f162ad1ac02305a2940888264034364b", - "previous_template_reference_name": "dashboard" + "previous_git_commit_url": "https://github.com/cyber-dojo/runner/commit/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", + "previous_trail_name": "a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", + "previous_template_reference_name": "runner" }, - "commit_lead_time": 2577.0, + "commit_lead_time": 12009.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "production-promotion", - "trail_name": "promote-all-11", - "template_reference_name": "dashboard", - "git_commit": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", + "trail_name": "promotion-one-47", + "template_reference_name": "runner", + "git_commit": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f", "git_commit_info": { - "sha1": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "message": "Revert WEB_SECRET_KEY_BASE changes - SECRET_KEY_BASE now fetched from AWS SSM in web's Terraform\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "message": "Add Snyk scan to promote-all, scoped to aws-prod compliance only\n\nMirrors the change made to promote-one: inserts a snyk-scan job\n(before sdlc-control-gate) that scans each artifact against the\naws-prod environment policy. Removes KOSLI_AWS_BETA env var and\nthe aws-beta assert and attest steps.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1776099255.0, - "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa" + "timestamp": 1777361993.0, + "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=2acc6089-d810-49af-a10f-ff262a82", + "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=198d0c91-0c81-43f4-8394-28bcbc26", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa...87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "previous_git_commit": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "previous_fingerprint": "a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:632127a@sha256:a03cce86f5958febc442665846863ab9701456d766e76ad3816f3f00a971d850", + "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/1085da6ce837c6ebc77dda1e23b5de4e3c33380f...1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "previous_git_commit": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "previous_fingerprint": "b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:a2ffba5@sha256:b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "previous_trail_name": "promote-all-10", - "previous_template_reference_name": "dashboard" - }, - "commit_lead_time": 824607.0, - "artifact_compliance_in_flow": true, - "flow_reasons_for_non_compliance": [] - }, - { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "template_reference_name": "dashboard", - "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", - "git_commit_info": { - "sha1": "117e18e0cb1eab30b9747ece58327eabfc595b90", - "message": "Add debug commands for kosli-fingerprint", - "author": "JonJagger ", - "branch": "main", - "timestamp": 1777614935.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" - }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=5be0f361-8a6d-4e2d-a7d7-d07cf99d", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod", - "deployment_diff": null, - "commit_lead_time": -691073.0, - "artifact_compliance_in_flow": true, - "flow_reasons_for_non_compliance": [] - }, - { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "template_reference_name": "dashboard", - "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", - "git_commit_info": { - "sha1": "117e18e0cb1eab30b9747ece58327eabfc595b90", - "message": "Add debug commands for kosli-fingerprint", - "author": "JonJagger ", - "branch": "main", - "timestamp": 1777614935.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" - }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=7bf8e775-a41e-4128-bcab-cf0a3461", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta", - "deployment_diff": null, - "commit_lead_time": -691073.0, - "artifact_compliance_in_flow": true, - "flow_reasons_for_non_compliance": [] - }, - { - "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "template_reference_name": "dashboard", - "git_commit": "e50b0406a64efc36fb236afd464e75b31877f623", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623", - "git_commit_info": { - "sha1": "e50b0406a64efc36fb236afd464e75b31877f623", - "message": "Split snyk Kosli flows to separate per-vuln and per-artifact trails\n\nsnyk-vulns-{env} mixed two trail naming patterns: {repo}-{severity}-{CVE}\nfor individual vulnerabilities, and {repo}-{fingerprint} for aggregate\nartifact scan results. snyk-{env}-per-vuln and snyk-{env}-per-artifact\nmake each flow's purpose explicit and the Kosli UI easier to navigate.\n\nAlso removes temporary debug logging from the fingerprint step.\n\nCo-Authored-By: Claude Sonnet 4.6 ", - "author": "JonJagger ", - "branch": "main", - "timestamp": 1778153406.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623" + "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "previous_trail_name": "promote-all-12", + "previous_template_reference_name": "runner" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=87660fcc-9088-4b68-ad78-e3d873aa", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285", - "deployment_diff": null, - "commit_lead_time": -1229544.0, + "commit_lead_time": 816490.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { - "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "template_reference_name": "dashboard", + "flow_name": "snyk-aws-beta-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "template_reference_name": "runner", "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", "git_commit_info": { @@ -2780,43 +2916,43 @@ kosli get snapshot aws-prod --output=json "timestamp": 1778157272.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=6aee29f9-6c2b-42e1-adf9-7d653c5c", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=71d615d1-5deb-41fd-999b-7385377d", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact", "deployment_diff": null, - "commit_lead_time": -1233410.0, + "commit_lead_time": 21211.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "dashboard-3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "template_reference_name": "dashboard", - "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "runner-2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "template_reference_name": "runner", + "git_commit": "35479d51cd93407e3b25338a64f5539514c8663c", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c", "git_commit_info": { - "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "35479d51cd93407e3b25338a64f5539514c8663c", + "message": "Restructure rego policy so violations mirror compliance cases\n\nThe three violation rules did not map cleanly onto the two compliance\ncases. Replaced ignore_expiry_within_limit with ignore_too_far_ahead\n(names the failure rather than the success), added inactive_ignore_msg\nto compute the right diagnostic for each ignore sub-case, and reduced\nviolations from three rules to two -- one per compliance case, each\nusing not of the corresponding positive helper.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1778157272.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + "timestamp": 1778225680.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=a2573f86-5213-4b58-8089-66c26d49", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=cd2b0cb3-81d3-4752-9e6a-caf2ee47", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", "deployment_diff": null, - "commit_lead_time": -1233410.0, + "commit_lead_time": -47197.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] } ], "ecs_context": { - "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/0993e7a4118e4a7699ad6eb9c06a4b47", + "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/90432eba3a174098bb6f8c7a9c4a5193", "cluster_name": null, "service_name": null } }, { - "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:9dd6c65@sha256:cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:1999d13@sha256:541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "compliant": true, "deployments": [], "policy_decisions": [ @@ -2838,8 +2974,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "custom-start-points-ci", - "trail_name": "9dd6c657bc443c45c19e81165ff99286e237cfe3", + "flow_name": "web-ci", + "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", "artifact_status": null } }, @@ -2847,15 +2983,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-11", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "trail_name": "promote-all-13", "artifact_status": null } }, @@ -2863,15 +2991,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": null } }, @@ -2879,15 +3007,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": null } } @@ -2907,8 +3027,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "custom-start-points-ci", - "trail_name": "9dd6c657bc443c45c19e81165ff99286e237cfe3", + "flow_name": "web-ci", + "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", "artifact_status": "COMPLIANT" } }, @@ -2916,15 +3036,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-11", - "artifact_status": "COMPLIANT" - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "trail_name": "promote-all-13", "artifact_status": "COMPLIANT" } }, @@ -2932,15 +3044,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": "COMPLIANT" } }, @@ -2948,15 +3060,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", - "artifact_status": "COMPLIANT" - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": "COMPLIANT" } } @@ -2980,8 +3084,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "custom-start-points-ci", - "trail_name": "9dd6c657bc443c45c19e81165ff99286e237cfe3", + "flow_name": "web-ci", + "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", "artifact_status": null } }, @@ -2989,15 +3093,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-11", - "artifact_status": null - } - }, - { - "type": "rule_satisfied", - "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "trail_name": "promote-all-13", "artifact_status": null } }, @@ -3005,15 +3101,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": null } }, { - "type": "rule_not_applicable", + "type": "rule_satisfied", "context": { - "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": null } }, @@ -3021,15 +3117,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": null } } @@ -3062,56 +3150,40 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "custom-start-points-ci", - "trail_name": "9dd6c657bc443c45c19e81165ff99286e237cfe3", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "production-promotion", - "trail_name": "promote-all-11", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "flow_name": "web-ci", + "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "flow_name": "production-promotion", + "trail_name": "promote-all-13", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "flow_name": "snyk-vulns-aws-beta", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": null } } @@ -3137,8 +3209,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "custom-start-points-ci", - "trail_name": "9dd6c657bc443c45c19e81165ff99286e237cfe3", + "flow_name": "web-ci", + "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", "artifact_status": "COMPLIANT" } }, @@ -3146,15 +3218,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-11", - "artifact_status": "COMPLIANT" - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "trail_name": "promote-all-13", "artifact_status": "COMPLIANT" } }, @@ -3162,15 +3226,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": "COMPLIANT" } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": "COMPLIANT" } }, @@ -3178,15 +3242,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", - "artifact_status": "COMPLIANT" - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": "COMPLIANT" } } @@ -3210,8 +3266,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "custom-start-points-ci", - "trail_name": "9dd6c657bc443c45c19e81165ff99286e237cfe3", + "flow_name": "web-ci", + "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", "artifact_status": null } }, @@ -3219,15 +3275,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "production-promotion", - "trail_name": "promote-all-11", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "trail_name": "promote-all-13", "artifact_status": null } }, @@ -3235,15 +3283,15 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": null } }, { "type": "rule_not_applicable", "context": { - "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": null } }, @@ -3251,15 +3299,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", - "artifact_status": null - } - }, - { - "type": "rule_not_applicable", - "context": { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "artifact_status": null } } @@ -3270,100 +3310,102 @@ kosli get snapshot aws-prod --output=json } ], "reasons_for_incompliance": [], - "fingerprint": "cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "fingerprint": "541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", "creationTimestamp": [ - 1776923539 + 1777842904, + 1777842905, + 1777842905 ], "pods": null, "annotation": { "type": "unchanged", - "was": 1, - "now": 1 + "was": 3, + "now": 3 }, - "flow_name": "custom-start-points-ci", - "git_commit": "9dd6c657bc443c45c19e81165ff99286e237cfe3", - "commit_url": "https://github.com/cyber-dojo/custom-start-points/commit/9dd6c657bc443c45c19e81165ff99286e237cfe3", - "html_url": "https://app.kosli.com/cyber-dojo/flows/custom-start-points-ci/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=f1d404d2-81f9-4f7a-9a01-9742e3e2", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/custom-start-points-ci", + "flow_name": "web-ci", + "git_commit": "1999d1303424879336b04fa3310256554aa6cfa6", + "commit_url": "https://github.com/cyber-dojo/web/commit/1999d1303424879336b04fa3310256554aa6cfa6", + "html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=359b4539-989d-48f5-88eb-8a553baf", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/custom-start-points/compare/8adb92a471e3f5caf65481155d45121a865b67a7...9dd6c657bc443c45c19e81165ff99286e237cfe3", - "previous_git_commit": "8adb92a471e3f5caf65481155d45121a865b67a7", - "previous_fingerprint": "db4ebea9fe973c7f195668be3706cd6049c07ed693de1b6e7a2a090f00498497", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:8adb92a@sha256:db4ebea9fe973c7f195668be3706cd6049c07ed693de1b6e7a2a090f00498497", + "diff_url": "https://github.com/cyber-dojo/web/compare/23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98...1999d1303424879336b04fa3310256554aa6cfa6", + "previous_git_commit": "23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", + "previous_fingerprint": "3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:23d6f24@sha256:3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/custom-start-points/commit/8adb92a471e3f5caf65481155d45121a865b67a7", - "previous_trail_name": "8adb92a471e3f5caf65481155d45121a865b67a7", - "previous_template_reference_name": "custom-start-points" + "previous_git_commit_url": "https://github.com/cyber-dojo/web/commit/23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", + "previous_trail_name": "23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", + "previous_template_reference_name": "web" }, - "commit_lead_time": 2530.0, + "commit_lead_time": 1241.0, "flows": [ { - "flow_name": "custom-start-points-ci", - "trail_name": "9dd6c657bc443c45c19e81165ff99286e237cfe3", - "template_reference_name": "custom-start-points", - "git_commit": "9dd6c657bc443c45c19e81165ff99286e237cfe3", - "commit_url": "https://github.com/cyber-dojo/custom-start-points/commit/9dd6c657bc443c45c19e81165ff99286e237cfe3", + "flow_name": "web-ci", + "trail_name": "1999d1303424879336b04fa3310256554aa6cfa6", + "template_reference_name": "web", + "git_commit": "1999d1303424879336b04fa3310256554aa6cfa6", + "commit_url": "https://github.com/cyber-dojo/web/commit/1999d1303424879336b04fa3310256554aa6cfa6", "git_commit_info": { - "sha1": "9dd6c657bc443c45c19e81165ff99286e237cfe3", - "message": "Merge pull request #110 from cyber-dojo/remove-defaulted-aws-rolename\n\nRemove defaulted aws-rolename from snyk-scanning job", + "sha1": "1999d1303424879336b04fa3310256554aa6cfa6", + "message": "Enable CSRF token enforcement on POST requests (Phase 2) (#306)\n\nPhase 1 (deployed April 14) set the csrf_token cookie on all responses.\nPhase 2 enables the enforcement check that was left commented out pending\nall users reloading. Adds a global jQuery ajaxSend hook so all POST\nrequests automatically include the token, and updates the controller test\nbase to seed the cookie and merge the token into POST params.\n\nUsers with a kata page open before this deploy will get one 403 on their\nnext test run; reloading the page picks up the new JS and self-heals.\n\nCo-authored-by: Claude Sonnet 4.6 ", "author": "Jon Jagger ", "branch": "main", - "timestamp": 1776921009.0, - "url": "https://github.com/cyber-dojo/custom-start-points/commit/9dd6c657bc443c45c19e81165ff99286e237cfe3" + "timestamp": 1777841663.0, + "url": "https://github.com/cyber-dojo/web/commit/1999d1303424879336b04fa3310256554aa6cfa6" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/custom-start-points-ci/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=f1d404d2-81f9-4f7a-9a01-9742e3e2", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/custom-start-points-ci", + "html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=359b4539-989d-48f5-88eb-8a553baf", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/web-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/custom-start-points/compare/8adb92a471e3f5caf65481155d45121a865b67a7...9dd6c657bc443c45c19e81165ff99286e237cfe3", - "previous_git_commit": "8adb92a471e3f5caf65481155d45121a865b67a7", - "previous_fingerprint": "db4ebea9fe973c7f195668be3706cd6049c07ed693de1b6e7a2a090f00498497", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:8adb92a@sha256:db4ebea9fe973c7f195668be3706cd6049c07ed693de1b6e7a2a090f00498497", + "diff_url": "https://github.com/cyber-dojo/web/compare/23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98...1999d1303424879336b04fa3310256554aa6cfa6", + "previous_git_commit": "23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", + "previous_fingerprint": "3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:23d6f24@sha256:3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/custom-start-points/commit/8adb92a471e3f5caf65481155d45121a865b67a7", - "previous_trail_name": "8adb92a471e3f5caf65481155d45121a865b67a7", - "previous_template_reference_name": "custom-start-points" + "previous_git_commit_url": "https://github.com/cyber-dojo/web/commit/23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", + "previous_trail_name": "23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98", + "previous_template_reference_name": "web" }, - "commit_lead_time": 2530.0, + "commit_lead_time": 1241.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "production-promotion", - "trail_name": "promote-all-11", - "template_reference_name": "custom-start-points", - "git_commit": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", + "trail_name": "promote-all-13", + "template_reference_name": "web", + "git_commit": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f", "git_commit_info": { - "sha1": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "message": "Revert WEB_SECRET_KEY_BASE changes - SECRET_KEY_BASE now fetched from AWS SSM in web's Terraform\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "message": "Add Snyk scan to promote-all, scoped to aws-prod compliance only\n\nMirrors the change made to promote-one: inserts a snyk-scan job\n(before sdlc-control-gate) that scans each artifact against the\naws-prod environment policy. Removes KOSLI_AWS_BETA env var and\nthe aws-beta assert and attest steps.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1776099255.0, - "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa" + "timestamp": 1777361993.0, + "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=604eb5a4-324d-4140-a976-19265352", + "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=a34a55d8-2118-49ac-8899-aa2b6306", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa...87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "previous_git_commit": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "previous_fingerprint": "db4ebea9fe973c7f195668be3706cd6049c07ed693de1b6e7a2a090f00498497", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:8adb92a@sha256:db4ebea9fe973c7f195668be3706cd6049c07ed693de1b6e7a2a090f00498497", + "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/1085da6ce837c6ebc77dda1e23b5de4e3c33380f...1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "previous_git_commit": "1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "previous_fingerprint": "3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:23d6f24@sha256:3302e9aee07946df391e246572cda3ea64de480c92d7f598c3e6ead9cb5e3020", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "previous_trail_name": "promote-all-10", - "previous_template_reference_name": "custom-start-points" + "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/1085da6ce837c6ebc77dda1e23b5de4e3c33380f", + "previous_trail_name": "promote-all-12", + "previous_template_reference_name": "web" }, - "commit_lead_time": 824284.0, + "commit_lead_time": 480911.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { - "flow_name": "snyk-vulns-aws-prod", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", - "template_reference_name": "custom-start-points", + "flow_name": "snyk-vulns-aws-beta", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "template_reference_name": "web", "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", "git_commit_info": { @@ -3374,17 +3416,17 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=c6ec6ca6-9900-445e-8986-76bc3e3d", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=70de9485-fbcc-4d37-a744-546c44ba", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta", "deployment_diff": null, - "commit_lead_time": -691396.0, + "commit_lead_time": 227969.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { - "flow_name": "snyk-vulns-aws-beta", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", - "template_reference_name": "custom-start-points", + "flow_name": "snyk-vulns-aws-prod", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "template_reference_name": "web", "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", "git_commit_info": { @@ -3395,85 +3437,43 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=fe2b6149-935b-4098-aafe-1afabea3", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta", - "deployment_diff": null, - "commit_lead_time": -691396.0, - "artifact_compliance_in_flow": true, - "flow_reasons_for_non_compliance": [] - }, - { - "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", - "template_reference_name": "custom-start-points", - "git_commit": "e50b0406a64efc36fb236afd464e75b31877f623", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623", - "git_commit_info": { - "sha1": "e50b0406a64efc36fb236afd464e75b31877f623", - "message": "Split snyk Kosli flows to separate per-vuln and per-artifact trails\n\nsnyk-vulns-{env} mixed two trail naming patterns: {repo}-{severity}-{CVE}\nfor individual vulnerabilities, and {repo}-{fingerprint} for aggregate\nartifact scan results. snyk-{env}-per-vuln and snyk-{env}-per-artifact\nmake each flow's purpose explicit and the Kosli UI easier to navigate.\n\nAlso removes temporary debug logging from the fingerprint step.\n\nCo-Authored-By: Claude Sonnet 4.6 ", - "author": "JonJagger ", - "branch": "main", - "timestamp": 1778153406.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623" - }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=95af50be-66db-486f-8278-24a0ead0", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285", - "deployment_diff": null, - "commit_lead_time": -1229867.0, - "artifact_compliance_in_flow": true, - "flow_reasons_for_non_compliance": [] - }, - { - "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", - "template_reference_name": "custom-start-points", - "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "git_commit_info": { - "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", - "author": "JonJagger ", - "branch": "main", - "timestamp": 1778157272.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" - }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=abac846b-b57f-437a-9b4c-b8043f6a", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=d6d28b90-e930-4451-bb36-13e65471", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod", "deployment_diff": null, - "commit_lead_time": -1233733.0, + "commit_lead_time": 227969.0, "artifact_compliance_in_flow": true, - "flow_reasons_for_non_compliance": [] - }, - { - "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", - "template_reference_name": "custom-start-points", - "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "flow_reasons_for_non_compliance": [] + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "trail_name": "web-541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "template_reference_name": "web", + "git_commit": "35479d51cd93407e3b25338a64f5539514c8663c", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c", "git_commit_info": { - "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "35479d51cd93407e3b25338a64f5539514c8663c", + "message": "Restructure rego policy so violations mirror compliance cases\n\nThe three violation rules did not map cleanly onto the two compliance\ncases. Replaced ignore_expiry_within_limit with ignore_too_far_ahead\n(names the failure rather than the success), added inactive_ignore_msg\nto compute the right diagnostic for each ignore sub-case, and reduced\nviolations from three rules to two -- one per compliance case, each\nusing not of the corresponding positive helper.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1778157272.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + "timestamp": 1778225680.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=555f5b77-e649-40e0-b7ea-314632f8", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=8994f101-d21e-4457-b722-8748323b", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", "deployment_diff": null, - "commit_lead_time": -1233733.0, + "commit_lead_time": -382776.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] } ], "ecs_context": { - "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/f009873b96764616a63037619de83dd3", + "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/9560296ee7a54a18afe27e41c76be7c5", "cluster_name": null, "service_name": null } }, { - "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:30dffd0@sha256:becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:9dd6c65@sha256:cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "compliant": true, "deployments": [], "policy_decisions": [ @@ -3495,8 +3495,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "differ-ci", - "trail_name": "30dffd09c3f896a322c65029247abcea3019c43a", + "flow_name": "custom-start-points-ci", + "trail_name": "9dd6c657bc443c45c19e81165ff99286e237cfe3", "artifact_status": null } }, @@ -3512,7 +3512,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } }, @@ -3520,7 +3520,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } }, @@ -3528,7 +3528,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } }, @@ -3536,7 +3536,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } }, @@ -3544,7 +3544,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } } @@ -3564,8 +3564,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "differ-ci", - "trail_name": "30dffd09c3f896a322c65029247abcea3019c43a", + "flow_name": "custom-start-points-ci", + "trail_name": "9dd6c657bc443c45c19e81165ff99286e237cfe3", "artifact_status": "COMPLIANT" } }, @@ -3581,7 +3581,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": "COMPLIANT" } }, @@ -3589,7 +3589,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": "COMPLIANT" } }, @@ -3597,7 +3597,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": "COMPLIANT" } }, @@ -3605,7 +3605,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": "COMPLIANT" } }, @@ -3613,7 +3613,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": "COMPLIANT" } } @@ -3637,8 +3637,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_not_applicable", "context": { - "flow_name": "differ-ci", - "trail_name": "30dffd09c3f896a322c65029247abcea3019c43a", + "flow_name": "custom-start-points-ci", + "trail_name": "9dd6c657bc443c45c19e81165ff99286e237cfe3", "artifact_status": null } }, @@ -3654,7 +3654,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_satisfied", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } }, @@ -3662,7 +3662,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } }, @@ -3670,7 +3670,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } }, @@ -3678,7 +3678,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } }, @@ -3686,7 +3686,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } } @@ -3719,8 +3719,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "differ-ci", - "trail_name": "30dffd09c3f896a322c65029247abcea3019c43a", + "flow_name": "custom-start-points-ci", + "trail_name": "9dd6c657bc443c45c19e81165ff99286e237cfe3", "artifact_status": null } }, @@ -3736,7 +3736,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } }, @@ -3744,7 +3744,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } }, @@ -3752,7 +3752,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } }, @@ -3760,7 +3760,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } }, @@ -3768,7 +3768,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } } @@ -3794,8 +3794,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "differ-ci", - "trail_name": "30dffd09c3f896a322c65029247abcea3019c43a", + "flow_name": "custom-start-points-ci", + "trail_name": "9dd6c657bc443c45c19e81165ff99286e237cfe3", "artifact_status": "COMPLIANT" } }, @@ -3811,7 +3811,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": "COMPLIANT" } }, @@ -3819,7 +3819,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": "COMPLIANT" } }, @@ -3827,7 +3827,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": "COMPLIANT" } }, @@ -3835,7 +3835,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": "COMPLIANT" } }, @@ -3843,7 +3843,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": "COMPLIANT" } } @@ -3867,8 +3867,8 @@ kosli get snapshot aws-prod --output=json { "type": "rule_satisfied", "context": { - "flow_name": "differ-ci", - "trail_name": "30dffd09c3f896a322c65029247abcea3019c43a", + "flow_name": "custom-start-points-ci", + "trail_name": "9dd6c657bc443c45c19e81165ff99286e237cfe3", "artifact_status": null } }, @@ -3884,7 +3884,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } }, @@ -3892,7 +3892,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } }, @@ -3900,7 +3900,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } }, @@ -3908,7 +3908,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } }, @@ -3916,7 +3916,7 @@ kosli get snapshot aws-prod --output=json "type": "rule_not_applicable", "context": { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "artifact_status": null } } @@ -3927,9 +3927,9 @@ kosli get snapshot aws-prod --output=json } ], "reasons_for_incompliance": [], - "fingerprint": "becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "fingerprint": "cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", "creationTimestamp": [ - 1776923213 + 1776923539 ], "pods": null, "annotation": { @@ -3937,59 +3937,59 @@ kosli get snapshot aws-prod --output=json "was": 1, "now": 1 }, - "flow_name": "differ-ci", - "git_commit": "30dffd09c3f896a322c65029247abcea3019c43a", - "commit_url": "https://github.com/cyber-dojo/differ/commit/30dffd09c3f896a322c65029247abcea3019c43a", - "html_url": "https://app.kosli.com/cyber-dojo/flows/differ-ci/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=046919b1-42dd-47f8-8569-912d0259", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/differ-ci", + "flow_name": "custom-start-points-ci", + "git_commit": "9dd6c657bc443c45c19e81165ff99286e237cfe3", + "commit_url": "https://github.com/cyber-dojo/custom-start-points/commit/9dd6c657bc443c45c19e81165ff99286e237cfe3", + "html_url": "https://app.kosli.com/cyber-dojo/flows/custom-start-points-ci/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=f1d404d2-81f9-4f7a-9a01-9742e3e2", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/custom-start-points-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/differ/compare/c9bbaa1eceb4b8bdffa065ea7034de23d3364919...30dffd09c3f896a322c65029247abcea3019c43a", - "previous_git_commit": "c9bbaa1eceb4b8bdffa065ea7034de23d3364919", - "previous_fingerprint": "480f4443a28b5057b956b1bcce13475b41bd2c1343563f18337ac0e7bf6e65ea", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:c9bbaa1@sha256:480f4443a28b5057b956b1bcce13475b41bd2c1343563f18337ac0e7bf6e65ea", + "diff_url": "https://github.com/cyber-dojo/custom-start-points/compare/8adb92a471e3f5caf65481155d45121a865b67a7...9dd6c657bc443c45c19e81165ff99286e237cfe3", + "previous_git_commit": "8adb92a471e3f5caf65481155d45121a865b67a7", + "previous_fingerprint": "db4ebea9fe973c7f195668be3706cd6049c07ed693de1b6e7a2a090f00498497", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:8adb92a@sha256:db4ebea9fe973c7f195668be3706cd6049c07ed693de1b6e7a2a090f00498497", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/differ/commit/c9bbaa1eceb4b8bdffa065ea7034de23d3364919", - "previous_trail_name": "c9bbaa1eceb4b8bdffa065ea7034de23d3364919", - "previous_template_reference_name": "differ" + "previous_git_commit_url": "https://github.com/cyber-dojo/custom-start-points/commit/8adb92a471e3f5caf65481155d45121a865b67a7", + "previous_trail_name": "8adb92a471e3f5caf65481155d45121a865b67a7", + "previous_template_reference_name": "custom-start-points" }, - "commit_lead_time": 1092.0, + "commit_lead_time": 2530.0, "flows": [ { - "flow_name": "differ-ci", - "trail_name": "30dffd09c3f896a322c65029247abcea3019c43a", - "template_reference_name": "differ", - "git_commit": "30dffd09c3f896a322c65029247abcea3019c43a", - "commit_url": "https://github.com/cyber-dojo/differ/commit/30dffd09c3f896a322c65029247abcea3019c43a", + "flow_name": "custom-start-points-ci", + "trail_name": "9dd6c657bc443c45c19e81165ff99286e237cfe3", + "template_reference_name": "custom-start-points", + "git_commit": "9dd6c657bc443c45c19e81165ff99286e237cfe3", + "commit_url": "https://github.com/cyber-dojo/custom-start-points/commit/9dd6c657bc443c45c19e81165ff99286e237cfe3", "git_commit_info": { - "sha1": "30dffd09c3f896a322c65029247abcea3019c43a", - "message": "Remove defaulted aws-rolename from snyk-scanning job (#373)", + "sha1": "9dd6c657bc443c45c19e81165ff99286e237cfe3", + "message": "Merge pull request #110 from cyber-dojo/remove-defaulted-aws-rolename\n\nRemove defaulted aws-rolename from snyk-scanning job", "author": "Jon Jagger ", "branch": "main", - "timestamp": 1776922121.0, - "url": "https://github.com/cyber-dojo/differ/commit/30dffd09c3f896a322c65029247abcea3019c43a" + "timestamp": 1776921009.0, + "url": "https://github.com/cyber-dojo/custom-start-points/commit/9dd6c657bc443c45c19e81165ff99286e237cfe3" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/differ-ci/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=046919b1-42dd-47f8-8569-912d0259", - "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/differ-ci", + "html_url": "https://app.kosli.com/cyber-dojo/flows/custom-start-points-ci/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=f1d404d2-81f9-4f7a-9a01-9742e3e2", + "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/custom-start-points-ci", "deployment_diff": { - "diff_url": "https://github.com/cyber-dojo/differ/compare/c9bbaa1eceb4b8bdffa065ea7034de23d3364919...30dffd09c3f896a322c65029247abcea3019c43a", - "previous_git_commit": "c9bbaa1eceb4b8bdffa065ea7034de23d3364919", - "previous_fingerprint": "480f4443a28b5057b956b1bcce13475b41bd2c1343563f18337ac0e7bf6e65ea", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:c9bbaa1@sha256:480f4443a28b5057b956b1bcce13475b41bd2c1343563f18337ac0e7bf6e65ea", + "diff_url": "https://github.com/cyber-dojo/custom-start-points/compare/8adb92a471e3f5caf65481155d45121a865b67a7...9dd6c657bc443c45c19e81165ff99286e237cfe3", + "previous_git_commit": "8adb92a471e3f5caf65481155d45121a865b67a7", + "previous_fingerprint": "db4ebea9fe973c7f195668be3706cd6049c07ed693de1b6e7a2a090f00498497", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:8adb92a@sha256:db4ebea9fe973c7f195668be3706cd6049c07ed693de1b6e7a2a090f00498497", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, - "previous_git_commit_url": "https://github.com/cyber-dojo/differ/commit/c9bbaa1eceb4b8bdffa065ea7034de23d3364919", - "previous_trail_name": "c9bbaa1eceb4b8bdffa065ea7034de23d3364919", - "previous_template_reference_name": "differ" + "previous_git_commit_url": "https://github.com/cyber-dojo/custom-start-points/commit/8adb92a471e3f5caf65481155d45121a865b67a7", + "previous_trail_name": "8adb92a471e3f5caf65481155d45121a865b67a7", + "previous_template_reference_name": "custom-start-points" }, - "commit_lead_time": 1092.0, + "commit_lead_time": 2530.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "production-promotion", "trail_name": "promote-all-11", - "template_reference_name": "differ", + "template_reference_name": "custom-start-points", "git_commit": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", "commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", "git_commit_info": { @@ -4000,27 +4000,27 @@ kosli get snapshot aws-prod --output=json "timestamp": 1776099255.0, "url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=a5169b25-0d5c-491c-991e-2c1d389b", + "html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=604eb5a4-324d-4140-a976-19265352", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/production-promotion", "deployment_diff": { "diff_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/compare/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa...87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", "previous_git_commit": "87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", - "previous_fingerprint": "480f4443a28b5057b956b1bcce13475b41bd2c1343563f18337ac0e7bf6e65ea", - "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:c9bbaa1@sha256:480f4443a28b5057b956b1bcce13475b41bd2c1343563f18337ac0e7bf6e65ea", + "previous_fingerprint": "db4ebea9fe973c7f195668be3706cd6049c07ed693de1b6e7a2a090f00498497", + "previous_artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:8adb92a@sha256:db4ebea9fe973c7f195668be3706cd6049c07ed693de1b6e7a2a090f00498497", "previous_artifact_compliance_state": "COMPLIANT", "previous_running": false, "previous_git_commit_url": "https://github.com/cyber-dojo/aws-prod-co-promotion/commit/87f1f819ee6eaaf1f811259b0778f5e0cff7a0fa", "previous_trail_name": "promote-all-10", - "previous_template_reference_name": "differ" + "previous_template_reference_name": "custom-start-points" }, - "commit_lead_time": 823958.0, + "commit_lead_time": 824284.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "snyk-vulns-aws-prod", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", - "template_reference_name": "differ", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "template_reference_name": "custom-start-points", "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", "git_commit_info": { @@ -4031,17 +4031,17 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=4eefbc15-7ea4-4d60-87d8-3a6098cb", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=c6ec6ca6-9900-445e-8986-76bc3e3d", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-prod", "deployment_diff": null, - "commit_lead_time": -691722.0, + "commit_lead_time": -691396.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "snyk-vulns-aws-beta", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", - "template_reference_name": "differ", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "template_reference_name": "custom-start-points", "git_commit": "117e18e0cb1eab30b9747ece58327eabfc595b90", "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90", "git_commit_info": { @@ -4052,17 +4052,17 @@ kosli get snapshot aws-prod --output=json "timestamp": 1777614935.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/117e18e0cb1eab30b9747ece58327eabfc595b90" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=f295a00f-04cf-4c92-96d2-44181c6a", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=fe2b6149-935b-4098-aafe-1afabea3", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-vulns-aws-beta", "deployment_diff": null, - "commit_lead_time": -691722.0, + "commit_lead_time": -691396.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", - "template_reference_name": "differ", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "template_reference_name": "custom-start-points", "git_commit": "e50b0406a64efc36fb236afd464e75b31877f623", "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623", "git_commit_info": { @@ -4073,58 +4073,58 @@ kosli get snapshot aws-prod --output=json "timestamp": 1778153406.0, "url": "https://github.com/cyber-dojo/snyk-scanning/commit/e50b0406a64efc36fb236afd464e75b31877f623" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=274a4692-c2f3-48eb-b9d9-6cbbedad", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=95af50be-66db-486f-8278-24a0ead0", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact-archived-at-1778154285", "deployment_diff": null, - "commit_lead_time": -1230193.0, + "commit_lead_time": -1229867.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "snyk-aws-beta-per-artifact", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", - "template_reference_name": "differ", - "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "template_reference_name": "custom-start-points", + "git_commit": "35479d51cd93407e3b25338a64f5539514c8663c", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c", "git_commit_info": { - "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "35479d51cd93407e3b25338a64f5539514c8663c", + "message": "Restructure rego policy so violations mirror compliance cases\n\nThe three violation rules did not map cleanly onto the two compliance\ncases. Replaced ignore_expiry_within_limit with ignore_too_far_ahead\n(names the failure rather than the success), added inactive_ignore_msg\nto compute the right diagnostic for each ignore sub-case, and reduced\nviolations from three rules to two -- one per compliance case, each\nusing not of the corresponding positive helper.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1778157272.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + "timestamp": 1778225680.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=833275ac-5fdb-4889-8661-f123e80d", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=3a15aa9c-85ae-419b-8937-7c58baf0", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact", "deployment_diff": null, - "commit_lead_time": -1234059.0, + "commit_lead_time": -1302141.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, { "flow_name": "snyk-aws-prod-per-artifact", - "trail_name": "differ-becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", - "template_reference_name": "differ", - "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "trail_name": "custom-start-points-cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "template_reference_name": "custom-start-points", + "git_commit": "35479d51cd93407e3b25338a64f5539514c8663c", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c", "git_commit_info": { - "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "35479d51cd93407e3b25338a64f5539514c8663c", + "message": "Restructure rego policy so violations mirror compliance cases\n\nThe three violation rules did not map cleanly onto the two compliance\ncases. Replaced ignore_expiry_within_limit with ignore_too_far_ahead\n(names the failure rather than the success), added inactive_ignore_msg\nto compute the right diagnostic for each ignore sub-case, and reduced\nviolations from three rules to two -- one per compliance case, each\nusing not of the corresponding positive helper.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1778157272.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + "timestamp": 1778225680.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=4d14c904-5640-40e7-adda-e90901f9", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=cdb26a5a-4ba0-446b-9418-dff81ca7", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", "deployment_diff": null, - "commit_lead_time": -1234059.0, + "commit_lead_time": -1302141.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] } ], "ecs_context": { - "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/ee14a7db1433415dbcbf9b2a5a983c4d", + "task_arn": "arn:aws:ecs:eu-central-1:274425519734:task/app/f009873b96764616a63037619de83dd3", "cluster_name": null, "service_name": null } @@ -4741,20 +4741,20 @@ kosli get snapshot aws-prod --output=json "flow_name": "snyk-aws-prod-per-artifact", "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", "template_reference_name": "exercises-start-points", - "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "git_commit": "35479d51cd93407e3b25338a64f5539514c8663c", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c", "git_commit_info": { - "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "35479d51cd93407e3b25338a64f5539514c8663c", + "message": "Restructure rego policy so violations mirror compliance cases\n\nThe three violation rules did not map cleanly onto the two compliance\ncases. Replaced ignore_expiry_within_limit with ignore_too_far_ahead\n(names the failure rather than the success), added inactive_ignore_msg\nto compute the right diagnostic for each ignore sub-case, and reduced\nviolations from three rules to two -- one per compliance case, each\nusing not of the corresponding positive helper.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1778157272.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + "timestamp": 1778225680.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac?artifact_id=930594d6-ca49-4cb3-8b50-f9253193", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac?artifact_id=c75b0f41-dcd4-40b2-ab4d-feb6b0bb", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", "deployment_diff": null, - "commit_lead_time": -1234064.0, + "commit_lead_time": -1302472.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, @@ -4762,20 +4762,20 @@ kosli get snapshot aws-prod --output=json "flow_name": "snyk-aws-beta-per-artifact", "trail_name": "exercises-start-points-691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", "template_reference_name": "exercises-start-points", - "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "git_commit": "35479d51cd93407e3b25338a64f5539514c8663c", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c", "git_commit_info": { - "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "35479d51cd93407e3b25338a64f5539514c8663c", + "message": "Restructure rego policy so violations mirror compliance cases\n\nThe three violation rules did not map cleanly onto the two compliance\ncases. Replaced ignore_expiry_within_limit with ignore_too_far_ahead\n(names the failure rather than the success), added inactive_ignore_msg\nto compute the right diagnostic for each ignore sub-case, and reduced\nviolations from three rules to two -- one per compliance case, each\nusing not of the corresponding positive helper.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1778157272.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + "timestamp": 1778225680.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac?artifact_id=ad9c861a-04d0-488d-9870-aab003cd", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac?artifact_id=df025007-9cb7-42cf-8248-911f93ed", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact", "deployment_diff": null, - "commit_lead_time": -1234064.0, + "commit_lead_time": -1302472.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] } @@ -5398,20 +5398,20 @@ kosli get snapshot aws-prod --output=json "flow_name": "snyk-aws-prod-per-artifact", "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", "template_reference_name": "nginx", - "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "git_commit": "35479d51cd93407e3b25338a64f5539514c8663c", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c", "git_commit_info": { - "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "35479d51cd93407e3b25338a64f5539514c8663c", + "message": "Restructure rego policy so violations mirror compliance cases\n\nThe three violation rules did not map cleanly onto the two compliance\ncases. Replaced ignore_expiry_within_limit with ignore_too_far_ahead\n(names the failure rather than the success), added inactive_ignore_msg\nto compute the right diagnostic for each ignore sub-case, and reduced\nviolations from three rules to two -- one per compliance case, each\nusing not of the corresponding positive helper.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1778157272.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + "timestamp": 1778225680.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d?artifact_id=5e29b90a-faf4-4358-a246-5a708b9e", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d?artifact_id=2905df9e-f7ed-4ed8-8535-a416d2f8", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", "deployment_diff": null, - "commit_lead_time": -1234072.0, + "commit_lead_time": -1302480.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] }, @@ -5419,20 +5419,20 @@ kosli get snapshot aws-prod --output=json "flow_name": "snyk-aws-beta-per-artifact", "trail_name": "nginx-69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", "template_reference_name": "nginx", - "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "git_commit": "35479d51cd93407e3b25338a64f5539514c8663c", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c", "git_commit_info": { - "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "35479d51cd93407e3b25338a64f5539514c8663c", + "message": "Restructure rego policy so violations mirror compliance cases\n\nThe three violation rules did not map cleanly onto the two compliance\ncases. Replaced ignore_expiry_within_limit with ignore_too_far_ahead\n(names the failure rather than the success), added inactive_ignore_msg\nto compute the right diagnostic for each ignore sub-case, and reduced\nviolations from three rules to two -- one per compliance case, each\nusing not of the corresponding positive helper.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1778157272.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + "timestamp": 1778225680.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d?artifact_id=9a4d2421-7e41-4e2f-b329-c936ccb1", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact/artifacts/69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d?artifact_id=17f068f0-bcd5-402f-bf8e-219bb989", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-beta-per-artifact", "deployment_diff": null, - "commit_lead_time": -1234072.0, + "commit_lead_time": -1302480.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] } @@ -6007,20 +6007,20 @@ kosli get snapshot aws-prod --output=json "flow_name": "snyk-aws-prod-per-artifact", "trail_name": "creator-ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", "template_reference_name": "creator", - "git_commit": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2", + "git_commit": "35479d51cd93407e3b25338a64f5539514c8663c", + "commit_url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c", "git_commit_info": { - "sha1": "2c586e9ede3ce361642ddc9414312833c3fbf5e2", - "message": "Add description to the per-vuln flow\n\nThe per-artifact flows already had descriptions; the per-vuln flow\nwas created without one.\n\nCo-Authored-By: Claude Sonnet 4.6 ", + "sha1": "35479d51cd93407e3b25338a64f5539514c8663c", + "message": "Restructure rego policy so violations mirror compliance cases\n\nThe three violation rules did not map cleanly onto the two compliance\ncases. Replaced ignore_expiry_within_limit with ignore_too_far_ahead\n(names the failure rather than the success), added inactive_ignore_msg\nto compute the right diagnostic for each ignore sub-case, and reduced\nviolations from three rules to two -- one per compliance case, each\nusing not of the corresponding positive helper.\n\nCo-Authored-By: Claude Sonnet 4.6 ", "author": "JonJagger ", "branch": "main", - "timestamp": 1778157272.0, - "url": "https://github.com/cyber-dojo/snyk-scanning/commit/2c586e9ede3ce361642ddc9414312833c3fbf5e2" + "timestamp": 1778225680.0, + "url": "https://github.com/cyber-dojo/snyk-scanning/commit/35479d51cd93407e3b25338a64f5539514c8663c" }, - "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f?artifact_id=e438c3a0-fe42-4cb7-90cd-8a632a2b", + "html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact/artifacts/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f?artifact_id=4f4827a2-f88d-4dc4-8e12-d192b312", "flow_html_url": "https://app.kosli.com/cyber-dojo/flows/snyk-aws-prod-per-artifact", "deployment_diff": null, - "commit_lead_time": -1900511.0, + "commit_lead_time": -1968919.0, "artifact_compliance_in_flow": true, "flow_reasons_for_non_compliance": [] } @@ -6112,7 +6112,7 @@ kosli get snapshot aws-prod --output=json ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). diff --git a/client_reference/kosli_get_trail.md b/client_reference/kosli_get_trail.md index 29cea33..2ce238d 100644 --- a/client_reference/kosli_get_trail.md +++ b/client_reference/kosli_get_trail.md @@ -28,7 +28,7 @@ Get the metadata of a specific trail. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_join_environment.md b/client_reference/kosli_join_environment.md index a04cb7c..4034478 100644 --- a/client_reference/kosli_join_environment.md +++ b/client_reference/kosli_join_environment.md @@ -29,21 +29,21 @@ Join a physical environment to a logical environment. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli join environment - --physical prod-k8 - --logical prod +kosli join environment + --physical prod-k8 + --logical prod ``` diff --git a/client_reference/kosli_list_approvals.md b/client_reference/kosli_list_approvals.md index 16f395d..be88c45 100644 --- a/client_reference/kosli_list_approvals.md +++ b/client_reference/kosli_list_approvals.md @@ -13,7 +13,7 @@ kosli list approvals [flags] List approvals in a flow. The results are paginated and ordered from latest to oldest. -By default, the page limit is 15 approvals per page. +By default, the page limit is 15 approvals per page. ## Flags @@ -33,33 +33,33 @@ By default, the page limit is 15 approvals per page. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli list approvals +kosli list approvals ``` ```shell -kosli list approvals - --page-limit 30 +kosli list approvals + --page-limit 30 ``` ```shell -kosli list approvals - --page-limit 30 +kosli list approvals + --page-limit 30 --output json ``` diff --git a/client_reference/kosli_list_artifacts.md b/client_reference/kosli_list_artifacts.md index 0c9569d..edbb874 100644 --- a/client_reference/kosli_list_artifacts.md +++ b/client_reference/kosli_list_artifacts.md @@ -33,40 +33,40 @@ By default, the page limit is 15 artifacts per page. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli list artifacts +kosli list artifacts ``` ```shell -kosli list artifacts - --repo yourRepoName +kosli list artifacts + --repo yourRepoName ``` ```shell -kosli list artifacts - --page-limit 30 +kosli list artifacts + --page-limit 30 ``` ```shell -kosli list artifacts - --page-limit 30 +kosli list artifacts + --page-limit 30 --output json ``` diff --git a/client_reference/kosli_list_attestation-types.md b/client_reference/kosli_list_attestation-types.md index 311708e..0760824 100644 --- a/client_reference/kosli_list_attestation-types.md +++ b/client_reference/kosli_list_attestation-types.md @@ -27,7 +27,7 @@ List all Kosli attestation types for an org. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_list_environments.md b/client_reference/kosli_list_environments.md index c31c898..ac5c555 100644 --- a/client_reference/kosli_list_environments.md +++ b/client_reference/kosli_list_environments.md @@ -27,7 +27,7 @@ List environments for an org. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -52,8 +52,8 @@ kosli list environments --output=json "name": "aws-beta", "type": "ECS", "description": "The ECS cluster for staging cyber-dojo", - "last_modified_at": 1778219723.950717, - "last_reported_at": 1778219723.950717, + "last_modified_at": 1778242883.8873327, + "last_reported_at": 1778242883.8873327, "state": true, "include_scaling": false, "tags": { @@ -70,8 +70,8 @@ kosli list environments --output=json "name": "aws-prod", "type": "ECS", "description": "The ECS cluster for production cyber-dojo", - "last_modified_at": 1778219758.5460255, - "last_reported_at": 1778219758.5460255, + "last_modified_at": 1778242858.628268, + "last_reported_at": 1778242858.628268, "state": true, "include_scaling": false, "tags": { diff --git a/client_reference/kosli_list_flows.md b/client_reference/kosli_list_flows.md index 947ebf2..637a6d8 100644 --- a/client_reference/kosli_list_flows.md +++ b/client_reference/kosli_list_flows.md @@ -27,7 +27,7 @@ List flows for an org. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_list_policies.md b/client_reference/kosli_list_policies.md index 1d3453a..613fe31 100644 --- a/client_reference/kosli_list_policies.md +++ b/client_reference/kosli_list_policies.md @@ -27,7 +27,7 @@ List environment policies for an org. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_list_snapshots.md b/client_reference/kosli_list_snapshots.md index 7267518..0321bc6 100644 --- a/client_reference/kosli_list_snapshots.md +++ b/client_reference/kosli_list_snapshots.md @@ -15,12 +15,12 @@ List environment snapshots. The results are paginated and ordered from latest to oldest. By default, the page limit is 15 snapshots per page. -You can optionally specify an INTERVAL between two snapshot expressions with [expression]..[expression]. +You can optionally specify an INTERVAL between two snapshot expressions with [expression]..[expression]. Expressions can be: -* ~N N'th behind the latest snapshot -* N snapshot number N -* NOW the latest snapshot +* ~N N'th behind the latest snapshot +* N snapshot number N +* NOW the latest snapshot Either expression can be omitted to default to NOW. @@ -43,7 +43,7 @@ Either expression can be omitted to default to NOW. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -64,12 +64,40 @@ kosli list snapshots aws-prod --output=json ```json [ + { + "index": 4386, + "from": 1778225998.5296352, + "to": 0.0, + "compliant": true, + "duration": 16900.322019815445 + }, + { + "index": 4385, + "from": 1778225938.458091, + "to": 1778225998.5296352, + "compliant": true, + "duration": 60.07154417037964 + }, + { + "index": 4384, + "from": 1778223958.5125732, + "to": 1778225938.458091, + "compliant": true, + "duration": 1979.9455177783966 + }, + { + "index": 4383, + "from": 1778223898.548935, + "to": 1778223958.5125732, + "compliant": true, + "duration": 59.96363830566406 + }, { "index": 4382, "from": 1778213818.5191746, - "to": 0.0, + "to": 1778223898.548935, "compliant": true, - "duration": 5955.0178434848785 + "duration": 10080.029760360718 }, { "index": 4381, @@ -140,34 +168,6 @@ kosli list snapshots aws-prod --output=json "to": 1778157058.6630018, "compliant": true, "duration": 780.2370808124542 - }, - { - "index": 4371, - "from": 1778156218.5558252, - "to": 1778156278.425921, - "compliant": true, - "duration": 59.87009572982788 - }, - { - "index": 4370, - "from": 1778155318.5846732, - "to": 1778156218.5558252, - "compliant": true, - "duration": 899.9711520671844 - }, - { - "index": 4369, - "from": 1778154298.3885734, - "to": 1778155318.5846732, - "compliant": true, - "duration": 1020.1960997581482 - }, - { - "index": 4368, - "from": 1778153938.502302, - "to": 1778154298.3885734, - "compliant": true, - "duration": 359.8862714767456 } ] ``` @@ -177,26 +177,26 @@ kosli list snapshots aws-prod --output=json ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli list snapshots yourEnvironmentName +kosli list snapshots yourEnvironmentName ``` ```shell -kosli list snapshots yourEnvironmentName - --page-limit 30 +kosli list snapshots yourEnvironmentName + --page-limit 30 ``` ```shell -kosli list snapshots yourEnvironmentName - --page-limit 30 +kosli list snapshots yourEnvironmentName + --page-limit 30 --output json ``` diff --git a/client_reference/kosli_list_trails.md b/client_reference/kosli_list_trails.md index d12fbc2..3975158 100644 --- a/client_reference/kosli_list_trails.md +++ b/client_reference/kosli_list_trails.md @@ -32,53 +32,53 @@ List Trails of an org.The list can be filtered by flow, flow tag and artifact fi | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli list trails +kosli list trails ``` ```shell -kosli list trails - --page-limit 30 +kosli list trails + --page-limit 30 ``` ```shell -kosli list trails - --page-limit 30 - --page 2 +kosli list trails + --page-limit 30 + --page 2 ``` ```shell -kosli list trails +kosli list trails --output json ``` ```shell -kosli list trails - --fingerprint yourArtifactFingerprint +kosli list trails + --fingerprint yourArtifactFingerprint --output json # get a paginated list of trails across all flows tagged with the provided key-value pair: -kosli list trails - --flow-tag team=backend +kosli list trails + --flow-tag team=backend ``` diff --git a/client_reference/kosli_log_environment.md b/client_reference/kosli_log_environment.md index 35578b2..680d23c 100644 --- a/client_reference/kosli_log_environment.md +++ b/client_reference/kosli_log_environment.md @@ -15,12 +15,12 @@ List environment events. The results are paginated and ordered from latest to oldest. By default, the page limit is 15 events per page. -You can optionally specify an INTERVAL between two snapshot expressions with [expression]..[expression]. +You can optionally specify an INTERVAL between two snapshot expressions with [expression]..[expression]. Expressions can be: -* ~N N'th behind the latest snapshot -* N snapshot number N -* NOW the latest snapshot +* ~N N'th behind the latest snapshot +* N snapshot number N +* NOW the latest snapshot Either expression can be omitted to default to NOW. @@ -44,7 +44,7 @@ Either expression can be omitted to default to NOW. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -67,16 +67,16 @@ kosli log environment aws-prod --output=json [ { "environment_name": "aws-prod", - "snapshot_index": 4382, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:8768460@sha256:2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", - "sha256": "2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", - "description": "3 instances changed", - "reported_at": 1778213818.5191746, - "pipeline": "runner-ci", + "snapshot_index": 4386, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:cfb0d52@sha256:a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "sha256": "a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "description": "1 instance changed", + "reported_at": 1778225998.5296352, + "pipeline": "saver-ci", "deployments": [], "flows": [ { - "flow_name": "runner-ci", + "flow_name": "saver-ci", "deployments": null }, { @@ -84,47 +84,63 @@ kosli log environment aws-prod --output=json "deployments": null }, { - "flow_name": "snyk-aws-beta-per-artifact", + "flow_name": "snyk-aws-prod-per-artifact", "deployments": null }, { - "flow_name": "snyk-aws-prod-per-artifact", + "flow_name": "snyk-aws-beta-per-artifact", "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, "type": "updated-provenance", - "code_diff": "https://github.com/cyber-dojo/runner/compare/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e...8768460dc1c91de5f6485a7d3e36870b683edfc3", + "code_diff": "https://github.com/cyber-dojo/saver/compare/92c0996cd9ae7642eb0769f928abe6cb6c391751...cfb0d52610ab73011f325c4bb5bf0b54fb51031c", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/runner-ci/fingerprint/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", - "html": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=4d69a029-0ed8-4ead-b1f5-f6e36c52" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/saver-ci/fingerprint/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "html": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed?artifact_id=680cd12d-e9b5-4a2a-8abf-1e75a370" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4382", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4382" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4386", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4386" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4381, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:8768460@sha256:2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", - "sha256": "2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", - "description": "3 instances changed", - "reported_at": 1778213758.4011989, - "pipeline": "runner-ci", + "snapshot_index": 4386, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:30dffd0@sha256:becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "sha256": "becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "description": "1 instance changed", + "reported_at": 1778225998.5296352, + "pipeline": "differ-ci", "deployments": [], "flows": [ { - "flow_name": "runner-ci", + "flow_name": "differ-ci", "deployments": null }, { "flow_name": "production-promotion", "deployments": null }, + { + "flow_name": "snyk-vulns-aws-prod", + "deployments": null + }, + { + "flow_name": "snyk-vulns-aws-beta", + "deployments": null + }, + { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "deployments": null + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "deployments": null + }, { "flow_name": "snyk-aws-beta-per-artifact", "deployments": null @@ -133,30 +149,30 @@ kosli log environment aws-prod --output=json "artifact_compliance": true, "snapshot_compliance": true, "type": "updated-provenance", - "code_diff": "https://github.com/cyber-dojo/runner/compare/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e...8768460dc1c91de5f6485a7d3e36870b683edfc3", + "code_diff": "https://github.com/cyber-dojo/differ/compare/c9bbaa1eceb4b8bdffa065ea7034de23d3364919...30dffd09c3f896a322c65029247abcea3019c43a", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/runner-ci/fingerprint/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", - "html": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=4d69a029-0ed8-4ead-b1f5-f6e36c52" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/differ-ci/fingerprint/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "html": "https://app.kosli.com/cyber-dojo/flows/differ-ci/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=046919b1-42dd-47f8-8569-912d0259" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4381", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4381" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4386", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4386" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4381, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:447231c@sha256:691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", - "sha256": "691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "snapshot_index": 4386, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:a6ece2b@sha256:3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "sha256": "3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", "description": "1 instance changed", - "reported_at": 1778213758.4011989, - "pipeline": "exercises-start-points-ci", + "reported_at": 1778225998.5296352, + "pipeline": "dashboard-ci", "deployments": [], "flows": [ { - "flow_name": "exercises-start-points-ci", + "flow_name": "dashboard-ci", "deployments": null }, { @@ -164,11 +180,11 @@ kosli log environment aws-prod --output=json "deployments": null }, { - "flow_name": "snyk-vulns-aws-beta", + "flow_name": "snyk-vulns-aws-prod", "deployments": null }, { - "flow_name": "snyk-vulns-aws-prod", + "flow_name": "snyk-vulns-aws-beta", "deployments": null }, { @@ -176,41 +192,41 @@ kosli log environment aws-prod --output=json "deployments": null }, { - "flow_name": "snyk-aws-prod-per-artifact", + "flow_name": "snyk-aws-beta-per-artifact", "deployments": null }, { - "flow_name": "snyk-aws-beta-per-artifact", + "flow_name": "snyk-aws-prod-per-artifact", "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, "type": "updated-provenance", - "code_diff": "https://github.com/cyber-dojo/exercises-start-points/compare/83ea563b423559eaf750dd680fc2329e59f60e3b...447231c2018bc0690735b4ee110ca46431162fd5", + "code_diff": "https://github.com/cyber-dojo/dashboard/compare/632127a7f162ad1ac02305a2940888264034364b...a6ece2b597888f7ab149759daadda08e3afab0c1", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/exercises-start-points-ci/fingerprint/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", - "html": "https://app.kosli.com/cyber-dojo/flows/exercises-start-points-ci/artifacts/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac?artifact_id=98831c77-04a8-4427-9cf8-03950550" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/dashboard-ci/fingerprint/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "html": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=1281066d-38ba-432c-92c2-f3d7003e" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4381", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4381" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4386", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4386" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4381, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:30dffd0@sha256:becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", - "sha256": "becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "snapshot_index": 4386, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:db53382@sha256:f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "sha256": "f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "description": "1 instance changed", - "reported_at": 1778213758.4011989, - "pipeline": "differ-ci", + "reported_at": 1778225998.5296352, + "pipeline": "languages-start-points-ci", "deployments": [], "flows": [ { - "flow_name": "differ-ci", + "flow_name": "languages-start-points-ci", "deployments": null }, { @@ -240,31 +256,31 @@ kosli log environment aws-prod --output=json ], "artifact_compliance": true, "snapshot_compliance": true, - "type": "changed", - "code_diff": "https://github.com/cyber-dojo/differ/compare/c9bbaa1eceb4b8bdffa065ea7034de23d3364919...30dffd09c3f896a322c65029247abcea3019c43a", + "type": "updated-provenance", + "code_diff": "https://github.com/cyber-dojo/languages-start-points/compare/1a191ad636b6d1d2215e3726ad307f48f58843b6...db53382650db8b7b3f216d0055009b0d77685677", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/differ-ci/fingerprint/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", - "html": "https://app.kosli.com/cyber-dojo/flows/differ-ci/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=046919b1-42dd-47f8-8569-912d0259" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/languages-start-points-ci/fingerprint/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "html": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=cc5da9c3-89bd-4ac1-a5ed-8885517d" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4381", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4381" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4386", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4386" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4381, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/nginx:b1ce55b@sha256:69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", - "sha256": "69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", - "description": "1 instance changed", - "reported_at": 1778213758.4011989, - "pipeline": "nginx-ci", + "snapshot_index": 4385, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:8768460@sha256:2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "sha256": "2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "description": "3 instances changed", + "reported_at": 1778225938.458091, + "pipeline": "runner-ci", "deployments": [], "flows": [ { - "flow_name": "nginx-ci", + "flow_name": "runner-ci", "deployments": null }, { @@ -272,53 +288,41 @@ kosli log environment aws-prod --output=json "deployments": null }, { - "flow_name": "snyk-vulns-aws-prod", - "deployments": null - }, - { - "flow_name": "snyk-vulns-aws-beta", - "deployments": null - }, - { - "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "flow_name": "snyk-aws-beta-per-artifact", "deployments": null }, { "flow_name": "snyk-aws-prod-per-artifact", "deployments": null - }, - { - "flow_name": "snyk-aws-beta-per-artifact", - "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, "type": "updated-provenance", - "code_diff": "https://github.com/cyber-dojo/nginx/compare/c6c81a0f8b1458a62eee956bb16a8b32a37fd0fd...b1ce55beb190397c80d3ba0536f6b97bb5f468f6", + "code_diff": "https://github.com/cyber-dojo/runner/compare/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e...8768460dc1c91de5f6485a7d3e36870b683edfc3", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/nginx-ci/fingerprint/69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", - "html": "https://app.kosli.com/cyber-dojo/flows/nginx-ci/artifacts/69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d?artifact_id=8a73edbf-8c34-4371-a0a1-001dffd2" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/runner-ci/fingerprint/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", + "html": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=4d69a029-0ed8-4ead-b1f5-f6e36c52" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4381", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4381" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4385", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4385" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4381, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:a6ece2b@sha256:3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "sha256": "3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "snapshot_index": 4385, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:db53382@sha256:f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "sha256": "f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", "description": "1 instance changed", - "reported_at": 1778213758.4011989, - "pipeline": "dashboard-ci", + "reported_at": 1778225938.458091, + "pipeline": "languages-start-points-ci", "deployments": [], "flows": [ { - "flow_name": "dashboard-ci", + "flow_name": "languages-start-points-ci", "deployments": null }, { @@ -349,30 +353,30 @@ kosli log environment aws-prod --output=json "artifact_compliance": true, "snapshot_compliance": true, "type": "updated-provenance", - "code_diff": "https://github.com/cyber-dojo/dashboard/compare/632127a7f162ad1ac02305a2940888264034364b...a6ece2b597888f7ab149759daadda08e3afab0c1", + "code_diff": "https://github.com/cyber-dojo/languages-start-points/compare/1a191ad636b6d1d2215e3726ad307f48f58843b6...db53382650db8b7b3f216d0055009b0d77685677", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/dashboard-ci/fingerprint/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", - "html": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=1281066d-38ba-432c-92c2-f3d7003e" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/languages-start-points-ci/fingerprint/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "html": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=cc5da9c3-89bd-4ac1-a5ed-8885517d" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4381", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4381" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4385", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4385" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4381, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:cfb0d52@sha256:a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", - "sha256": "a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "snapshot_index": 4385, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:65fd2bf@sha256:ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", + "sha256": "ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", "description": "1 instance changed", - "reported_at": 1778213758.4011989, - "pipeline": "saver-ci", + "reported_at": 1778225938.458091, + "pipeline": "creator-ci", "deployments": [], "flows": [ { - "flow_name": "saver-ci", + "flow_name": "creator-ci", "deployments": null }, { @@ -380,7 +384,15 @@ kosli log environment aws-prod --output=json "deployments": null }, { - "flow_name": "snyk-aws-beta-per-artifact", + "flow_name": "snyk-vulns-archived-at-1776759327", + "deployments": null + }, + { + "flow_name": "snyk-vulns-aws-beta", + "deployments": null + }, + { + "flow_name": "snyk-vulns-aws-prod", "deployments": null }, { @@ -391,130 +403,130 @@ kosli log environment aws-prod --output=json "artifact_compliance": true, "snapshot_compliance": true, "type": "updated-provenance", - "code_diff": "https://github.com/cyber-dojo/saver/compare/92c0996cd9ae7642eb0769f928abe6cb6c391751...cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "code_diff": "https://gitlab.com/cyber-dojo/creator/-/compare/f89742ee5f0477a7c729bfdeadc84dcbd70492b2...65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/saver-ci/fingerprint/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", - "html": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed?artifact_id=680cd12d-e9b5-4a2a-8abf-1e75a370" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/creator-ci/fingerprint/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", + "html": "https://app.kosli.com/cyber-dojo/flows/creator-ci/artifacts/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f?artifact_id=c5d209a3-9139-4f5b-a553-c6351091" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4381", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4381" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4385", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4385" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4381, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:1999d13@sha256:541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", - "sha256": "541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", - "description": "3 instances changed", - "reported_at": 1778213758.4011989, - "pipeline": "web-ci", + "snapshot_index": 4385, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/nginx:b1ce55b@sha256:69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "sha256": "69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "description": "1 instance changed", + "reported_at": 1778225938.458091, + "pipeline": "nginx-ci", "deployments": [], "flows": [ { - "flow_name": "web-ci", + "flow_name": "nginx-ci", "deployments": null }, { "flow_name": "production-promotion", "deployments": null }, + { + "flow_name": "snyk-vulns-aws-prod", + "deployments": null + }, { "flow_name": "snyk-vulns-aws-beta", "deployments": null }, { - "flow_name": "snyk-vulns-aws-prod", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", "deployments": null }, { "flow_name": "snyk-aws-prod-per-artifact", "deployments": null + }, + { + "flow_name": "snyk-aws-beta-per-artifact", + "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, - "type": "changed", - "code_diff": "https://github.com/cyber-dojo/web/compare/23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98...1999d1303424879336b04fa3310256554aa6cfa6", + "type": "updated-provenance", + "code_diff": "https://github.com/cyber-dojo/nginx/compare/c6c81a0f8b1458a62eee956bb16a8b32a37fd0fd...b1ce55beb190397c80d3ba0536f6b97bb5f468f6", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/web-ci/fingerprint/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", - "html": "https://app.kosli.com/cyber-dojo/flows/web-ci/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=359b4539-989d-48f5-88eb-8a553baf" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/nginx-ci/fingerprint/69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d", + "html": "https://app.kosli.com/cyber-dojo/flows/nginx-ci/artifacts/69ac936feb8487b10fe54005660e407fbc2d7cb058c98485b9764db0f12b041d?artifact_id=8a73edbf-8c34-4371-a0a1-001dffd2" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4381", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4381" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4385", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4385" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4381, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:9dd6c65@sha256:cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", - "sha256": "cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", - "description": "1 instance changed", - "reported_at": 1778213758.4011989, - "pipeline": "custom-start-points-ci", + "snapshot_index": 4385, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/web:1999d13@sha256:541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "sha256": "541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "description": "3 instances changed", + "reported_at": 1778225938.458091, + "pipeline": "web-ci", "deployments": [], "flows": [ { - "flow_name": "custom-start-points-ci", + "flow_name": "web-ci", "deployments": null }, { "flow_name": "production-promotion", "deployments": null }, - { - "flow_name": "snyk-vulns-aws-prod", - "deployments": null - }, { "flow_name": "snyk-vulns-aws-beta", "deployments": null }, { - "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "flow_name": "snyk-vulns-aws-prod", "deployments": null }, { "flow_name": "snyk-aws-prod-per-artifact", "deployments": null - }, - { - "flow_name": "snyk-aws-beta-per-artifact", - "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, "type": "updated-provenance", - "code_diff": "https://github.com/cyber-dojo/custom-start-points/compare/8adb92a471e3f5caf65481155d45121a865b67a7...9dd6c657bc443c45c19e81165ff99286e237cfe3", + "code_diff": "https://github.com/cyber-dojo/web/compare/23d6f24c36ffdf1210e3556a1f4d1d6b35cfdf98...1999d1303424879336b04fa3310256554aa6cfa6", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/custom-start-points-ci/fingerprint/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", - "html": "https://app.kosli.com/cyber-dojo/flows/custom-start-points-ci/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=f1d404d2-81f9-4f7a-9a01-9742e3e2" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/web-ci/fingerprint/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180", + "html": "https://app.kosli.com/cyber-dojo/flows/web-ci/artifacts/541b7d4c1b129eb894ce1dd1713f72ae268e07cf49d178aeda684bbef2bfc180?artifact_id=359b4539-989d-48f5-88eb-8a553baf" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4381", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4381" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4385", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4385" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4381, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/languages-start-points:db53382@sha256:f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", - "sha256": "f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", + "snapshot_index": 4385, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:447231c@sha256:691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "sha256": "691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", "description": "1 instance changed", - "reported_at": 1778213758.4011989, - "pipeline": "languages-start-points-ci", + "reported_at": 1778225938.458091, + "pipeline": "exercises-start-points-ci", "deployments": [], "flows": [ { - "flow_name": "languages-start-points-ci", + "flow_name": "exercises-start-points-ci", "deployments": null }, { @@ -522,11 +534,11 @@ kosli log environment aws-prod --output=json "deployments": null }, { - "flow_name": "snyk-vulns-aws-prod", + "flow_name": "snyk-vulns-aws-beta", "deployments": null }, { - "flow_name": "snyk-vulns-aws-beta", + "flow_name": "snyk-vulns-aws-prod", "deployments": null }, { @@ -545,30 +557,30 @@ kosli log environment aws-prod --output=json "artifact_compliance": true, "snapshot_compliance": true, "type": "updated-provenance", - "code_diff": "https://github.com/cyber-dojo/languages-start-points/compare/1a191ad636b6d1d2215e3726ad307f48f58843b6...db53382650db8b7b3f216d0055009b0d77685677", + "code_diff": "https://github.com/cyber-dojo/exercises-start-points/compare/83ea563b423559eaf750dd680fc2329e59f60e3b...447231c2018bc0690735b4ee110ca46431162fd5", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/languages-start-points-ci/fingerprint/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98", - "html": "https://app.kosli.com/cyber-dojo/flows/languages-start-points-ci/artifacts/f66cfbbc69bcb75bd3d2df7227d168335a8adbc27a0b59695db259ddde320a98?artifact_id=cc5da9c3-89bd-4ac1-a5ed-8885517d" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/exercises-start-points-ci/fingerprint/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "html": "https://app.kosli.com/cyber-dojo/flows/exercises-start-points-ci/artifacts/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac?artifact_id=98831c77-04a8-4427-9cf8-03950550" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4381", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4381" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4385", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4385" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4381, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/creator:65fd2bf@sha256:ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", - "sha256": "ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", + "snapshot_index": 4385, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/differ:30dffd0@sha256:becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "sha256": "becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", "description": "1 instance changed", - "reported_at": 1778213758.4011989, - "pipeline": "creator-ci", + "reported_at": 1778225938.458091, + "pipeline": "differ-ci", "deployments": [], "flows": [ { - "flow_name": "creator-ci", + "flow_name": "differ-ci", "deployments": null }, { @@ -576,7 +588,7 @@ kosli log environment aws-prod --output=json "deployments": null }, { - "flow_name": "snyk-vulns-archived-at-1776759327", + "flow_name": "snyk-vulns-aws-prod", "deployments": null }, { @@ -584,7 +596,11 @@ kosli log environment aws-prod --output=json "deployments": null }, { - "flow_name": "snyk-vulns-aws-prod", + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "deployments": null + }, + { + "flow_name": "snyk-aws-beta-per-artifact", "deployments": null }, { @@ -594,31 +610,31 @@ kosli log environment aws-prod --output=json ], "artifact_compliance": true, "snapshot_compliance": true, - "type": "changed", - "code_diff": "https://gitlab.com/cyber-dojo/creator/-/compare/f89742ee5f0477a7c729bfdeadc84dcbd70492b2...65fd2bfa2478534ea4bc5ccf30f6bfc6aab7550c", + "type": "updated-provenance", + "code_diff": "https://github.com/cyber-dojo/differ/compare/c9bbaa1eceb4b8bdffa065ea7034de23d3364919...30dffd09c3f896a322c65029247abcea3019c43a", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/creator-ci/fingerprint/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f", - "html": "https://app.kosli.com/cyber-dojo/flows/creator-ci/artifacts/ce59db031695ca55deaaacefda233875fe5c32783c69816fcea2bb3642636e4f?artifact_id=c5d209a3-9139-4f5b-a553-c6351091" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/differ-ci/fingerprint/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355", + "html": "https://app.kosli.com/cyber-dojo/flows/differ-ci/artifacts/becf55d8a2ed6e43bdd4d26c82dc0e3a69204b92738858ad9cd25329fa513355?artifact_id=046919b1-42dd-47f8-8569-912d0259" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4381", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4381" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4385", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4385" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4380, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:a2ffba5@sha256:b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", - "sha256": "b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", - "description": "3 instances stopped running (from 3 to 0)", - "reported_at": 1778178538.4365702, - "pipeline": "runner-ci", + "snapshot_index": 4385, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/custom-start-points:9dd6c65@sha256:cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "sha256": "cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "description": "1 instance changed", + "reported_at": 1778225938.458091, + "pipeline": "custom-start-points-ci", "deployments": [], "flows": [ { - "flow_name": "runner-ci", + "flow_name": "custom-start-points-ci", "deployments": null }, { @@ -638,75 +654,83 @@ kosli log environment aws-prod --output=json "deployments": null }, { - "flow_name": "snyk-aws-prod-per-artifact", + "flow_name": "snyk-aws-beta-per-artifact", "deployments": null }, { - "flow_name": "snyk-aws-beta-per-artifact", + "flow_name": "snyk-aws-prod-per-artifact", "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, - "type": "exited", - "code_diff": "https://github.com/cyber-dojo/runner/compare/bcf912346ae0a104698da4560e82d5eb277fc0e9...a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e", + "type": "updated-provenance", + "code_diff": "https://github.com/cyber-dojo/custom-start-points/compare/8adb92a471e3f5caf65481155d45121a865b67a7...9dd6c657bc443c45c19e81165ff99286e237cfe3", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/runner-ci/fingerprint/b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039", - "html": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/b6df6b1da5f73049085d9e04549f9674f0e54e9f0273467db9d7b46e3e9ad039?artifact_id=fe3ed5e5-0ed1-4cb8-8d5a-57d636d7" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/custom-start-points-ci/fingerprint/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1", + "html": "https://app.kosli.com/cyber-dojo/flows/custom-start-points-ci/artifacts/cdf80bb23fc22020b7a7eb8278540fc85345f1130eea182c5bf4ad5d8a20a7d1?artifact_id=f1d404d2-81f9-4f7a-9a01-9742e3e2" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4380", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4380" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4385", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4385" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4380, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/runner:8768460@sha256:2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", - "sha256": "2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", - "description": "3 instances started running (from 0 to 3)", - "reported_at": 1778178538.4365702, - "pipeline": "runner-ci", + "snapshot_index": 4385, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:cfb0d52@sha256:a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "sha256": "a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "description": "1 instance changed", + "reported_at": 1778225938.458091, + "pipeline": "saver-ci", "deployments": [], "flows": [ { - "flow_name": "runner-ci", + "flow_name": "saver-ci", "deployments": null }, { "flow_name": "production-promotion", "deployments": null + }, + { + "flow_name": "snyk-aws-beta-per-artifact", + "deployments": null + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, - "type": "started-compliant", - "code_diff": "https://github.com/cyber-dojo/runner/compare/a2ffba5a5debbc8f4f199cf5a88e5899c7d6547e...8768460dc1c91de5f6485a7d3e36870b683edfc3", + "type": "updated-provenance", + "code_diff": "https://github.com/cyber-dojo/saver/compare/92c0996cd9ae7642eb0769f928abe6cb6c391751...cfb0d52610ab73011f325c4bb5bf0b54fb51031c", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/runner-ci/fingerprint/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3", - "html": "https://app.kosli.com/cyber-dojo/flows/runner-ci/artifacts/2509ca654e1f09c19c59813aea76d45e787f487c9c18b3216e0a6d407e6b05e3?artifact_id=4d69a029-0ed8-4ead-b1f5-f6e36c52" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/saver-ci/fingerprint/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", + "html": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed?artifact_id=680cd12d-e9b5-4a2a-8abf-1e75a370" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4380", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4380" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4385", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4385" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4379, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:92c0996@sha256:1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", - "sha256": "1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", - "description": "1 instance stopped running (from 1 to 0)", - "reported_at": 1778158918.5020123, - "pipeline": "saver-ci", + "snapshot_index": 4385, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/dashboard:a6ece2b@sha256:3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "sha256": "3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "description": "1 instance changed", + "reported_at": 1778225938.458091, + "pipeline": "dashboard-ci", "deployments": [], "flows": [ { - "flow_name": "saver-ci", + "flow_name": "dashboard-ci", "deployments": null }, { @@ -736,50 +760,70 @@ kosli log environment aws-prod --output=json ], "artifact_compliance": true, "snapshot_compliance": true, - "type": "exited", - "code_diff": "https://github.com/cyber-dojo/saver/compare/0b77a6402320cd10c30cf5bbf6486aa1a448443a...92c0996cd9ae7642eb0769f928abe6cb6c391751", + "type": "updated-provenance", + "code_diff": "https://github.com/cyber-dojo/dashboard/compare/632127a7f162ad1ac02305a2940888264034364b...a6ece2b597888f7ab149759daadda08e3afab0c1", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/saver-ci/fingerprint/1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805", - "html": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/1aec038070877c202ebcf960c202fa5dd35b511d36a3d5a9dda5f2dda2300805?artifact_id=3666aa1b-a19b-4ab5-a625-fa6afa9d" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/dashboard-ci/fingerprint/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e", + "html": "https://app.kosli.com/cyber-dojo/flows/dashboard-ci/artifacts/3f419f93e3cdd7a3a2b358fdee8ee925dc233b5b2fe0eff20d8bce17f7473c8e?artifact_id=1281066d-38ba-432c-92c2-f3d7003e" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4379", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4379" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4385", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4385" } } }, { "environment_name": "aws-prod", - "snapshot_index": 4378, - "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/saver:cfb0d52@sha256:a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", - "sha256": "a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", - "description": "1 instance started running (from 0 to 1)", - "reported_at": 1778158858.590836, - "pipeline": "saver-ci", + "snapshot_index": 4384, + "artifact_name": "244531986313.dkr.ecr.eu-central-1.amazonaws.com/exercises-start-points:447231c@sha256:691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "sha256": "691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "description": "1 instance changed", + "reported_at": 1778223958.5125732, + "pipeline": "exercises-start-points-ci", "deployments": [], "flows": [ { - "flow_name": "saver-ci", + "flow_name": "exercises-start-points-ci", "deployments": null }, { "flow_name": "production-promotion", "deployments": null + }, + { + "flow_name": "snyk-vulns-aws-beta", + "deployments": null + }, + { + "flow_name": "snyk-vulns-aws-prod", + "deployments": null + }, + { + "flow_name": "snyk-aws-beta-per-artifact-archived-at-1778154285", + "deployments": null + }, + { + "flow_name": "snyk-aws-prod-per-artifact", + "deployments": null + }, + { + "flow_name": "snyk-aws-beta-per-artifact", + "deployments": null } ], "artifact_compliance": true, "snapshot_compliance": true, - "type": "started-compliant", - "code_diff": "https://github.com/cyber-dojo/saver/compare/92c0996cd9ae7642eb0769f928abe6cb6c391751...cfb0d52610ab73011f325c4bb5bf0b54fb51031c", + "type": "updated-provenance", + "code_diff": "https://github.com/cyber-dojo/exercises-start-points/compare/83ea563b423559eaf750dd680fc2329e59f60e3b...447231c2018bc0690735b4ee110ca46431162fd5", "_links": { "artifact": { - "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/saver-ci/fingerprint/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed", - "html": "https://app.kosli.com/cyber-dojo/flows/saver-ci/artifacts/a91ad5b7e510c364402342b6eea631e1f1b1b2166f1dac2c3dd28d007f95c3ed?artifact_id=680cd12d-e9b5-4a2a-8abf-1e75a370" + "self": "https://app.kosli.com/api/v2/artifacts/cyber-dojo/exercises-start-points-ci/fingerprint/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac", + "html": "https://app.kosli.com/cyber-dojo/flows/exercises-start-points-ci/artifacts/691a6f0bcd1ce71af0a2175f1c4295e627f3e5ea93cb78264a2042d8ed2aa9ac?artifact_id=98831c77-04a8-4427-9cf8-03950550" }, "snapshot": { - "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4378", - "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4378" + "self": "https://app.kosli.com/api/v2/snapshots/cyber-dojo/aws-prod/4384", + "html": "https://app.kosli.com/cyber-dojo/environments/aws-prod/snapshots/4384" } } } @@ -791,42 +835,42 @@ kosli log environment aws-prod --output=json ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli log environment yourEnvironmentName +kosli log environment yourEnvironmentName ``` ```shell -kosli log environment yourEnvironmentName - --page-limit 30 +kosli log environment yourEnvironmentName + --page-limit 30 ``` ```shell -kosli log environment yourEnvironmentName - --page-limit 30 +kosli log environment yourEnvironmentName + --page-limit 30 --output json ``` ```shell -kosli log environment yourEnvironmentName - --repo yourOrg/yourRepo +kosli log environment yourEnvironmentName + --repo yourOrg/yourRepo ``` ```shell -kosli log environment yourEnvironmentName - --repo yourOrg/yourRepo1 - --repo yourOrg/yourRepo2 +kosli log environment yourEnvironmentName + --repo yourOrg/yourRepo1 + --repo yourOrg/yourRepo2 ``` diff --git a/client_reference/kosli_rename_environment.md b/client_reference/kosli_rename_environment.md index 5127f3b..f473d16 100644 --- a/client_reference/kosli_rename_environment.md +++ b/client_reference/kosli_rename_environment.md @@ -29,19 +29,19 @@ The environment will remain accessible under its old name until that name is tak | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli rename environment oldName newName +kosli rename environment oldName newName ``` diff --git a/client_reference/kosli_rename_flow.md b/client_reference/kosli_rename_flow.md index 5f5b682..bb9aa65 100644 --- a/client_reference/kosli_rename_flow.md +++ b/client_reference/kosli_rename_flow.md @@ -29,19 +29,19 @@ The flow will remain accessible under its old name until that name is taken by a | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli rename flow oldName newName +kosli rename flow oldName newName ``` diff --git a/client_reference/kosli_report_approval.md b/client_reference/kosli_report_approval.md index 2b5f868..00c9097 100644 --- a/client_reference/kosli_report_approval.md +++ b/client_reference/kosli_report_approval.md @@ -11,7 +11,7 @@ description: "Report an approval of deploying an artifact to an environment to K kosli report approval [IMAGE-NAME | FILE-PATH | DIR-PATH] [flags] ``` -Report an approval of deploying an artifact to an environment to Kosli. +Report an approval of deploying an artifact to an environment to Kosli. The artifact fingerprint can be provided directly with the `--fingerprint` flag, or calculated based on `--artifact-type` flag. @@ -54,7 +54,7 @@ registry without needing a local Docker daemon. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -76,10 +76,10 @@ registry without needing a local Docker daemon. ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -# Report that an artifact with a provided fingerprint (sha256) has been approved for +# Report that an artifact with a provided fingerprint (sha256) has been approved for # deployment to environment . # The approval is for all git commits since the last approval to this environment. kosli report approval \ @@ -101,7 +101,7 @@ kosli report approval FILE.tgz \ --newest-commit HEAD \ --approver username \ --org yourOrgName \ - --flow yourFlowName + --flow yourFlowName # Report that an artifact with a provided fingerprint (sha256) has been approved for deployment. # The approval is for all environments. diff --git a/client_reference/kosli_report_artifact.md b/client_reference/kosli_report_artifact.md index aa532f1..34decd9 100644 --- a/client_reference/kosli_report_artifact.md +++ b/client_reference/kosli_report_artifact.md @@ -14,7 +14,7 @@ description: "Report an artifact creation to a Kosli flow. " kosli report artifact {IMAGE-NAME | FILE-PATH | DIR-PATH} [flags] ``` -Report an artifact creation to a Kosli flow. +Report an artifact creation to a Kosli flow. The artifact fingerprint can be provided directly with the `--fingerprint` flag, or calculated based on `--artifact-type` flag. @@ -34,13 +34,13 @@ registry without needing a local Docker daemon. | Flag | Description | | :--- | :--- | | -t, --artifact-type string | The type of the artifact to calculate its SHA256 fingerprint. One of: [oci, docker, file, dir]. Only required if you want Kosli to calculate the fingerprint for you (i.e. when you don't specify '--fingerprint' on commands that allow it). | -| -b, --build-url string | The url of CI pipeline that built the artifact. (defaulted in some CIs: [docs](/ci-defaults) ). | -| -u, --commit-url string | The url for the git commit that created the artifact. (defaulted in some CIs: [docs](/ci-defaults) ). | +| -b, --build-url string | The url of CI pipeline that built the artifact. (defaulted in some CIs: [docs](/integrations/ci_cd) ). | +| -u, --commit-url string | The url for the git commit that created the artifact. (defaulted in some CIs: [docs](/integrations/ci_cd) ). | | -D, --dry-run | [optional] Run in dry-run mode. When enabled, no data is sent to Kosli and the CLI exits with 0 exit code regardless of any errors. | | -x, --exclude strings | [optional] The comma separated list of directories and files to exclude from fingerprinting. Can take glob patterns. Only applicable for --artifact-type dir. | | -F, --fingerprint string | [conditional] The SHA256 fingerprint of the artifact. Only required if you don't specify '--artifact-type'. | | -f, --flow string | The Kosli flow name. | -| -g, --git-commit string | [defaulted] The git commit from which the artifact was created. (defaulted in some CIs: [docs](/ci-defaults), otherwise defaults to HEAD ). | +| -g, --git-commit string | [defaulted] The git commit from which the artifact was created. (defaulted in some CIs: [docs](/integrations/ci_cd), otherwise defaults to HEAD ). | | -h, --help | help for artifact | | -n, --name string | [optional] Artifact display name, if different from file, image or directory name. | | --registry-password string | [conditional] The container registry password or access token. Only required if you want to read container image SHA256 digest from a remote container registry. | @@ -55,32 +55,32 @@ registry without needing a local Docker daemon. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli report artifact FILE.tgz - --artifact-type file - --build-url https://exampleci.com - --commit-url https://github.com/YourOrg/YourProject/commit/yourCommitShaThatThisArtifactWasBuiltFrom - --git-commit yourCommitShaThatThisArtifactWasBuiltFrom +kosli report artifact FILE.tgz + --artifact-type file + --build-url https://exampleci.com + --commit-url https://github.com/YourOrg/YourProject/commit/yourCommitShaThatThisArtifactWasBuiltFrom + --git-commit yourCommitShaThatThisArtifactWasBuiltFrom ``` ```shell -kosli report artifact ANOTHER_FILE.txt - --build-url https://exampleci.com - --commit-url https://github.com/YourOrg/YourProject/commit/yourCommitShaThatThisArtifactWasBuiltFrom - --git-commit yourCommitShaThatThisArtifactWasBuiltFrom +kosli report artifact ANOTHER_FILE.txt + --build-url https://exampleci.com + --commit-url https://github.com/YourOrg/YourProject/commit/yourCommitShaThatThisArtifactWasBuiltFrom + --git-commit yourCommitShaThatThisArtifactWasBuiltFrom --fingerprint yourArtifactFingerprint ``` diff --git a/client_reference/kosli_request_approval.md b/client_reference/kosli_request_approval.md index fd432ed..e01a96e 100644 --- a/client_reference/kosli_request_approval.md +++ b/client_reference/kosli_request_approval.md @@ -11,8 +11,8 @@ description: "Request an approval of a deployment of an artifact to an environme kosli request approval [IMAGE-NAME | FILE-PATH | DIR-PATH] [flags] ``` -Request an approval of a deployment of an artifact to an environment in Kosli. -The request should be reviewed in the Kosli UI. +Request an approval of a deployment of an artifact to an environment in Kosli. +The request should be reviewed in the Kosli UI. The artifact fingerprint can be provided directly with the `--fingerprint` flag, or calculated based on `--artifact-type` flag. @@ -54,14 +54,14 @@ registry without needing a local Docker daemon. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell # Request an approval for an artifact with a provided fingerprint (sha256) @@ -84,7 +84,7 @@ kosli request approval FILE.tgz \ --environment yourEnvironmentName \ --newest-commit HEAD \ --org yourOrgName \ - --flow yourFlowName + --flow yourFlowName # Request an approval for an artifact with a provided fingerprint (sha256). # The approval is for all environments. diff --git a/client_reference/kosli_search.md b/client_reference/kosli_search.md index 8ae4c26..24f09b4 100644 --- a/client_reference/kosli_search.md +++ b/client_reference/kosli_search.md @@ -11,7 +11,7 @@ description: "Search for a git commit or an artifact fingerprint in Kosli. " kosli search {GIT-COMMIT | FINGERPRINT} [flags] ``` -Search for a git commit or an artifact fingerprint in Kosli. +Search for a git commit or an artifact fingerprint in Kosli. You can use short git commit or artifact fingerprint shas, but you must provide at least 5 characters. ## Flags @@ -28,25 +28,25 @@ You can use short git commit or artifact fingerprint shas, but you must provide | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli search YOUR_GIT_COMMIT +kosli search YOUR_GIT_COMMIT ``` ```shell -kosli search YOUR_ARTIFACT_FINGERPRINT +kosli search YOUR_ARTIFACT_FINGERPRINT ``` diff --git a/client_reference/kosli_snapshot_azure.md b/client_reference/kosli_snapshot_azure.md index fcf6fd1..4ca2f6e 100644 --- a/client_reference/kosli_snapshot_azure.md +++ b/client_reference/kosli_snapshot_azure.md @@ -11,23 +11,23 @@ description: "Report a snapshot of running Azure web apps and function apps in a kosli snapshot azure ENVIRONMENT-NAME [flags] ``` -Report a snapshot of running Azure web apps and function apps in an Azure resource group to Kosli. +Report a snapshot of running Azure web apps and function apps in an Azure resource group to Kosli. The reported data includes Azure app names, container image digests and creation timestamps. For Azure Function apps or Web apps which uses zip deployment the fingerprint is calculated based on the content of the zip file. This is the same as unzipping the file and then running `kosli fingerprint -t dir yourDirName`. When doing zip deployment the WEBSITE_RUN_FROM_PACKAGE must NOT be set to 1. This will cause the azure API calls to not return the content of what is running on the server and fingerprint calculations -will not match. See +will not match. See https://learn.microsoft.com/en-us/azure/azure-functions/functions-app-settings#website_run_from_package -To authenticate to Azure, you need to create Azure service principal with a secret -and provide these Azure credentials via flags or by exporting the equivalent KOSLI env vars (e.g. KOSLI_AZURE_CLIENT_ID). -The service principal needs to have the following permissions: - 1) Microsoft.Web/sites/Read - 2) Microsoft.ContainerRegistry/registries/pull/read +To authenticate to Azure, you need to create Azure service principal with a secret +and provide these Azure credentials via flags or by exporting the equivalent KOSLI env vars (e.g. KOSLI_AZURE_CLIENT_ID). +The service principal needs to have the following permissions: + 1) Microsoft.Web/sites/Read + 2) Microsoft.ContainerRegistry/registries/pull/read + - ## Flags | Flag | Description | @@ -50,48 +50,48 @@ The service principal needs to have the following permissions: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli snapshot azure yourEnvironmentName - --azure-client-id yourAzureClientID - --azure-client-secret yourAzureClientSecret - --azure-tenant-id yourAzureTenantID - --azure-subscription-id yourAzureSubscriptionID - --azure-resource-group-name yourAzureResourceGroupName - --digests-source acr +kosli snapshot azure yourEnvironmentName + --azure-client-id yourAzureClientID + --azure-client-secret yourAzureClientSecret + --azure-tenant-id yourAzureTenantID + --azure-subscription-id yourAzureSubscriptionID + --azure-resource-group-name yourAzureResourceGroupName + --digests-source acr ``` ```shell -kosli snapshot azure yourEnvironmentName - --azure-client-id yourAzureClientID - --azure-client-secret yourAzureClientSecret - --azure-tenant-id yourAzureTenantID - --azure-subscription-id yourAzureSubscriptionID - --azure-resource-group-name yourAzureResourceGroupName - --digests-source logs +kosli snapshot azure yourEnvironmentName + --azure-client-id yourAzureClientID + --azure-client-secret yourAzureClientSecret + --azure-tenant-id yourAzureTenantID + --azure-subscription-id yourAzureSubscriptionID + --azure-resource-group-name yourAzureResourceGroupName + --digests-source logs ``` ```shell -kosli snapshot azure yourEnvironmentName - --azure-client-id yourAzureClientID - --azure-client-secret yourAzureClientSecret - --azure-tenant-id yourAzureTenantID - --azure-subscription-id yourAzureSubscriptionID - --azure-resource-group-name yourAzureResourceGroupName +kosli snapshot azure yourEnvironmentName + --azure-client-id yourAzureClientID + --azure-client-secret yourAzureClientSecret + --azure-tenant-id yourAzureTenantID + --azure-subscription-id yourAzureSubscriptionID + --azure-resource-group-name yourAzureResourceGroupName ``` diff --git a/client_reference/kosli_snapshot_docker.md b/client_reference/kosli_snapshot_docker.md index b58e827..cef2e72 100644 --- a/client_reference/kosli_snapshot_docker.md +++ b/client_reference/kosli_snapshot_docker.md @@ -11,8 +11,8 @@ description: "Report a snapshot of running containers from docker host to Kosli. kosli snapshot docker ENVIRONMENT-NAME [flags] ``` -Report a snapshot of running containers from docker host to Kosli. -The reported data includes container image digests +Report a snapshot of running containers from docker host to Kosli. +The reported data includes container image digests and creation timestamps. Containers running images which have not been pushed to or pulled from a registry will be ignored. @@ -30,19 +30,19 @@ been pushed to or pulled from a registry will be ignored. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli snapshot docker yourEnvironmentName +kosli snapshot docker yourEnvironmentName ``` diff --git a/client_reference/kosli_snapshot_ecs.md b/client_reference/kosli_snapshot_ecs.md index 5fdfcb9..84092a8 100644 --- a/client_reference/kosli_snapshot_ecs.md +++ b/client_reference/kosli_snapshot_ecs.md @@ -11,25 +11,25 @@ description: "Report a snapshot of running containers in one or more AWS ECS clu kosli snapshot ecs ENVIRONMENT-NAME [flags] ``` -Report a snapshot of running containers in one or more AWS ECS cluster(s) to Kosli. -Skip all filtering flags to report everything running in all clusters in a given AWS account. +Report a snapshot of running containers in one or more AWS ECS cluster(s) to Kosli. +Skip all filtering flags to report everything running in all clusters in a given AWS account. Use `--clusters` and/or `--clusters-regex` OR `--exclude` and/or `--exclude-regex` to filter the clusters to snapshot. -You can also filter the services within a cluster using `--services` and/or `--services-regex`. Or use `--exclude-services` and/or `--exclude-services-regex` to exclude some services. +You can also filter the services within a cluster using `--services` and/or `--services-regex`. Or use `--exclude-services` and/or `--exclude-services-regex` to exclude some services. Note that service filtering is applied to all clusters being snapshot. All filtering options are case-sensitive. The reported data includes cluster and service names, container image digests and creation timestamps. -To authenticate to AWS, you can either: - 1) provide the AWS static credentials via flags or by exporting the equivalent KOSLI env vars (e.g. KOSLI_AWS_KEY_ID) - 2) export the AWS env vars (e.g. AWS_ACCESS_KEY_ID). - 3) Use a shared config/credentials file under the $HOME/.aws - -Option 1 takes highest precedence, while option 3 is the lowest. +To authenticate to AWS, you can either: + 1) provide the AWS static credentials via flags or by exporting the equivalent KOSLI env vars (e.g. KOSLI_AWS_KEY_ID) + 2) export the AWS env vars (e.g. AWS_ACCESS_KEY_ID). + 3) Use a shared config/credentials file under the $HOME/.aws + +Option 1 takes highest precedence, while option 3 is the lowest. More details can be found here: https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/#specifying-credentials - + ## Flags | Flag | Description | @@ -56,22 +56,22 @@ More details can be found here: https://aws.github.io/aws-sdk-go-v2/docs/configu | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli snapshot ecs yourEnvironmentName - --aws-key-id yourAWSAccessKeyID - --aws-secret-key yourAWSSecretAccessKey - --aws-region yourAWSRegion +kosli snapshot ecs yourEnvironmentName + --aws-key-id yourAWSAccessKeyID + --aws-secret-key yourAWSSecretAccessKey + --aws-region yourAWSRegion ``` @@ -81,13 +81,13 @@ export AWS_ACCESS_KEY_ID=yourAWSAccessKeyID export AWS_SECRET_ACCESS_KEY=yourAWSSecretAccessKey export AWS_REGION=yourAWSRegion -kosli snapshot ecs yourEnvironmentName +kosli snapshot ecs yourEnvironmentName ``` ```shell -kosli snapshot ecs my-env +kosli snapshot ecs my-env ``` diff --git a/client_reference/kosli_snapshot_k8s.md b/client_reference/kosli_snapshot_k8s.md index f87ea08..f953470 100644 --- a/client_reference/kosli_snapshot_k8s.md +++ b/client_reference/kosli_snapshot_k8s.md @@ -24,7 +24,7 @@ to include or exclude namespaces. | -x, --exclude-namespaces strings | [optional] The comma separated list of namespaces names to exclude from reporting artifacts info from. Requires cluster-wide read permissions for pods and namespaces. Can't be used together with --namespaces or --namespaces-regex. | | --exclude-namespaces-regex strings | [optional] The comma separated list of namespaces regex patterns to exclude from reporting artifacts info from. Requires cluster-wide read permissions for pods and namespaces. Can't be used together with --namespaces or --namespaces-regex. | | -h, --help | help for k8s | -| -k, --kubeconfig string | [defaulted] The kubeconfig path for the target cluster. (default "$HOME/.kube/config") | +| -k, --kubeconfig string | [defaulted] The kubeconfig path for the target cluster. (default "/Users/dangrondahl/.kube/config") | | -n, --namespaces strings | [optional] The comma separated list of namespaces names to report artifacts info from. Can't be used together with --exclude-namespaces or --exclude-namespaces-regex. | | --namespaces-regex strings | [optional] The comma separated list of namespaces regex patterns to report artifacts info from. Requires cluster-wide read permissions for pods and namespaces. Can't be used together with --exclude-namespaces --exclude-namespaces-regex. | @@ -35,7 +35,7 @@ to include or exclude namespaces. | -a, --api-token string | The Kosli API token. | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_snapshot_lambda.md b/client_reference/kosli_snapshot_lambda.md index 8a743e5..e1775ef 100644 --- a/client_reference/kosli_snapshot_lambda.md +++ b/client_reference/kosli_snapshot_lambda.md @@ -11,17 +11,17 @@ description: "Report a snapshot of artifacts deployed as one or more AWS Lambda kosli snapshot lambda ENVIRONMENT-NAME [flags] ``` -Report a snapshot of artifacts deployed as one or more AWS Lambda functions and their digests to Kosli. +Report a snapshot of artifacts deployed as one or more AWS Lambda functions and their digests to Kosli. Skip `--function-names` and `--function-names-regex` to report all functions in a given AWS account. Or use `--exclude` and/or `--exclude-regex` to report all functions excluding some. -To authenticate to AWS, you can either: - 1) provide the AWS static credentials via flags or by exporting the equivalent KOSLI env vars (e.g. KOSLI_AWS_KEY_ID) - 2) export the AWS env vars (e.g. AWS_ACCESS_KEY_ID). - 3) Use a shared config/credentials file under the $HOME/.aws - -Option 1 takes highest precedence, while option 3 is the lowest. +To authenticate to AWS, you can either: + 1) provide the AWS static credentials via flags or by exporting the equivalent KOSLI env vars (e.g. KOSLI_AWS_KEY_ID) + 2) export the AWS env vars (e.g. AWS_ACCESS_KEY_ID). + 3) Use a shared config/credentials file under the $HOME/.aws + +Option 1 takes highest precedence, while option 3 is the lowest. More details can be found here: https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/#specifying-credentials - + ## Flags | Flag | Description | @@ -31,7 +31,7 @@ More details can be found here: https://aws.github.io/aws-sdk-go-v2/docs/configu | --aws-secret-key string | The AWS secret access key. | | -D, --dry-run | [optional] Run in dry-run mode. When enabled, no data is sent to Kosli and the CLI exits with 0 exit code regardless of any errors. | | --exclude strings | [optional] The comma-separated list of AWS Lambda function names to be excluded. Cannot be used together with --function-names | -| --exclude-regex strings | [optional] The comma-separated list of name regex patterns for AWS Lambda functions to be excluded. Cannot be used together with --function-names. Allowed regex patterns are described in https://github.com/google/re2/wiki/Syntax | +| --exclude-regex strings | [optional] The comma-separated list of name regex patterns for AWS Lambda functions to be excluded. Cannot be used together with --function-names. Allowed regex patterns are described in [RE2 syntax](https://github.com/google/re2/wiki/Syntax) | | --function-names strings | [optional] The comma-separated list of AWS Lambda function names to be reported. Cannot be used together with --exclude or --exclude-regex. | | --function-names-regex strings | [optional] The comma-separated list of AWS Lambda function names regex patterns to be reported. Cannot be used together with --exclude or --exclude-regex. | | -h, --help | help for lambda | @@ -44,14 +44,14 @@ More details can be found here: https://aws.github.io/aws-sdk-go-v2/docs/configu | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). @@ -60,7 +60,7 @@ export AWS_REGION=yourAWSRegion export AWS_ACCESS_KEY_ID=yourAWSAccessKeyID export AWS_SECRET_ACCESS_KEY=yourAWSSecretAccessKey -kosli snapshot lambda yourEnvironmentName +kosli snapshot lambda yourEnvironmentName ``` @@ -70,9 +70,9 @@ export AWS_REGION=yourAWSRegion export AWS_ACCESS_KEY_ID=yourAWSAccessKeyID export AWS_SECRET_ACCESS_KEY=yourAWSSecretAccessKey -kosli snapshot lambda yourEnvironmentName - --exclude function1,function2 - --exclude-regex "^not-wanted.*" +kosli snapshot lambda yourEnvironmentName + --exclude function1,function2 + --exclude-regex "^not-wanted.*" ``` @@ -82,8 +82,8 @@ export AWS_REGION=yourAWSRegion export AWS_ACCESS_KEY_ID=yourAWSAccessKeyID export AWS_SECRET_ACCESS_KEY=yourAWSSecretAccessKey -kosli snapshot lambda yourEnvironmentName - --function-names yourFunctionName +kosli snapshot lambda yourEnvironmentName + --function-names yourFunctionName ``` @@ -93,8 +93,8 @@ export AWS_REGION=yourAWSRegion export AWS_ACCESS_KEY_ID=yourAWSAccessKeyID export AWS_SECRET_ACCESS_KEY=yourAWSSecretAccessKey -kosli snapshot lambda yourEnvironmentName - --function-names-regex yourFunctionNameRegexPattern +kosli snapshot lambda yourEnvironmentName + --function-names-regex yourFunctionNameRegexPattern ``` @@ -104,18 +104,18 @@ export AWS_REGION=yourAWSRegion export AWS_ACCESS_KEY_ID=yourAWSAccessKeyID export AWS_SECRET_ACCESS_KEY=yourAWSSecretAccessKey -kosli snapshot lambda yourEnvironmentName - --function-names yourFirstFunctionName,yourSecondFunctionName +kosli snapshot lambda yourEnvironmentName + --function-names yourFirstFunctionName,yourSecondFunctionName ``` ```shell -kosli snapshot lambda yourEnvironmentName - --function-names yourFunctionName - --aws-key-id yourAWSAccessKeyID - --aws-secret-key yourAWSSecretAccessKey - --aws-region yourAWSRegion +kosli snapshot lambda yourEnvironmentName + --function-names yourFunctionName + --aws-key-id yourAWSAccessKeyID + --aws-secret-key yourAWSSecretAccessKey + --aws-region yourAWSRegion ``` diff --git a/client_reference/kosli_snapshot_path.md b/client_reference/kosli_snapshot_path.md index 4a4adf4..b582798 100644 --- a/client_reference/kosli_snapshot_path.md +++ b/client_reference/kosli_snapshot_path.md @@ -11,7 +11,7 @@ description: "Report a snapshot of a single artifact running in a specific files kosli snapshot path ENVIRONMENT-NAME [flags] ``` -Report a snapshot of a single artifact running in a specific filesystem path to Kosli. +Report a snapshot of a single artifact running in a specific filesystem path to Kosli. You can report a directory or file artifact. For reporting multiple artifacts in one go, use "kosli snapshot paths". You can exclude certain paths or patterns from the artifact fingerprint using `--exclude`. The supported glob pattern syntax is documented here: https://pkg.go.dev/path/filepath#Match , @@ -39,29 +39,29 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file, | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli snapshot path yourEnvironmentName - --path path/to/your/artifact/dir/or/file - --name yourArtifactDisplayName +kosli snapshot path yourEnvironmentName + --path path/to/your/artifact/dir/or/file + --name yourArtifactDisplayName ``` ```shell -kosli snapshot path yourEnvironmentName - --path path/to/your/artifact/dir - --name yourArtifactDisplayName +kosli snapshot path yourEnvironmentName + --path path/to/your/artifact/dir + --name yourArtifactDisplayName --exclude **/log,unwanted.txt,path/**/output.txt ``` diff --git a/client_reference/kosli_snapshot_paths.md b/client_reference/kosli_snapshot_paths.md index 9e6600d..ed0952b 100644 --- a/client_reference/kosli_snapshot_paths.md +++ b/client_reference/kosli_snapshot_paths.md @@ -11,15 +11,15 @@ description: "Report a snapshot of artifacts running in specific filesystem path kosli snapshot paths ENVIRONMENT-NAME [flags] ``` -Report a snapshot of artifacts running in specific filesystem paths to Kosli. -You can report directory or file artifacts in one or more filesystem paths. -Artifacts names and the paths to include and exclude when fingerprinting them can be +Report a snapshot of artifacts running in specific filesystem paths to Kosli. +You can report directory or file artifacts in one or more filesystem paths. +Artifacts names and the paths to include and exclude when fingerprinting them can be defined in a paths file which can be provided using `--paths-file`. Paths files can be in YAML, JSON or TOML formats. -They specify a list of artifacts to fingerprint. For each artifact, the file specifies a base path to look for the artifact in +They specify a list of artifacts to fingerprint. For each artifact, the file specifies a base path to look for the artifact in and (optionally) a list of paths to exclude. Excluded paths are relative to the artifact path(s) and can be literal paths or -glob patterns. +glob patterns. The supported glob pattern syntax is documented here: https://pkg.go.dev/path/filepath#Match , plus the ability to use recursive globs "**" @@ -52,20 +52,20 @@ artifacts: | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli snapshot paths yourEnvironmentName - --paths-file path/to/your/paths/file +kosli snapshot paths yourEnvironmentName + --paths-file path/to/your/paths/file ``` diff --git a/client_reference/kosli_snapshot_s3.md b/client_reference/kosli_snapshot_s3.md index 0a0a2db..834f20c 100644 --- a/client_reference/kosli_snapshot_s3.md +++ b/client_reference/kosli_snapshot_s3.md @@ -13,14 +13,14 @@ kosli snapshot s3 ENVIRONMENT-NAME [flags] Report a snapshot of the content of an AWS S3 bucket to Kosli. -To authenticate to AWS, you can either: - 1) provide the AWS static credentials via flags or by exporting the equivalent KOSLI env vars (e.g. KOSLI_AWS_KEY_ID) - 2) export the AWS env vars (e.g. AWS_ACCESS_KEY_ID). - 3) Use a shared config/credentials file under the $HOME/.aws - -Option 1 takes highest precedence, while option 3 is the lowest. +To authenticate to AWS, you can either: + 1) provide the AWS static credentials via flags or by exporting the equivalent KOSLI env vars (e.g. KOSLI_AWS_KEY_ID) + 2) export the AWS env vars (e.g. AWS_ACCESS_KEY_ID). + 3) Use a shared config/credentials file under the $HOME/.aws + +Option 1 takes highest precedence, while option 3 is the lowest. More details can be found here: https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/#specifying-credentials - + You can report the entire bucket content, or filter some of the content using `--include` and `--exclude`. In all cases, the content is reported as one artifact. If you wish to report separate files/dirs within the same bucket as separate artifacts, you need to run the command twice. @@ -48,14 +48,14 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file, | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). @@ -64,18 +64,18 @@ export AWS_REGION=yourAWSRegion export AWS_ACCESS_KEY_ID=yourAWSAccessKeyID export AWS_SECRET_ACCESS_KEY=yourAWSSecretAccessKey -kosli snapshot s3 yourEnvironmentName - --bucket yourBucketName +kosli snapshot s3 yourEnvironmentName + --bucket yourBucketName ``` ```shell -kosli snapshot s3 yourEnvironmentName - --bucket yourBucketName - --aws-key-id yourAWSAccessKeyID - --aws-secret-key yourAWSSecretAccessKey - --aws-region yourAWSRegion +kosli snapshot s3 yourEnvironmentName + --bucket yourBucketName + --aws-key-id yourAWSAccessKeyID + --aws-secret-key yourAWSSecretAccessKey + --aws-region yourAWSRegion ``` @@ -85,9 +85,9 @@ export AWS_REGION=yourAWSRegion export AWS_ACCESS_KEY_ID=yourAWSAccessKeyID export AWS_SECRET_ACCESS_KEY=yourAWSSecretAccessKey -kosli snapshot s3 yourEnvironmentName - --bucket yourBucketName - --include file.txt,path/within/bucket +kosli snapshot s3 yourEnvironmentName + --bucket yourBucketName + --include file.txt,path/within/bucket ``` @@ -97,9 +97,9 @@ export AWS_REGION=yourAWSRegion export AWS_ACCESS_KEY_ID=yourAWSAccessKeyID export AWS_SECRET_ACCESS_KEY=yourAWSSecretAccessKey -kosli snapshot s3 yourEnvironmentName - --bucket yourBucketName - --exclude file.txt,path/within/bucket +kosli snapshot s3 yourEnvironmentName + --bucket yourBucketName + --exclude file.txt,path/within/bucket ``` diff --git a/client_reference/kosli_snapshot_server.md b/client_reference/kosli_snapshot_server.md index 89a3e45..a6d188c 100644 --- a/client_reference/kosli_snapshot_server.md +++ b/client_reference/kosli_snapshot_server.md @@ -14,15 +14,15 @@ description: "Report a snapshot of artifacts running in a server environment to kosli snapshot server ENVIRONMENT-NAME [flags] ``` -Report a snapshot of artifacts running in a server environment to Kosli. +Report a snapshot of artifacts running in a server environment to Kosli. You can report directory or file artifacts in one or more server paths. -When fingerprinting a 'dir' artifact, you can exclude certain paths from fingerprint calculation +When fingerprinting a 'dir' artifact, you can exclude certain paths from fingerprint calculation using the `--exclude` flag. Excluded paths are relative to the DIR-PATH and can be literal paths or glob patterns. With a directory structure like this `foo/bar/zam/file.txt` if you are calculating the fingerprint of `foo/bar` you need to exclude `zam/file.txt` which is relative to the DIR-PATH. -The supported glob pattern syntax is what is documented here: https://pkg.go.dev/path/filepath#Match , +The supported glob pattern syntax is what is documented here: https://pkg.go.dev/path/filepath#Match , plus the ability to use recursive globs "**" If the directory structure contains a symbolic link to a *file* (for example, a link 'from/this/file' and a target of 'to/another/file') then: @@ -59,32 +59,32 @@ The `.kosli_ignore` will be treated as part of the artifact like any other file, | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell # report directory artifacts running in a server at a list of paths: kosli snapshot server yourEnvironmentName \ --paths a/b/c,e/f/g \ --api-token yourAPIToken \ - --org yourOrgName - -# exclude certain paths when reporting directory artifacts: + --org yourOrgName + +# exclude certain paths when reporting directory artifacts: # in the example below, any path matching [a/b/c/logs, a/b/c/*/logs, a/b/c/*/*/logs] # will be skipped when calculating the fingerprint kosli snapshot server yourEnvironmentName \ --paths a/b/c \ --exclude logs,"*/logs","*/*/logs" --api-token yourAPIToken \ - --org yourOrgName - -# use glob pattern to match paths to report them as directory artifacts: + --org yourOrgName + +# use glob pattern to match paths to report them as directory artifacts: # in the example below, any path matching "*/*/src" under top-dir/ will be reported as a separate artifact. kosli snapshot server yourEnvironmentName \ --paths "top-dir/*/*/src" \ diff --git a/client_reference/kosli_status.md b/client_reference/kosli_status.md index 92aa9d5..2fe2302 100644 --- a/client_reference/kosli_status.md +++ b/client_reference/kosli_status.md @@ -11,8 +11,8 @@ description: "Check the status of a Kosli server. " kosli status [flags] ``` -Check the status of a Kosli server. -The status is logged and the command always exits with 0 exit code. +Check the status of a Kosli server. +The status is logged and the command always exits with 0 exit code. If you like to assert the Kosli server status, you can use the `--assert` flag or the "kosli assert status" command. ## Flags @@ -29,7 +29,7 @@ If you like to assert the Kosli server status, you can use the `--assert` flag o | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | diff --git a/client_reference/kosli_tag.md b/client_reference/kosli_tag.md index 47c172f..1f8269f 100644 --- a/client_reference/kosli_tag.md +++ b/client_reference/kosli_tag.md @@ -11,7 +11,7 @@ description: "Tag a resource in Kosli with key-value pairs. " kosli tag RESOURCE-TYPE RESOURCE-ID [flags] ``` -Tag a resource in Kosli with key-value pairs. +Tag a resource in Kosli with key-value pairs. use --set to add or update tags, and --unset to remove tags. @@ -31,7 +31,7 @@ use --set to add or update tags, and --unset to remove tags. | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | @@ -53,37 +53,37 @@ use --set to add or update tags, and --unset to remove tags. ## Examples Use Cases -These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). +These examples all assume that the flags `--api-token`, `--org`, `--host`, (and `--flow`, `--trail` when required), are [set/provided](/getting_started/install/#assigning-flags-via-environment-variables). ```shell -kosli tag flow yourFlowName - --set key1=value1 - --set key2=value2 +kosli tag flow yourFlowName + --set key1=value1 + --set key2=value2 ``` ```shell -kosli tag env yourEnvironmentName - --set key1=value1 - --set key2=value2 +kosli tag env yourEnvironmentName + --set key1=value1 + --set key2=value2 ``` ```shell -kosli tag env yourEnvironmentName - --set key1=value1 - --set key2=value2 +kosli tag env yourEnvironmentName + --set key1=value1 + --set key2=value2 ``` ```shell -kosli tag env yourEnvironmentName - --unset key1=value1 +kosli tag env yourEnvironmentName + --unset key1=value1 ``` diff --git a/client_reference/kosli_version.md b/client_reference/kosli_version.md index c43a9cf..87af64b 100644 --- a/client_reference/kosli_version.md +++ b/client_reference/kosli_version.md @@ -11,7 +11,7 @@ description: "Print the version of a Kosli CLI. " kosli version [flags] ``` -Print the version of a Kosli CLI. +Print the version of a Kosli CLI. The output will look something like this: version.BuildInfo\{Version:"v0.0.1", GitCommit:"fe51cd1e31e6a202cba7dead9552a6d418ded79a", GitTreeState:"clean", GoVersion:"go1.16.3"\} @@ -36,7 +36,7 @@ version.BuildInfo\{Version:"v0.0.1", GitCommit:"fe51cd1e31e6a202cba7dead9552a6d4 | -c, --config-file string | [optional] The Kosli config file path. (default "kosli") | | --debug | [optional] Print debug logs to stdout. A boolean flag [docs](/faq/#boolean-flags) (default false) | | -H, --host string | [defaulted] The Kosli endpoint. (default "https://app.kosli.com") | -| --http-proxy http://proxy-server-ip:proxy-port | [optional] The HTTP proxy URL including protocol and port number. e.g. http://proxy-server-ip:proxy-port | +| --http-proxy string | [optional] The HTTP proxy URL including protocol and port number. e.g. `http://proxy-server-ip:proxy-port` | | -r, --max-api-retries int | [defaulted] How many times should API calls be retried when the API host is not reachable. (default 3) | | --org string | The Kosli organization. | From aca0ad65d2db2e0c424cc0112d79e6ed418144a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Gr=C3=B8ndahl?= Date: Fri, 8 May 2026 15:11:31 +0200 Subject: [PATCH 3/4] chore: remove __pycache__ from tracking and add to .gitignore --- .gitignore | 1 + .../__pycache__/live_docs_fetch.cpython-314.pyc | Bin 9370 -> 0 bytes .../live_docs_modifiers_data.cpython-314.pyc | Bin 12151 -> 0 bytes .../live_docs_queries_data.cpython-314.pyc | Bin 3570 -> 0 bytes 4 files changed, 1 insertion(+) delete mode 100644 scripts/__pycache__/live_docs_fetch.cpython-314.pyc delete mode 100644 scripts/__pycache__/live_docs_modifiers_data.cpython-314.pyc delete mode 100644 scripts/__pycache__/live_docs_queries_data.cpython-314.pyc diff --git a/.gitignore b/.gitignore index db9325d..6013b4e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .vscode/ .claude/settings.local.json tmp/ +__pycache__/ diff --git a/scripts/__pycache__/live_docs_fetch.cpython-314.pyc b/scripts/__pycache__/live_docs_fetch.cpython-314.pyc deleted file mode 100644 index f9b8ff5a511127c6fd2b2a8e97007db620db7157..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9370 zcmd5iT}<29ns(yENenm;C~cvGDFvD`C56&oXbV%?f&NhHVM715k((HBCnTxul#)Ah zHxKhb??|_udsiB+w9>NLhwYViB_4UKwENIUH%TWMUq(~uR@!|W+SO`bR@(0z$Bsjx z-Knltdqj?pea`vL&-ed*^wib*2q-^h{#)|yA&5Vt7qd|1#v6(xh%CVqDsh|O$#GI8 z@zbF?;OQ85j!`PrhWec2t}(aj#%*$(R%txWqk4Es_3|#&_g7RqK;YfS03s?p-AoJ^ zO+sbf>h;)qYu@Vh+InkI?`=C|pRKo!XPOC>^nedFTESt-iRBxNox z-4_qWl2N7C=i@~s9amw3EOPVWd{WAYF-}SxOv%Zps3@G8Y=|oIOs2pA} zD#YUow;-u=Qi2mWMM})ZMNUp9dVLc?QuoH?bR;T7=R|mMr36_KGp%!~no>@NLP9Fl z`$bZTOTE$LJiJMv`~7;)&Oe^zu!|H%2j9p#0msq%W zm%nm&1Ypwh!UF|18+DeEg&r>W!8`S44H{YE7W#(Eq{D1gp6$dm8Fmbm=ck;vOzI*g z-IY;htDOit2g)>(qQcaq$Ly&*Z$CS}KoBv2*h=&g9R!TRv|Jg1T9dWa@92#uP1t}_ zN9M+Pj81h9Zd6#{7LxK8Gx6jCcYWmYC5%D1w|PKuC@OJ+%Aq$&jVN;h#=9)4X*t13 zDklJ50o#hoC1>E75S3n?^aW{sCnA9eB7w+!GA7MPqO3$>f-2}WuwZ0Sn2$%&a$NVw z;=Qz}sEY2K6;+*4R6$KEk!Ug|>Xa%zP<5A*ic4zHrPJj->5izR`zl+~on=5u3J6nF z5RSUKx;Rch8k$Saiy@$ygeZs5Awy_KMx{h$DWxi*%0@AX_ofzgAKo55j@$&$>fxtc zf+|b=hnrwJioQ_J7h0v)ZsdJq*|Y0x^P?|+^X2l{Jj-RrN;F%fTb|P`%SwUXTVm^% zyd@^^=+whgMdqXD%ty;=p4q2S``!RNB5Efai@5$B3!gB_lgF@Pjltr`>ZWS!ZnJVD6P z=+ylV-oty3nRnshePI{e1@r&rE@~=wfo?Nco4LRn{Dio1?A*v`nccY0#zrtNVlEX^ zNyK9nzWkU2K|7I5h#ZLC89|DtWwBRx&w{{A-^uK+h(f8?_=aVn3~-cCbn%WTgMhx9 z3}tFV1}iBcwDyGV1TM#5;=-K_V;iXxAQdS^m=QA_CUk%d!zxmCAOvFlt{4Tr%Ipl` z#UwQ;FIKIgJEU09BP02yd(oIkLYNn2B*|n%Su#SjPTf_K2^k4b-E}XWRK=iMW>K#n z_o8`n19}gjcUnv!nGsWvWJS!+adIQ-@M8r9vS>~eVn~9?9q_pYe##4|vc%7B!sA=I z_VusV+3q6Smt*@@yYuYnC932$~)j>RiXuH9=J;C&DZ$MJQ*f{ zDI8%E7=}tY-X~l@i%Gx1Ik63(pzfhi<_?5WK8vJR4gcDW0mU76r! zn>xWbXzKY^?GBoi=Y7@E1ZE&C< zrF)SY#Pq29@Kl2~EkaY!*%5si)Wu+(5y2znAaosqpE3d!Cal__wehvVr@}Me(=RpO z)Vo#14{V^UD84zPQM(N!0wk*-Ucg9v01Yrs$<%wbLYS}+M~2DwBF+JbBj1BKXXaA_ zamWHJV+Ua+E~uc#IblITrd^Cv5<*IuOR5;PTMDbp$U8A-0;ocs2|hIZt3-0)s|mRa z?jq=@NCE{(eiJ=AA_jhpy+urjau19-2|wisR2Wmt1o;8jDKiBC0p5Zi#?Eh{0j8nV zXA*r1FfaonS^;zDo_WW|yU|3W_=)q~1d#&G%{w=JZ-(!{c06VO9wv|$oyG7jf(Q&d z(~dR*{W=IQ@ey$ms1ZG}5%0=evFR9W>4^zdUc~CfqIiS<-i1pGjlC1PSCCa{MgUQ- zyATLPhW&$zz?U1O@SE;2uUz+-!*vReM%RVJw82NscoR}0vKdqTFl-cl$^=wd;uYJO zXS=bHm7|*x$27Js-z+u;wZe_G;O$RnSM2-J#DTz!MjKco}Ho;0|>2&iw(jS zmcJc>#nR5p4iExB8Wv1wRGErfcn5Y!);v(Vtw2K6B$=Wv*Wa>yiOLC(cVZB77zD;G zq?C;lAUhcs@OvoJ@40QA97y~kK`a1+%He7E2^d)>UsxmTo01Um!OZJ<}=6_u&@i!~_P8To4X%05a(eYmAEu zi3AAGJK&%p5Bt6t1HV`Ifx!jN5%R`#vLjey7*Xsd$T~YGD27ssi1!hvBQ`QPvK<>- zF-Zm^Exrh_WPlHjQw$~~BWM%YK+?TpA`M0v2zBfN>F&6qg2SZyz(bQ&1^MNA9deOk z)`5bw%|LS-dy@Om%7`#@GNDu0r=sD_Fwx4~?=js$c^JAT;ivoyRN!s-h`O#~?U7vV zk=5CJ?I+puujsZS9m>(*eHH1U96hwob``qM6uZZB-Q&-?^WEV*JN=M)$p)6Ff1{a# ze}B<`A?LsF>{!u1o%2tZnszOJ{GzG*q3=~w=gMrpsej2=Vw!Tyo>E}f(&bly*1x^+ zgkHUo-!uHQ{rkY^LwboUF%7>xvoi3HgMUBx52uP9gU>q#*UlC@h6^3T>w%tP;AAdv za_!hNG9L)%YQh^XqVXL0Gf0?*?B%y*46;wLj2ZnukTC{-VJ?Mbjk0y@!N%RrTV8W) zbwtACvkKHO#glfWlycod20Sj)M@)&Aa);eEd0|PEu)A8`fU#n_ZFHD6SBrr+04fut z99XOrcII4R8thg#C{e_*?#wq^aqPSR0V~9gm;*4^+M`1DC;37Xuud&Zm(DG#tEwiY%vWYS1 zybC{N1uBb2kLGHRt}f(j&jOD^goHVqW5AgyGQ&A$xWqOs)xJWk*q`(FuO7?$&t%8f znY}9~^31{P=uZrbN4%_WdK`aI-;uqrUf;TWJzsw~d!alsuR*lOS?!6>6lw_C(&Q@~|~w$rr73|kC2M4(u%TV#qan={bFNimSn z(##^FRjg`|#I7Pw&^QJ?Vfzb|iXw903nBe5lZ2RQZ>AncJ3(8_!dUE$Wc-4P3~~X5 zW+PJURNwia1BKh}LnKa&>8%lyLAD|tO8x|niRnjo;kD&Y;X}3eBcDTKQ1vzHL&TXS zUea}1LuY~R{DEy>uiv%Y^?iN&l54&B@anmI^Vy}EpP1%{L#04luBL5+CK~o4Q>^}N zF-ZY1EGF-RNU&kaFq&)_;vFU)EP(+61`7-j7k1%DjPR}z)7j)7>n$yBBhSm9WUNe#XP|9J5W2&X}vVK=d=URV7g(_pZ- zIWw6MWQdESN2cZAC~ou$2_e3yNQ#m8z?R&md3VzZFdJR?k!h>~IV(bhT#D+n*{DgS zL*&;KVV@C1#C#PO?p3wH4)B=NA%^(k_ywmY9r(TtH{ox3 zhZ6WNz!4|`V$u>h@S$8Fw`!>X2%nI=6N>>*^R2{m`*E;Vu)wGA*R$Bqb?}DxAHr{2 zLj~K^6dRC4vDALpmc=vs2T4oyK%B6ZXxk?G$+1F{F%3=5Dpg|w=T`Z+}Xy^uqL$AmlumnDax()U<=X&VfT4$*YPwpCUGnwy~w zHa!U;9c0_U{@rfBIF8GSssM1(23YgXN-+R&`b~kQ8g{Z@r!&Dx;L2*)9^_~ z)jy-YEL6aP5E&1C8(coWGMaA)W-pfL25m=wf$lG{yPuas>J5+Q3iL-SgIfR9LdVro z3-@;?{%}I;Jhs-DZ#k`bcCNF#wA}~(3DR+gitJ4d{*Ih09+`Z8WKz3&BY)(k=DAs7 z{EtpNJfSspKWWS}y{kRXnNu2d${;~Iky-BAJ}e<@frYZG0=u>fq;PHVR@+$08e%nI ztd)`lyArK~3phEDGzMD*}eQUX(EAAzE0;iy;dqMDmoC{X%KvEpla5!Fm^1 zyeOq&tb+pGn+mK$OL7%>(lI2Bu98`8W89js4Tsf%*G0Kz_NeK|yU?Uf=e0FI(0y~dG%{y3VkVPX6ZPGf^=LwE#HGK#HGr=LiMwgB*_hj zlce5w2(so+1p6b=_9L6fh0b2AwXGRn$ zQC4mXbVuOPaOV8y|Ihz_|Ks&%*pebp8m; zFE{6p()ovB{*iEgE^fw*v53n!P)$&(NuWC0q*~+hLP)iN%VC)Rm(BTWT#mMInToh@ zz$Ht$&h=JP3+Go3VGtl@cso^wP4 z=US-FQ@vf-Vn>APwT?Tw*px8zolAh~*WnrYBUG0=QQi8c1JxTL)doEfZU3w}f6e2r zg!8E$u6E>7Xi}}oW<*p(wrd@Et?g)y*PAU=Z$-SWH}P`=B>d|pubb3Q-v&Lr(?a!= zP7)gLHmO1h-vg>!EmVb$yuNNyg}iP96$+_3?&#;u`D;5eBQ9X2Q?Y8lVU04AHhR5_ zVNRneVynn3V%8~pY|;Gyb9UMC+1aw~IxhCui7RhhdvlVt%CobmWc%54y72lNr!Snn zaK^aC&Z3IXp1O3Q`I@bk*$Vc!Qy17-Ttzl4pJmS=Ylej!sf;v#4eR_ehvkS*Ed1*Rp0X z2rxI}!p>Gz!y*r}e$_1&*@}mKkcUN8_WYTXr;nvswlZIxDVIdnw>-B}^>cLj0#SH@ zD7+9dDuj&uY-K)u3ij!OF+vyg;AuFEn1eMjF0nJPTaIJr5Y;(L7b52H zFjx)D4l1ct$a1hp1bAuJ%(e3;L(NcAm1?sl_CWYD-TxHp)k>X|;9&osu-I}Hs>O&)TzvuP{7 zT0X&la4zymJUtCJ_n7O7}E`zc_L{NF09(Qy7a3t5*VUMv3BVxETS(+-p(Y6;SE=ONt&0 zF=v769BjyoU5~-H6vI^FH{xRaL*`!hLFOWqyS>Z-=HkxqzY!Z{ARs0{$fDa~0S0TKFMD}1?h#QN-EI}n`jcH=l6>m|m3lpJ=Mza;mi0gi zrjY?(rrH6>c?0ldH<>a8!+*j4{&V-pSGy;^*gf%2yI=UTzWY7@JiPP%tINaBKREhj z-~Ojv%=TR{Jb(0SpD_F=%g5S~Ml1--5>L;qYQaKFH*+w^wu#E%>(jHNd2ZswL zLSU$;Uh=L$n0UkRjsVEt2LtFRv-839Qs%%zZz(hKNL|Vt{p9RYMhp_7M~*RV8X;<; z8aY5o-;KdPdfkXgk&hZNZJK&jynbzSuUg#$0+%CcBuo(#ZWd=*x9Ybl1{|N(H){2XJH#!^bB(CL7)H;Kn~@4m~oy$czVx@r~Of{zbR< z4r~lUOAI!1lVR*PNFdoPh^#Yzo53sb>u{uNg+K)kckryc^;sWdB(HZFJ?oyOU|#RK zXK9$1X@4f9Mv0_-zXwVCJ4ib4!z48Z!3l=yQ!P%gq3oamV$BV*jpVdjovE3P1gUKr z$uL2Fb6}=gt@y`sx$tckD00?3q(>;U?v!(l1gU|(N#@LA*~~SPWI?yuh~*lo)w1ZD z_~@lZf+SYTqKM44MdADUMZZbqxNt#l2Y`h-+hl@9C>op^vH3>Kq~T<2Y&Av=MkNT5 zzEJau9?4LX@bUi+28iQ5z4vea>CgV9Z`XslrM`oY;!Ay_kIpXj9lal0?(4rl^YKNv z*_L}8dp!2*-cNq|+1SFi1?@L`7y1{kF1{aJ{mJKlyjTw2D+ISuV9qSvc7wv5VDN5` zy1V=x7oJ$iFWmgiiwhiC)(Eb>w{-PZaHS9wU|}n;?<|>j15^wKXM@!2Z!`TH9f-td z>OjAu8~c_n(-twQ%d|UD7eKDfiHQElH4VJ>F-BsPF}eY&$#%yude+l{qov^4I;Rqn z0LgTn>jcR#E@b{jFq0voa4#h)#d=-WIxiQfGpaasdHwKHW!`e`UH7Ym-8_9(VnfMkA5Cv1i57ed9-iNO)r4Byo zSxQaZJGq?dy+84B25vHa_iy~gu|Gfd+re$i{nF#Bk3abJ+mA1P_Tge|as2c2!XE|K z00%g5K3KBn0_(#dGan@8LmYrDnpYDCPbkl3AeFy&AO!?~G3|0r5cEg)>wkI|P zu01p;{t&JNFYCGXK8vf71~g^rXIjwYp*g51OI4_L$SJ6KKw1q$tm8u250x*;^3!l| zDbWJdt!BOFKz|-7Y3kf6vS77r81ZU8_M&yyqs-e&2uYUqNUHZn$S?{+y$1pqERowJ zex<`OS@36&cLe4~@EVKCtv(+k13ySun;@z~;2 zaQ#Mb^X=drd+8<)ZaBf>(;awcw&rd00VwgK`1rqoVGGc;=FB|{eTyd-QE=s* z&u144!MnGDf)(7dgFzgm@V7+X#KN(KDYC}Zz<77*%6p4{65P5SAROF|5ZnY|R1JfO z6o4TJJu30H%ZfA)wq-`6Eh_@tx&%^QwneA*!csd=EAb?nf_gTx{pt~y#2Qi{g$ECJ zwo)XAcJh>DsPO3oop6*L=PY-eefeej3fdp(8_*!3hvlg#W>uqzMUKmGJb@;VSDvNs z{1UXXX3EuY+3?^T(w{{|AF~rUJDp`|s)P_o8cA^WueuJhs?fihDZ>=nj)H{&iXN`{ zq^ZWiYiKw5+-eN<(`Kz2&2K$Ygk;cibD%DS!)GWk=^e4qSs~&&xC%`toAq%8k@igy zdNMTRQdHNwfGSM(BxQ$bI6RVu1z&=k)9IPCiP%F#Z3Wx)uvIP2L+8nZUQDG7O};|4 zT%dV`%E!fr%F@6{&_DV}3^L=NNRNB|=H<_J zEggO3i_9xQ;+2i{7eO5jcR%WhHP;e0)(Y$v^pFl`OTE6Pz0D4zR6+DGN-C4v@acFM zRhBX@d;)_IB!qCY%>yTpG&f74%Em?zM7&sCT8H{b%FbP#=w+5l{b`IwD4%c~i+T;@ zfEi8lNbd;4$M2`yS9>u*g54-7m?Z4HyaYGvJ1_0cgzfNi;2oI%VeDS~Qg<2->ZF^} z!(2*69hDctjtaCrNavU6ka*m*>sO)O7B*j3_i;H?KY>{5HhQ3wQUH^AFT#sEY2pifCzhS>=%?IJ_h)CNC&h&;?jt zmU-_5m|kb|qNb?4XmOgYIh>?g4u^OVWL1zT3Ytli9Q6K3Tc+&Q_mIuO(XnN7v&b!x z-83c?*|7!FL4u@evM6CBnU-u>j>tQT=~xOvrV5;`dOBJTqEBN2!H!MYRBeHmMGFh2 z;HbPJnU17@N)$&G9NiIhvCd*alw?~mIYAJ3PRdJ&(@ita2?{bbEGYGDZ5H%P^LOjp z$;gpH62t`MlNel2hXFQ}S`tN7%<}?50)m#dD)54e;TG{Sk8F%|$2R%A3j8g}&Z~|o zalC8`oTTXzXIe<*93hWokfF|sShs8$V@`5xkpn|IoQY(eQ*24h+t{k_4QQV`}*o|hC|vk^dt$FR7JO+i&1i^qDsH>3aqt}5LG zH-(NjX?WFp!(CRngphS5|f?`U})V+A8b z@AHDJo4l%Oj*NNBaa6=Rs4*dFrfu4y$;-Me$zT|)AuI!I6peS_rKJdb9@*NetPYfe z*sFL@7}onKKzs|8O7OHku~D$qj9nlz3j{!+e7a>xmd^9ombJVlO1hXwx~wZm(oLBc zMN@Sgloy<4VDX_OT`K?@$K%gxbyjl_a zS%0Q6kHYTvG zX%N0l1%q;Q@ETi_U{i{2>VVk1u7D2JybYcM7}a@25jgNYo0D`&b=C%#7O-G(im0pLkpjdwtSS&Q zR9kmUR6p3ZZlzW%!Vh9K&<7k=NnZ}!UUPI1!{SWcmN`iQf7UEp;lw=ny`yij1O&@E z3n2{zk{wR8U{8{+KwQ9ig;N}au$~v!?anWkkk{z7kw0UWk!M4YR6z5BDMKRAG=M$P zjS6T-$hHx$VG%jVw|+-WLT7L`zO-go`51w>0e_b@d#fE@ydWFZS8 zKbB2fMY58&HAR+HY=gc8kXEqsbrzO(ct8VZLh$7zh_sxpA&tWj=<^`bDv~2mO=F1N zt_7YBi_4H<6p`0SvJzFuIi?M>HQHyAVmp&Np=f^=OZiOp0^;NU>AFl8`21ZZSg zdArW4CU#5}S)6S{)|0TNb4avRPL?$cx|A;z>Fk8+fuO8LP*h45#3BS2UcAJ=qnHiDc3t zGK{XIKkONZuM9BV`<7Ef%YDPkL%V|A((=%rVBfjrq20?n_5}ydFYnm%@YG6o*WTfk zo}QfpD??2G4w(2bLuc#__McncaX1(|A5Q5`?iyIxKD0f(GQ#w33)g(uOPAEPT(WPA zC6A0ANUjW0p|8i7?%gd?bHL)^r8W+){(ljAPjcl(j7ohw&U7DckviW&F`dMYhl+V< zfT|yv>owgqJeFKRamwLrSF2tgroJVE$e5cj*us>ZB#unE$%02lK_}hd@I?e4>}U&R`3beD?)u06Eh`CBBsUgOT|46qWeRUZ#6*6L$}PEF+g?i6LWR?I|lg@j*L_PC2;~i>-FiH4H4~LKg4#x9J|FgGyrS zv_BALw@oXFu3=Erd;N45uR^sl@@z$YKLj04uACa6EM|a3i<|veyZF5zXn*o|E|vPD IG_4!|4|POaKmY&$ diff --git a/scripts/__pycache__/live_docs_queries_data.cpython-314.pyc b/scripts/__pycache__/live_docs_queries_data.cpython-314.pyc deleted file mode 100644 index 54bca5323888555fb871def82a136a57af5db0af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3570 zcmbtWS#R4$5MIh;>`1=iBX%6yTE~fF*^#Krj-13fkgINvCd^TwO{-EAWiysYb-A)3 zzSKXV4+Yx4kk|ea<{^M#pg@532e3)siUOUbOlc+CY0wbTU}re{&B@(a?C%RBcz$#K zG5+pD=y%2h&&dAb{jadtK?3WCz5h(IOf7|?E|2k3Dn3^bzj0_{`!fet8x zKu;(`K!=qPprgu3pkvB7&{N6;(9_B!&?#jaXjH*KXOuGqfeOkjSUL-K&ViLVuyGzN z%maQ5&=&xE5il<(qjH#rl=v8;T}lF|sK`JiB{_>?DK#u0bW5cwrfQ+AI74RmUTM@cEbnl`mP4BHYLm#zzO0>gq?Gn zzH4Q}rdT((3_z~vCbe-qZq;bDMps|jmg$V~?_{lB&|fX0wqteMj#r6Q z?0{)A!NJIZet=iD)_L8d@XjCMRufOww^%gJA{VA@LKQbGh%vC*;pJ3Q<4_l4t&ju7 zqmXc*U>}Ag$5T$W0ai3hrIxY}SJ0tJkMM8>;*PUD9PBk_t7_OAsa3X%ZJ!H7Xau<@1HX)()6{GsmrG?XW^%>loSsW(3u;jtwhN3@ouOJdgzb0Ge)Uw)I1hGG~)Z_rCYI8PN4l zjiV!ln;&*Y=BoF}DRdV2bhSDuPU}^;CEAbaS*>PMs}ko*+|c8a=B#k3>cGP`^j%qx z`(@jzm054{Rmgq>zTAo7%y1D@t+JsR2OJ*`0J3Ksp z2vD=1xoyrE=M;a7IHN7AoIDVBTujag2h%+4ouL*+APh8FQ?^ceXOP?PAD&KsYcCTx z11;V^n*vYRmCMyxgSn>pgkaT$koca>Ydh#UdeMBf0xKAV1ZPdrX^oipDXHn$C3P`P#55D!+;6_ zzKsn1RCyhlb;a5DAV7yFW75}crQ$idFu}ANkDrwL`$=J=)PD?5{^-c`*1>H!*bn3^ zL7)VPNI+~q3#1#Cd%X;|8At>~GSg@T@<(L+m$5gI8CRSk$3gtR1G&Zpa<6mx>~Q^% zKoc=xuO}E2*}CC$rN~FpqgIVPn`X%XxSHjo82<6IH<2kWlz5|#je|10F{Hj>nHrD7FpW&J7{g7++Y_G6%4mmmm#h9p7s`iFW$yW*l7zvFem z@~xP5v(G&VmfkTWW!&sHUN>WUkd$^aig%nbVI(Ep)Dthlm|i4ZcCT!EeT?Zx(m8i7 z=M6As&{uoponXw6kM`6XX3PkZz7jlyUI==~8)cG{NcuJelJ7#Q=#4SSIFc^8m%sK- zF=hfugl(XL+U1>Ql1U_`-1L{;6l125bX{<7Y1)B+>L&|E5iEOu6WXoUfUH%e95RArJxDcaUHykoCxjo Uy_*aPXWxZG!kNE-O#3PS7vE@Wz5oCK From 57ad912abba4b4d88ed713d2393010b4aae79c7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Gr=C3=B8ndahl?= Date: Fri, 8 May 2026 16:02:06 +0200 Subject: [PATCH 4/4] fix: escape MDX-breaking chars in helm chart reference --- helm/k8s_reporter.mdx | 223 ++++++++++++++++++++++-------------------- 1 file changed, 115 insertions(+), 108 deletions(-) diff --git a/helm/k8s_reporter.mdx b/helm/k8s_reporter.mdx index ec829d1..e445d6e 100644 --- a/helm/k8s_reporter.mdx +++ b/helm/k8s_reporter.mdx @@ -29,61 +29,63 @@ Version 2.0.0 removes the previous single-environment mode (`kosliEnvironmentNam To install this chart via the Helm chart repository: -1. Add the Kosli helm repo -```shell -helm repo add kosli https://charts.kosli.com/ && helm repo update -``` - -2. Create a secret for the Kosli API token -```shell -kubectl create secret generic kosli-api-token --from-literal=key= -``` - -3. Install the helm chart - -Configure **reporterConfig.environments** (required). Each entry has required `name` and optional `namespaces`, `namespacesRegex`, `excludeNamespaces`, `excludeNamespacesRegex`. Omit namespace fields for an entry to report the entire cluster to that environment. - -**One environment, entire cluster:** - -```yaml -# values.yaml -reporterConfig: - kosliOrg: - environments: - - name: -``` - -**One environment, specific namespaces:** - -```yaml -reporterConfig: - kosliOrg: - environments: - - name: - namespaces: [namespace1, namespace2] -``` - -**Multiple environments with different selectors:** - -```yaml -reporterConfig: - kosliOrg: - environments: - - name: prod-env - namespaces: [prod-ns1, prod-ns2] - - name: staging-env - namespacesRegex: ["^staging-.*"] - - name: infra-env - excludeNamespaces: [prod-ns1, prod-ns2, default] -``` - -```shell -helm install kosli-reporter kosli/k8s-reporter -f values.yaml -``` - -> Chart source can be found at https://github.com/kosli-dev/cli/tree/main/charts/k8s-reporter - -> See all available [configuration options](#configurations) below. + + + ```shell + helm repo add kosli https://charts.kosli.com/ && helm repo update + ``` + + + ```shell + kubectl create secret generic kosli-api-token --from-literal=key= + ``` + + + Configure **reporterConfig.environments** (required). Each entry has required `name` and optional `namespaces`, `namespacesRegex`, `excludeNamespaces`, `excludeNamespacesRegex`. Omit namespace fields for an entry to report the entire cluster to that environment. + + **One environment, entire cluster:** + + ```yaml + # values.yaml + reporterConfig: + kosliOrg: + environments: + - name: + ``` + + **One environment, specific namespaces:** + + ```yaml + reporterConfig: + kosliOrg: + environments: + - name: + namespaces: [namespace1, namespace2] + ``` + + **Multiple environments with different selectors:** + + ```yaml + reporterConfig: + kosliOrg: + environments: + - name: prod-env + namespaces: [prod-ns1, prod-ns2] + - name: staging-env + namespacesRegex: ["^staging-.*"] + - name: infra-env + excludeNamespaces: [prod-ns1, prod-ns2, default] + ``` + + ```shell + helm install kosli-reporter kosli/k8s-reporter -f values.yaml + ``` + + + +Chart source can be found at [GitHub](https://github.com/kosli-dev/cli/tree/main/charts/k8s-reporter). + +See all available [configuration options](#configurations) below. ## Upgrading the chart @@ -105,28 +107,31 @@ If your network sits behind a TLS-inspecting appliance (Zscaler, Netskope, Palo The chart offers two ways to do this. Use whichever fits your deployment flow. -### Option 1 — `customCA` convenience wrapper (recommended for the common case) - -1. Create a Secret containing the corporate CA certificate (PEM format, single cert or bundle): - -```shell -kubectl create secret generic corporate-ca-bundle --from-file=ca.crt=/path/to/corporate-ca.crt -``` - -2. Enable the wrapper in `values.yaml`: - -```yaml -customCA: - enabled: true - secretName: corporate-ca-bundle - key: ca.crt -``` +### Option 1 — customCA convenience wrapper (recommended for the common case) + + + + PEM format, single cert or bundle: + + ```shell + kubectl create secret generic corporate-ca-bundle --from-file=ca.crt=/path/to/corporate-ca.crt + ``` + + + ```yaml + customCA: + enabled: true + secretName: corporate-ca-bundle + key: ca.crt + ``` + + The chart mounts the certificate as a single file at `/etc/ssl/certs/kosli-custom-ca.crt` using `subPath`. Go's standard library on Linux loads CA roots in two independent passes — it reads the system bundle file (e.g. `/etc/ssl/certs/ca-certificates.crt`) and **also** scans `/etc/ssl/certs/` for additional certificate files. The mounted file is picked up by the directory scan and added to the trust store alongside the system roots, so no `SSL_CERT_FILE` env var is needed. The wrapper deliberately does **not** set `SSL_CERT_FILE`. Setting it would replace the system bundle entirely with the customer's file, breaking trust for any public CAs the bundle does not include. -### Option 2 — generic `extraVolumes` / `extraVolumeMounts` / `extraEnvVars` +### Option 2 — generic extraVolumes / extraVolumeMounts / extraEnvVars Use these when you need a non-default mount path, a ConfigMap instead of a Secret, multiple volumes, or any other shape the wrapper does not cover: @@ -142,7 +147,9 @@ extraVolumeMounts: readOnly: true ``` -Note: if you mount the CA outside `/etc/ssl/certs/` and set `SSL_CERT_FILE` via `extraEnvVars`, your bundle must include the public CAs you also need to trust — Go uses only that file when `SSL_CERT_FILE` is set. + +If you mount the CA outside `/etc/ssl/certs/` and set `SSL_CERT_FILE` via `extraEnvVars`, your bundle must include the public CAs you also need to trust — Go uses only that file when `SSL_CERT_FILE` is set. + ### Pod Security Standards @@ -157,55 +164,55 @@ If you already run [cert-manager's trust-manager](https://cert-manager.io/docs/t ### General - specifies how to treat concurrent executions of a Job that is created by this CronJob + Specifies how to treat concurrent executions of a Job that is created by this CronJob. - the cron schedule at which the reporter is triggered to report to Kosli + The cron schedule at which the reporter is triggered to report to Kosli. - specifies the number of failed finished jobs to keep + Specifies the number of failed finished jobs to keep. - overrides the fullname used for the created k8s resources. It has higher precedence than `nameOverride` + Overrides the fullname used for the created k8s resources. It has higher precedence than `nameOverride`. - overrides the name used for the created k8s resources. If `fullnameOverride` is provided, it has higher precedence than this one + Overrides the name used for the created k8s resources. If `fullnameOverride` is provided, it has higher precedence than this one. - any custom annotations to be added to the cronjob + Any custom annotations to be added to the cronjob. - custom labels to add to pods + Custom labels to add to pods. - specifies the number of successful finished jobs to keep + Specifies the number of successful finished jobs to keep. ### Image - the kosli reporter image pull policy + The kosli reporter image pull policy. - the kosli reporter image repository + The kosli reporter image repository. - the kosli reporter image tag, overrides the image tag whose default is the chart appVersion. + The kosli reporter image tag, overrides the image tag whose default is the chart appVersion. ### Reporter configuration - whether the dry run mode is enabled or not. In dry run mode, the reporter logs the reports to stdout and does not send them to kosli. + Whether the dry run mode is enabled or not. In dry run mode, the reporter logs the reports to stdout and does not send them to kosli. @@ -213,107 +220,107 @@ If you already run [cert-manager's trust-manager](https://cert-manager.io/docs/t - the http proxy url + The http proxy url. - the name of the Kosli org + The name of the Kosli org. - the security context for the reporter cronjob. Set to null or {} to disable security context entirely (not recommended). For OpenShift with SCC, explicitly set runAsUser to null to let OpenShift assign the UID from the allowed range. Simply omitting runAsUser from your values override will not work because Helm deep-merges with these defaults. Example OpenShift override: securityContext: allowPrivilegeEscalation: false runAsNonRoot: true runAsUser: null + The security context for the reporter cronjob. Set to null or {} to disable security context entirely (not recommended). For OpenShift with SCC, explicitly set runAsUser to null to let OpenShift assign the UID from the allowed range. Simply omitting runAsUser from your values override will not work because Helm deep-merges with these defaults. Example OpenShift override: securityContext: allowPrivilegeEscalation: false runAsNonRoot: true runAsUser: null. - whether to allow privilege escalation + Whether to allow privilege escalation. - whether to run as non root + Whether to run as non root. - the user id to run as. For OpenShift environments with SCC, set to null (runAsUser: null) to allow automatic UID assignment. Simply omitting this field will not work due to Helm's deep merge with chart defaults. + The user id to run as. For OpenShift environments with SCC, set to null (runAsUser: null) to allow automatic UID assignment. Simply omitting this field will not work due to Helm's deep merge with chart defaults. ### Kosli API token - the name of the key in the secret data which contains the Kosli API token + The name of the key in the secret data which contains the Kosli API token. - the name of the secret containing the kosli API token + The name of the secret containing the kosli API token. ### Environment variables - map of plain environment variables to inject into the reporter container. For a single-tenant Kosli instance, set `KOSLI_HOST` to `https://.kosli.com`. + Map of plain environment variables to inject into the reporter container. For a single-tenant Kosli instance, set `KOSLI_HOST` to `https://INSTANCE_NAME.kosli.com`. - additional environment variables to inject into the reporter container. List of {name, value} or {name, valueFrom} entries, rendered verbatim into the container env. Supports plain values and valueFrom (secretKeyRef / configMapKeyRef). Note: entries here are appended after the chart's own env entries; on duplicate names the later entry wins. + Additional environment variables to inject into the reporter container. List of `{name, value}` or `{name, valueFrom}` entries, rendered verbatim into the container env. Supports plain values and valueFrom (`secretKeyRef` / `configMapKeyRef`). Note: entries here are appended after the chart's own env entries; on duplicate names the later entry wins. ### Volumes - additional container-level volumeMounts for the reporter container. Rendered verbatim into the container spec alongside the chart's own mounts. + Additional container-level volumeMounts for the reporter container. Rendered verbatim into the container spec alongside the chart's own mounts. - additional Pod-level volumes to attach to the reporter pod. Rendered verbatim into the Pod spec alongside the chart's own volumes. Use together with `extraVolumeMounts` to mount Secrets, ConfigMaps, or other volumes into the container. + Additional Pod-level volumes to attach to the reporter pod. Rendered verbatim into the Pod spec alongside the chart's own volumes. Use together with `extraVolumeMounts` to mount Secrets, ConfigMaps, or other volumes into the container. ### Custom CA - convenience wrapper for mounting a corporate / custom CA bundle. See the "Running behind a TLS-inspecting proxy" section of the README for usage. + Convenience wrapper for mounting a corporate / custom CA bundle. See the "Running behind a TLS-inspecting proxy" section of the README for usage. - enable mounting a corporate/custom CA bundle into the trust store + Enable mounting a corporate/custom CA bundle into the trust store. - key within the Secret that holds the PEM-formatted CA certificate (single cert or multi-cert PEM bundle) + Key within the Secret that holds the PEM-formatted CA certificate (single cert or multi-cert PEM bundle). - name of an existing Secret in the same namespace containing the CA bundle + Name of an existing Secret in the same namespace containing the CA bundle. ### Resources - the cpu limit + The cpu limit. - the memory limit + The memory limit. - the memory request + The memory request. ### Service account - annotations to add to the service account + Annotations to add to the service account. - specifies whether a service account should be created + Specifies whether a service account should be created. - the name of the service account to use. If not set and create is true, a name is generated using the fullname template + The name of the service account to use. If not set and create is true, a name is generated using the fullname template. - specifies whether to create a cluster-wide permissions for the service account or namespace-scoped permissions. allowed values are: [cluster, namespace] + Specifies whether to create a cluster-wide permissions for the service account or namespace-scoped permissions. allowed values are: [cluster, namespace]. ---