You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+47-10Lines changed: 47 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -191,7 +191,9 @@ Use `[LATEST]` for "give me whatever the most recent build is" workflows (consum
191
191
192
192
### Distribute
193
193
194
-
Make a generic artifact version publicly downloadable — anyone with the link can grab it without a Fly account. Idempotent: calling again returns the same public URL.
194
+
Make an artifact version publicly downloadable — anyone with the link can grab it without a Fly account. Idempotent: calling again returns the same public URL. Supported package types: **generic**, **docker**.
195
+
196
+
#### Generic
195
197
196
198
```yaml
197
199
- name: Distribute the artifact
@@ -201,13 +203,7 @@ Make a generic artifact version publicly downloadable — anyone with the link c
201
203
version: '1.0.0'
202
204
```
203
205
204
-
| Input | Description | Required | Default |
205
-
| --- | --- | --- | --- |
206
-
| `name` | Package name | Yes | |
207
-
| `version` | Package version to make public (concrete; `[LATEST]` not supported here) | Yes | |
208
-
| `type` | Artifact type. Currently only `generic` is supported. | No | `generic` |
209
-
210
-
After distribute succeeds, consumers can fetch the file anonymously:
206
+
After distribute succeeds, consumers fetch the file anonymously:
The public URL pattern is `https://{tenant}.jfrog.io/public/generic/{name}/{version}/{file}`. On the public path `[LATEST]` is resolved server-side via `302` + `Cache-Control: no-store`, so consumers always see the latest published version (CDN never serves a stale resolution). The authenticated `download` sub-action also resolves `[LATEST]` — via inline proxy (no redirect) — see [`[LATEST]` resolution](#latest-resolution) above.
216
+
The generic public URL pattern is `https://{tenant}.jfrog.io/public/generic/{name}/{version}/{file}`.
217
+
218
+
#### Docker
219
+
220
+
The image must already have been pushed to the tenant's `docker-local` repo (via `docker push {tenant}.jfrog.io/docker/...` after `jfrog/fly-action` configured the registry). The distribute step copies the manifest and layer blobs into the `{tenant}-docker-public` repo so anonymous pulls can resolve them.
221
+
222
+
```yaml
223
+
- name: Distribute the docker image
224
+
uses: jfrog/fly-action/distribute@v1
225
+
with:
226
+
name: myorg/my-image # image name without registry host or `docker-public/` prefix
227
+
version: '1.0.0'# image tag
228
+
type: docker
229
+
```
230
+
231
+
After distribute succeeds, consumers pull the image anonymously:
The docker public URL pattern is `https://{tenant}.jfrog.io/v2/docker-public/{image}/manifests/{tag}` (OCI registry API). The `/v2/docker-public/*` namespace is read-only — pushes always go through the authenticated distribute step above, never anonymously.
242
+
243
+
#### Distribute inputs
244
+
245
+
| Input | Description | Required | Default |
246
+
| --- | --- | --- | --- |
247
+
|`name`| Package name (for docker, the image name without the registry host or `docker-public/` prefix; nested repos like `myorg/myimg` are supported) | Yes ||
248
+
|`version`| Package version to make public (for docker, the image tag). Concrete only — `[LATEST]` is not accepted here. | Yes ||
249
+
|`type`| Artifact type. Supported values: `generic`, `docker`. | No |`generic`|
250
+
251
+
#### `[LATEST]` on the public path
252
+
253
+
`[LATEST]` is resolved server-side on **both** public URL shapes (generic `/public/generic/...` and docker `/v2/docker-public/...`) via `302 Found` + `Cache-Control: no-store`, so consumers always see the latest distributed version and the CDN never pins a stale resolution. The authenticated `download` sub-action also resolves `[LATEST]` — via inline proxy, no redirect — see [`[LATEST]` resolution](#latest-resolution) above.
254
+
255
+
`[LATEST]` is **download-only**. The Fly server rejects it with `400 Bad Request` on `distribute` (and `upload`) so a literal `[LATEST]`-named folder or tag can never poison future resolution.
256
+
257
+
#### Distribute outputs
221
258
222
-
The `results` output is a JSON array with one entry: `{package_name, package_version, package_type, public_url, download_url, download_count}`. Multiple distribute steps in one job accumulate in the job summary's _Distributed Artifacts_ table.
259
+
The `results` output is a JSON array with one entry: `{package_name, package_version, package_type, public_url, download_url, download_count, files?}`. Docker distributions also surface a `Pull:` line in the step logs with the ready-to-paste `docker pull …` command. Multiple distribute steps in one job accumulate in the job summary's _Distributed Artifacts_ table.
Copy file name to clipboardExpand all lines: distribute/action.yml
+4-4Lines changed: 4 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -1,16 +1,16 @@
1
1
name: 'Fly Distribute'
2
-
description: 'Make a generic artifact version publicly downloadable. After distribute, anyone can fetch the file at https://{tenant}.jfrog.io/public/generic/{name}/{version}/{file} (no auth). Use [LATEST] in the public URL to always get the newest distributed version. Requires jfrog/fly-action to have run first for authentication.'
2
+
description: 'Make an artifact version publicly downloadable. After distribute, consumers can fetch generic artifacts at https://{tenant}.jfrog.io/public/generic/{name}/{version}/{file} (no auth) or pull docker images with `docker pull {tenant}.jfrog.io/docker-public/{image}:{tag}` (no auth). Use [LATEST] in either URL shape to always get the newest distributed version. Requires jfrog/fly-action to have run first for authentication.'
3
3
author: 'JFrog'
4
4
5
5
inputs:
6
6
name:
7
-
description: 'Artifact name'
7
+
description: 'Artifact name (for docker, the image name without the registry host or `docker-public/` prefix; nested repos like `myorg/myimg` are supported)'
8
8
required: true
9
9
version:
10
-
description: 'Artifact version'
10
+
description: 'Artifact version (for docker, the image tag)'
11
11
required: true
12
12
type:
13
-
description: 'Artifact type. Currently only "generic" is supported.'
0 commit comments