manifesto-cloudsmith 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- manifesto_cloudsmith-1.0.0/PKG-INFO +252 -0
- manifesto_cloudsmith-1.0.0/README.md +222 -0
- manifesto_cloudsmith-1.0.0/manifesto.py +1864 -0
- manifesto_cloudsmith-1.0.0/manifesto_cloudsmith.egg-info/PKG-INFO +252 -0
- manifesto_cloudsmith-1.0.0/manifesto_cloudsmith.egg-info/SOURCES.txt +9 -0
- manifesto_cloudsmith-1.0.0/manifesto_cloudsmith.egg-info/dependency_links.txt +1 -0
- manifesto_cloudsmith-1.0.0/manifesto_cloudsmith.egg-info/entry_points.txt +2 -0
- manifesto_cloudsmith-1.0.0/manifesto_cloudsmith.egg-info/requires.txt +2 -0
- manifesto_cloudsmith-1.0.0/manifesto_cloudsmith.egg-info/top_level.txt +1 -0
- manifesto_cloudsmith-1.0.0/pyproject.toml +47 -0
- manifesto_cloudsmith-1.0.0/setup.cfg +4 -0
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: manifesto-cloudsmith
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Inspect, analyze, and manage Docker images in Cloudsmith repositories — multi-arch support, vulnerability scanning, and bulk cleanup.
|
|
5
|
+
Author-email: Colin Moynes <colinmoynes@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/colinmoynes/Manifesto
|
|
8
|
+
Project-URL: Repository, https://github.com/colinmoynes/Manifesto
|
|
9
|
+
Project-URL: Issues, https://github.com/colinmoynes/Manifesto/issues
|
|
10
|
+
Keywords: docker,cloudsmith,container,manifest,registry
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Intended Audience :: System Administrators
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
24
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
25
|
+
Classifier: Topic :: System :: Software Distribution
|
|
26
|
+
Requires-Python: >=3.8
|
|
27
|
+
Description-Content-Type: text/markdown
|
|
28
|
+
Requires-Dist: rich>=10.0.0
|
|
29
|
+
Requires-Dist: rich-argparse>=1.0.0
|
|
30
|
+
|
|
31
|
+
# Manifesto
|
|
32
|
+
|
|
33
|
+
<div align="center">
|
|
34
|
+
<img src="assets/manifesto-logo.png">
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
**Analyze your Cloudsmith repositories with a hierarchical view of your Docker images, including
|
|
38
|
+
manifest/lists (tags), digests, platform support, Cloudsmith sync status, and download statistics.**
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
> [!CAUTION]
|
|
44
|
+
> This project is an independent, community-developed tool and is **not** affiliated with, endorsed by, or supported by Cloudsmith Ltd. It is provided "as is", without warranty of any kind. Cloudsmith Ltd. accepts no responsibility or liability for any loss, damage, or issues arising from the use of this tool. Use at your own risk.
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
This Python script audits for Docker images stored in your Cloudsmith repositories. It interacts with both the Cloudsmith API and Docker Manifest V2 endpoints to provide a detailed analysis of your images.
|
|
48
|
+
|
|
49
|
+
Here is a summary of its capabilities:
|
|
50
|
+
|
|
51
|
+
1. **Visualization & Hierarchy**
|
|
52
|
+
- **Rich Tables:** Uses the `rich` library to render formatted, colored terminal tables.
|
|
53
|
+
- **Multi-Arch & Single Images:** Visually groups architecture-specific images under their parent Manifest List tag, and automatically detects standalone single-architecture images.
|
|
54
|
+
- **Details:** Displays the Tag, Type, Platform, Status, Download Counts, and SHA256 Digests.
|
|
55
|
+
- **Export Options:** Supports exporting analysis data to JSON or CSV for integration with other tools.
|
|
56
|
+
- **Multi-Arch status:** Aggregates child image quarantine states to determine parent manifest status.
|
|
57
|
+
2. **Inspection Modes**
|
|
58
|
+
- **Single Image:** Can inspect a specific image repository (e.g., `my-org/my-repo/my-image`).
|
|
59
|
+
- **Full Catalog:** If no image name is provided, it automatically fetches the catalog and scans every image in the repository.
|
|
60
|
+
- **Detailed View:** The `--detailed` flag expands the output to show every individual child digest and its specific download count.
|
|
61
|
+
- **Summary View:** The `--summary` flag shows a compact one-line-per-image overview with tag counts, architecture breakdown, total downloads, and optional vulnerability totals.
|
|
62
|
+
- **Manifest Inspect:** The `--inspect` flag fetches and displays the raw Docker V2 manifest for a given tag or digest reference.
|
|
63
|
+
- **Filtering:** The `--filter` flag accepts Cloudsmith's package query syntax (`tag:`, `uploaded:`, `downloads:`, etc.) to narrow the scan.
|
|
64
|
+
3. **Maintenance & Cleanup**
|
|
65
|
+
- **Untagged Detection:** The `--untagged` flag scans for "orphaned" images or manifest lists that exist but have no version tags.
|
|
66
|
+
- **Granular Deletion:** Supports deleting specific tags (`--delete-tag`), cleaning up untagged items (`--untagged-delete`), or wiping all detected images (`--delete-all`).
|
|
67
|
+
4. **Data Aggregation**
|
|
68
|
+
- It combines data from two sources:
|
|
69
|
+
- **Docker Manifests:** To determine architecture/OS platforms and digest relationships.
|
|
70
|
+
- **Cloudsmith API:** To retrieve processing status (Synced, Failed, In Progress) and download statistics.
|
|
71
|
+
- For multi-arch tags, download counts are aggregated across the manifest list and its per-architecture children.
|
|
72
|
+
5. **Security & Vulnerability Scanning**
|
|
73
|
+
- **CVE Summary:** The `--vulnerabilities` flag queries Cloudsmith's vulnerability scan results for each image, displaying scan status and counts by severity (Critical, High, Medium, Low).
|
|
74
|
+
- **Multi-Arch Rollup:** For manifest lists, vulnerability counts are rolled up from child images (using max-per-severity to avoid double-counting shared CVEs).
|
|
75
|
+
6. **Cosign Artifact Handling**
|
|
76
|
+
- **Hidden by default:** Cosign signature, attestation, and SBOM tags (e.g. `sha256-<digest>.sig`) are filtered from the output so they don't pollute your tag list.
|
|
77
|
+
- **Opt-in:** Pass `--show-signatures` to include them, where they are labelled with their artifact type (`signature` / `attestation` / `sbom`).
|
|
78
|
+
|
|
79
|
+
#### Query repository for images.
|
|
80
|
+
<img src="assets/simple.gif">
|
|
81
|
+
|
|
82
|
+
#### Query for detailed results.
|
|
83
|
+
<img src="assets/detailed.gif">
|
|
84
|
+
|
|
85
|
+
#### Inspect Docker manifest.
|
|
86
|
+
<img src="assets/inspect.gif">
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
## Installation
|
|
90
|
+
|
|
91
|
+
**From PyPI:**
|
|
92
|
+
```bash
|
|
93
|
+
pip install manifesto-cloudsmith
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**From source:**
|
|
97
|
+
```bash
|
|
98
|
+
git clone https://github.com/your-org/manifesto.git
|
|
99
|
+
cd manifesto
|
|
100
|
+
pip install .
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Once installed, the `manifesto` command is available directly:
|
|
104
|
+
```bash
|
|
105
|
+
manifesto my-org my-repo
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Authentication
|
|
109
|
+
|
|
110
|
+
Manifesto resolves credentials in the following order — the first match wins:
|
|
111
|
+
|
|
112
|
+
**1. Environment variable** — highest priority, recommended for CI/CD:
|
|
113
|
+
```bash
|
|
114
|
+
export CLOUDSMITH_API_KEY=<your-api-key>
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**2. Cloudsmith CLI login** — if you have the [Cloudsmith CLI](https://docs.cloudsmith.com/developer-tools/cli) installed and have run `cloudsmith login`, Manifesto will automatically read credentials from the CLI's `credentials.ini` file:
|
|
118
|
+
```bash
|
|
119
|
+
cloudsmith login
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
If no credentials are found, Manifesto will exit with an error indicating which options are available.
|
|
123
|
+
|
|
124
|
+
## Prerequisites
|
|
125
|
+
|
|
126
|
+
1. **Multi Arch Deletions**
|
|
127
|
+
To ensure that multi-arch images are fully deleted including child digests, ensure that you have the feature flag `Docker Manifest List Cascading` enabled for your Cloudsmith account.
|
|
128
|
+
This feature implements cascading deletions whenever the parent manifest/list is deleted. Please reach out to [Cloudsmith Support](https://help.cloudsmith.io/docs/contact-us) for further assistance with enabling this.
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
## How to use
|
|
132
|
+
|
|
133
|
+
1. **Basic Usage**
|
|
134
|
+
Run the script targeting your Organization and Repository.
|
|
135
|
+
|
|
136
|
+
- Scan a specific image:
|
|
137
|
+
```bash
|
|
138
|
+
manifesto my-org my-repo my-image
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
- Scan ALL images in the repository:
|
|
142
|
+
(Omit the image name)
|
|
143
|
+
|
|
144
|
+
2. **Advanced Flags**
|
|
145
|
+
**Inspection**
|
|
146
|
+
| Flag | Description |
|
|
147
|
+
|-----------------------|--------------------------------------------------------------|
|
|
148
|
+
| `--detailed` | Shows child digests for multi-arch images. |
|
|
149
|
+
| `--untagged` | Show untagged manifest lists and orphaned images (untagged and unreferenced). |
|
|
150
|
+
| `--vulnerabilities` | Show vulnerability scan status and CVE severity summary (Critical/High/Medium/Low). |
|
|
151
|
+
| `--filter QUERY` | Query using Cloudsmith's package syntax (e.g. `tag:latest`, `uploaded:<'30 days ago'`, `downloads:>0`). |
|
|
152
|
+
| `--show-signatures` | Include cosign signature/attestation/SBOM artifact tags (hidden by default). |
|
|
153
|
+
| `--summary` | One-line-per-image summary with tag counts, downloads, and vulnerability totals. |
|
|
154
|
+
| `--inspect REF` | Fetch and display the raw Docker V2 manifest for a tag or digest. |
|
|
155
|
+
|
|
156
|
+
**Deletion**
|
|
157
|
+
| Flag | Description |
|
|
158
|
+
|-----------------------|--------------------------------------------------------------|
|
|
159
|
+
| `--delete-tag TAG` | Deletes an image via tag. |
|
|
160
|
+
| `--delete-all` | Wipes all images and manifest lists detected. |
|
|
161
|
+
| `--untagged-delete` | Deletes any untagged/orphaned images found. |
|
|
162
|
+
| `--force` | Force deletion without interactive prompt. Helpful for programmatic workflows. |
|
|
163
|
+
|
|
164
|
+
**Output**
|
|
165
|
+
| Flag | Description |
|
|
166
|
+
|-----------------------|--------------------------------------------------------------|
|
|
167
|
+
| `--output FORMAT` | Output format: `table` (default), `json`, or `csv`. |
|
|
168
|
+
| `--debug-log` | Enable verbose debug logging to `manifesto.log`. |
|
|
169
|
+
| `--version` | Print the version number and exit. |
|
|
170
|
+
|
|
171
|
+
3. **Examples**
|
|
172
|
+
- Scan all images in a repository:
|
|
173
|
+
```bash
|
|
174
|
+
manifesto my-org my-repo
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
- Get a summary of all tags for a specific image:
|
|
178
|
+
```bash
|
|
179
|
+
manifesto my-org my-repo my-image
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
- See full breakdown (platforms & digests) for all images:
|
|
183
|
+
```bash
|
|
184
|
+
manifesto my-org my-repo --detailed
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
- Show vulnerability scan results:
|
|
188
|
+
```bash
|
|
189
|
+
manifesto my-org my-repo my-image --vulnerabilities
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
- Get untagged/orphaned images:
|
|
193
|
+
```bash
|
|
194
|
+
manifesto my-org my-repo my-image --untagged
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
- Filter by tag:
|
|
198
|
+
```bash
|
|
199
|
+
manifesto my-org my-repo my-image --filter "tag:latest"
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
- Filter by upload date and download count:
|
|
203
|
+
```bash
|
|
204
|
+
manifesto my-org my-repo --filter "uploaded:<'30 days ago' AND downloads:>0"
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
- Include cosign signature/SBOM artifacts in the output:
|
|
208
|
+
```bash
|
|
209
|
+
manifesto my-org my-repo my-image --show-signatures
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
- Quick summary across all images:
|
|
213
|
+
```bash
|
|
214
|
+
manifesto my-org my-repo --summary
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
- Inspect the raw manifest for a tag:
|
|
218
|
+
```bash
|
|
219
|
+
manifesto my-org my-repo my-image --inspect latest
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
- Export results to JSON:
|
|
223
|
+
```bash
|
|
224
|
+
manifesto my-org my-repo --output json
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
- Export results to CSV:
|
|
228
|
+
```bash
|
|
229
|
+
manifesto my-org my-repo --output csv > report.csv
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
- Delete untagged/orphaned images:
|
|
233
|
+
```bash
|
|
234
|
+
manifesto my-org my-repo my-image --untagged-delete
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
- Delete a specific tag:
|
|
238
|
+
```bash
|
|
239
|
+
manifesto my-org my-repo my-image --delete-tag tag
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
- Wipe all detected images (use with caution!):
|
|
243
|
+
```bash
|
|
244
|
+
manifesto my-org my-repo --delete-all
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
# Manifesto
|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
<img src="assets/manifesto-logo.png">
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
**Analyze your Cloudsmith repositories with a hierarchical view of your Docker images, including
|
|
8
|
+
manifest/lists (tags), digests, platform support, Cloudsmith sync status, and download statistics.**
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
> [!CAUTION]
|
|
14
|
+
> This project is an independent, community-developed tool and is **not** affiliated with, endorsed by, or supported by Cloudsmith Ltd. It is provided "as is", without warranty of any kind. Cloudsmith Ltd. accepts no responsibility or liability for any loss, damage, or issues arising from the use of this tool. Use at your own risk.
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
This Python script audits for Docker images stored in your Cloudsmith repositories. It interacts with both the Cloudsmith API and Docker Manifest V2 endpoints to provide a detailed analysis of your images.
|
|
18
|
+
|
|
19
|
+
Here is a summary of its capabilities:
|
|
20
|
+
|
|
21
|
+
1. **Visualization & Hierarchy**
|
|
22
|
+
- **Rich Tables:** Uses the `rich` library to render formatted, colored terminal tables.
|
|
23
|
+
- **Multi-Arch & Single Images:** Visually groups architecture-specific images under their parent Manifest List tag, and automatically detects standalone single-architecture images.
|
|
24
|
+
- **Details:** Displays the Tag, Type, Platform, Status, Download Counts, and SHA256 Digests.
|
|
25
|
+
- **Export Options:** Supports exporting analysis data to JSON or CSV for integration with other tools.
|
|
26
|
+
- **Multi-Arch status:** Aggregates child image quarantine states to determine parent manifest status.
|
|
27
|
+
2. **Inspection Modes**
|
|
28
|
+
- **Single Image:** Can inspect a specific image repository (e.g., `my-org/my-repo/my-image`).
|
|
29
|
+
- **Full Catalog:** If no image name is provided, it automatically fetches the catalog and scans every image in the repository.
|
|
30
|
+
- **Detailed View:** The `--detailed` flag expands the output to show every individual child digest and its specific download count.
|
|
31
|
+
- **Summary View:** The `--summary` flag shows a compact one-line-per-image overview with tag counts, architecture breakdown, total downloads, and optional vulnerability totals.
|
|
32
|
+
- **Manifest Inspect:** The `--inspect` flag fetches and displays the raw Docker V2 manifest for a given tag or digest reference.
|
|
33
|
+
- **Filtering:** The `--filter` flag accepts Cloudsmith's package query syntax (`tag:`, `uploaded:`, `downloads:`, etc.) to narrow the scan.
|
|
34
|
+
3. **Maintenance & Cleanup**
|
|
35
|
+
- **Untagged Detection:** The `--untagged` flag scans for "orphaned" images or manifest lists that exist but have no version tags.
|
|
36
|
+
- **Granular Deletion:** Supports deleting specific tags (`--delete-tag`), cleaning up untagged items (`--untagged-delete`), or wiping all detected images (`--delete-all`).
|
|
37
|
+
4. **Data Aggregation**
|
|
38
|
+
- It combines data from two sources:
|
|
39
|
+
- **Docker Manifests:** To determine architecture/OS platforms and digest relationships.
|
|
40
|
+
- **Cloudsmith API:** To retrieve processing status (Synced, Failed, In Progress) and download statistics.
|
|
41
|
+
- For multi-arch tags, download counts are aggregated across the manifest list and its per-architecture children.
|
|
42
|
+
5. **Security & Vulnerability Scanning**
|
|
43
|
+
- **CVE Summary:** The `--vulnerabilities` flag queries Cloudsmith's vulnerability scan results for each image, displaying scan status and counts by severity (Critical, High, Medium, Low).
|
|
44
|
+
- **Multi-Arch Rollup:** For manifest lists, vulnerability counts are rolled up from child images (using max-per-severity to avoid double-counting shared CVEs).
|
|
45
|
+
6. **Cosign Artifact Handling**
|
|
46
|
+
- **Hidden by default:** Cosign signature, attestation, and SBOM tags (e.g. `sha256-<digest>.sig`) are filtered from the output so they don't pollute your tag list.
|
|
47
|
+
- **Opt-in:** Pass `--show-signatures` to include them, where they are labelled with their artifact type (`signature` / `attestation` / `sbom`).
|
|
48
|
+
|
|
49
|
+
#### Query repository for images.
|
|
50
|
+
<img src="assets/simple.gif">
|
|
51
|
+
|
|
52
|
+
#### Query for detailed results.
|
|
53
|
+
<img src="assets/detailed.gif">
|
|
54
|
+
|
|
55
|
+
#### Inspect Docker manifest.
|
|
56
|
+
<img src="assets/inspect.gif">
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
## Installation
|
|
60
|
+
|
|
61
|
+
**From PyPI:**
|
|
62
|
+
```bash
|
|
63
|
+
pip install manifesto-cloudsmith
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**From source:**
|
|
67
|
+
```bash
|
|
68
|
+
git clone https://github.com/your-org/manifesto.git
|
|
69
|
+
cd manifesto
|
|
70
|
+
pip install .
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Once installed, the `manifesto` command is available directly:
|
|
74
|
+
```bash
|
|
75
|
+
manifesto my-org my-repo
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Authentication
|
|
79
|
+
|
|
80
|
+
Manifesto resolves credentials in the following order — the first match wins:
|
|
81
|
+
|
|
82
|
+
**1. Environment variable** — highest priority, recommended for CI/CD:
|
|
83
|
+
```bash
|
|
84
|
+
export CLOUDSMITH_API_KEY=<your-api-key>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**2. Cloudsmith CLI login** — if you have the [Cloudsmith CLI](https://docs.cloudsmith.com/developer-tools/cli) installed and have run `cloudsmith login`, Manifesto will automatically read credentials from the CLI's `credentials.ini` file:
|
|
88
|
+
```bash
|
|
89
|
+
cloudsmith login
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
If no credentials are found, Manifesto will exit with an error indicating which options are available.
|
|
93
|
+
|
|
94
|
+
## Prerequisites
|
|
95
|
+
|
|
96
|
+
1. **Multi Arch Deletions**
|
|
97
|
+
To ensure that multi-arch images are fully deleted including child digests, ensure that you have the feature flag `Docker Manifest List Cascading` enabled for your Cloudsmith account.
|
|
98
|
+
This feature implements cascading deletions whenever the parent manifest/list is deleted. Please reach out to [Cloudsmith Support](https://help.cloudsmith.io/docs/contact-us) for further assistance with enabling this.
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
## How to use
|
|
102
|
+
|
|
103
|
+
1. **Basic Usage**
|
|
104
|
+
Run the script targeting your Organization and Repository.
|
|
105
|
+
|
|
106
|
+
- Scan a specific image:
|
|
107
|
+
```bash
|
|
108
|
+
manifesto my-org my-repo my-image
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
- Scan ALL images in the repository:
|
|
112
|
+
(Omit the image name)
|
|
113
|
+
|
|
114
|
+
2. **Advanced Flags**
|
|
115
|
+
**Inspection**
|
|
116
|
+
| Flag | Description |
|
|
117
|
+
|-----------------------|--------------------------------------------------------------|
|
|
118
|
+
| `--detailed` | Shows child digests for multi-arch images. |
|
|
119
|
+
| `--untagged` | Show untagged manifest lists and orphaned images (untagged and unreferenced). |
|
|
120
|
+
| `--vulnerabilities` | Show vulnerability scan status and CVE severity summary (Critical/High/Medium/Low). |
|
|
121
|
+
| `--filter QUERY` | Query using Cloudsmith's package syntax (e.g. `tag:latest`, `uploaded:<'30 days ago'`, `downloads:>0`). |
|
|
122
|
+
| `--show-signatures` | Include cosign signature/attestation/SBOM artifact tags (hidden by default). |
|
|
123
|
+
| `--summary` | One-line-per-image summary with tag counts, downloads, and vulnerability totals. |
|
|
124
|
+
| `--inspect REF` | Fetch and display the raw Docker V2 manifest for a tag or digest. |
|
|
125
|
+
|
|
126
|
+
**Deletion**
|
|
127
|
+
| Flag | Description |
|
|
128
|
+
|-----------------------|--------------------------------------------------------------|
|
|
129
|
+
| `--delete-tag TAG` | Deletes an image via tag. |
|
|
130
|
+
| `--delete-all` | Wipes all images and manifest lists detected. |
|
|
131
|
+
| `--untagged-delete` | Deletes any untagged/orphaned images found. |
|
|
132
|
+
| `--force` | Force deletion without interactive prompt. Helpful for programmatic workflows. |
|
|
133
|
+
|
|
134
|
+
**Output**
|
|
135
|
+
| Flag | Description |
|
|
136
|
+
|-----------------------|--------------------------------------------------------------|
|
|
137
|
+
| `--output FORMAT` | Output format: `table` (default), `json`, or `csv`. |
|
|
138
|
+
| `--debug-log` | Enable verbose debug logging to `manifesto.log`. |
|
|
139
|
+
| `--version` | Print the version number and exit. |
|
|
140
|
+
|
|
141
|
+
3. **Examples**
|
|
142
|
+
- Scan all images in a repository:
|
|
143
|
+
```bash
|
|
144
|
+
manifesto my-org my-repo
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
- Get a summary of all tags for a specific image:
|
|
148
|
+
```bash
|
|
149
|
+
manifesto my-org my-repo my-image
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
- See full breakdown (platforms & digests) for all images:
|
|
153
|
+
```bash
|
|
154
|
+
manifesto my-org my-repo --detailed
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
- Show vulnerability scan results:
|
|
158
|
+
```bash
|
|
159
|
+
manifesto my-org my-repo my-image --vulnerabilities
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
- Get untagged/orphaned images:
|
|
163
|
+
```bash
|
|
164
|
+
manifesto my-org my-repo my-image --untagged
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
- Filter by tag:
|
|
168
|
+
```bash
|
|
169
|
+
manifesto my-org my-repo my-image --filter "tag:latest"
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
- Filter by upload date and download count:
|
|
173
|
+
```bash
|
|
174
|
+
manifesto my-org my-repo --filter "uploaded:<'30 days ago' AND downloads:>0"
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
- Include cosign signature/SBOM artifacts in the output:
|
|
178
|
+
```bash
|
|
179
|
+
manifesto my-org my-repo my-image --show-signatures
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
- Quick summary across all images:
|
|
183
|
+
```bash
|
|
184
|
+
manifesto my-org my-repo --summary
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
- Inspect the raw manifest for a tag:
|
|
188
|
+
```bash
|
|
189
|
+
manifesto my-org my-repo my-image --inspect latest
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
- Export results to JSON:
|
|
193
|
+
```bash
|
|
194
|
+
manifesto my-org my-repo --output json
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
- Export results to CSV:
|
|
198
|
+
```bash
|
|
199
|
+
manifesto my-org my-repo --output csv > report.csv
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
- Delete untagged/orphaned images:
|
|
203
|
+
```bash
|
|
204
|
+
manifesto my-org my-repo my-image --untagged-delete
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
- Delete a specific tag:
|
|
208
|
+
```bash
|
|
209
|
+
manifesto my-org my-repo my-image --delete-tag tag
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
- Wipe all detected images (use with caution!):
|
|
213
|
+
```bash
|
|
214
|
+
manifesto my-org my-repo --delete-all
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
|