Skip to content

Commit 35332fb

Browse files
committed
fix: release to aws s3
1 parent f78b334 commit 35332fb

File tree

1 file changed

+26
-36
lines changed

1 file changed

+26
-36
lines changed

.github/workflows/release-aws-s3.yml

Lines changed: 26 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,12 @@ name: Mirror Releases to S3
22

33
on:
44
release:
5-
types: [published] # Auto trigger when a release is published
6-
workflow_dispatch: # Manual trigger
5+
types: [published]
6+
workflow_dispatch:
77
inputs:
88
tag_name:
9-
description: "Release tag (e.g. v0.6.9). Takes precedence if both provided."
10-
required: false
11-
type: string
12-
release_name:
13-
description: "Release name (e.g. Jan 0.6.9). Used when tag_name is not provided."
14-
required: false
9+
description: "Release tag to mirror (e.g. v0.6.9). Required for manual runs."
10+
required: true
1511
type: string
1612

1713
jobs:
@@ -20,48 +16,42 @@ jobs:
2016
permissions:
2117
contents: read
2218
env:
23-
CDN_HOST: catalog.jan.ai # CDN domain pointing to S3 (CloudFront/Cloudflare/R2)
19+
CDN_HOST: catalog.jan.ai # CDN domain pointing to S3 (CloudFront/Cloudflare/R2)
2420
BUCKET: ${{ secrets.CATALOG_AWS_S3_BUCKET_NAME }}
2521
AWS_REGION: ${{ secrets.CATALOG_AWS_REGION }}
2622
MAX_HISTORY: "20"
2723
steps:
2824
- name: Checkout
2925
uses: actions/checkout@v4
3026

31-
- name: Resolve release (automatic or manual)
27+
- name: Resolve release (release event or manual by tag)
3228
id: rel
3329
uses: actions/github-script@v7
3430
with:
3531
script: |
3632
const { owner, repo } = context.repo;
37-
const tagInput = core.getInput('tag_name');
38-
const nameInput = core.getInput('release_name');
39-
let release;
33+
const eventName = context.eventName;
34+
const evInputs = (context.payload && context.payload.inputs) || {};
35+
const tagInput = String(core.getInput('tag_name') || evInputs.tag_name || '').trim();
4036
41-
// Prefer tag_name if provided
42-
if (tagInput) {
43-
try {
44-
release = await github.rest.repos.getReleaseByTag({ owner, repo, tag: tagInput });
45-
release = release.data;
46-
} catch (e) {
47-
core.setFailed(`Release not found for tag '${tagInput}'.`);
48-
return;
49-
}
50-
} else if (nameInput) {
51-
// GitHub does not support get-by-name directly → list and search
52-
const rels = await github.paginate(github.rest.repos.listReleases, { owner, repo, per_page: 100 });
53-
release = rels.find(r => (r.name || r.tag_name) === nameInput);
54-
if (!release) {
55-
core.setFailed(`Release not found for name '${nameInput}'.`);
37+
let release = null;
38+
39+
if (eventName === 'release' && context.payload.release) {
40+
// Auto: use release payload
41+
release = context.payload.release;
42+
} else {
43+
// Manual: require tag_name (no latest fallback)
44+
if (!tagInput) {
45+
core.setFailed('No tag_name provided. Please specify a release tag.');
5646
return;
5747
}
58-
} else {
59-
// Triggered by release event
60-
if (!context.payload.release) {
61-
core.setFailed('No release found in payload and no manual input provided.');
48+
try {
49+
const r = await github.rest.repos.getReleaseByTag({ owner, repo, tag: tagInput });
50+
release = r.data;
51+
} catch {
52+
core.setFailed(`Release not found for tag '${tagInput}'.`);
6253
return;
6354
}
64-
release = context.payload.release;
6555
}
6656
6757
const tag = release.tag_name;
@@ -72,11 +62,11 @@ jobs:
7262
gh_url: a.browser_download_url
7363
}));
7464
65+
core.info(`Resolved release: tag=${tag}, name=${name}, assets=${assets.length}`);
7566
core.setOutput('tag', tag);
7667
core.setOutput('name', name);
7768
core.setOutput('published_at', release.published_at || new Date().toISOString());
7869
core.setOutput('assets', JSON.stringify(assets));
79-
8070
- name: Prepare assets directory
8171
run: mkdir -p out meta
8272

@@ -90,7 +80,7 @@ jobs:
9080
curl -L --fail -o "$f" "$url"
9181
done
9282
93-
- name: Build/merge releases.json (keep max 100 entries)
83+
- name: Build/merge releases.json (keep max N entries)
9484
env:
9585
TAG: ${{ steps.rel.outputs.tag }}
9686
NAME: ${{ steps.rel.outputs.name }}
@@ -107,7 +97,7 @@ jobs:
10797
const NAME = process.env.NAME || TAG
10898
const PUBLISHED_AT = process.env.PUBLISHED_AT || new Date().toISOString()
10999
const CDN = process.env.CDN_HOST
110-
const MAX = parseInt(process.env.MAX_HISTORY || '100', 10)
100+
const MAX = parseInt(process.env.MAX_HISTORY || '20', 10)
111101
112102
const files = fs.readdirSync('out')
113103
const sizeOf = f => fs.statSync(path.join('out', f)).size

0 commit comments

Comments
 (0)