Skip to content

Commit 994a3b2

Browse files
committed
chore: test workflow
1 parent c0603fe commit 994a3b2

File tree

1 file changed

+61
-27
lines changed

1 file changed

+61
-27
lines changed

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

Lines changed: 61 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -13,55 +13,88 @@ on:
1313
description: "Release name (e.g. Jan 0.6.9). Used when tag_name is not provided."
1414
required: false
1515
type: string
16+
push: # Auto trigger on push for a specific test branch
17+
branches:
18+
- feat/release-to-aws-s3 # ← change to your PR branch name
1619

1720
jobs:
1821
mirror:
1922
runs-on: ubuntu-latest
2023
permissions:
2124
contents: read
2225
env:
23-
CDN_HOST: catalog.jan.ai # CDN domain pointing to S3 (CloudFront/Cloudflare/R2)
26+
CDN_HOST: catalog.jan.ai # CDN domain pointing to S3 (CloudFront/Cloudflare/R2)
2427
BUCKET: ${{ secrets.CATALOG_AWS_S3_BUCKET_NAME }}
2528
AWS_REGION: ${{ secrets.CATALOG_AWS_REGION }}
2629
MAX_HISTORY: "20"
30+
# Hardcoded test values used only on push (optional)
31+
TEST_TAG: b4951 # ← put a real existing tag to test
32+
TEST_NAME: "" # or a release name if you prefer to match by name
2733
steps:
2834
- name: Checkout
2935
uses: actions/checkout@v4
3036

31-
- name: Resolve release (automatic or manual)
37+
- name: Resolve release (automatic/manual/push-test)
3238
id: rel
3339
uses: actions/github-script@v7
3440
with:
3541
script: |
3642
const { owner, repo } = context.repo;
43+
44+
// Inputs from workflow_dispatch
3745
const tagInput = core.getInput('tag_name');
3846
const nameInput = core.getInput('release_name');
39-
let release;
40-
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
47+
// Env for push-test
48+
const testTag = process.env.TEST_TAG && process.env.TEST_TAG.trim() ? process.env.TEST_TAG.trim() : '';
49+
const testName = process.env.TEST_NAME && process.env.TEST_NAME.trim() ? process.env.TEST_NAME.trim() : '';
50+
51+
// Resolution order:
52+
// 1) tag_name input
53+
// 2) TEST_TAG env (for push test)
54+
// 3) release_name input
55+
// 4) TEST_NAME env (for push test)
56+
// 5) context.payload.release (release event)
57+
let release = null;
58+
let chosen = null;
59+
60+
async function getByTag(tag) {
61+
const r = await github.rest.repos.getReleaseByTag({ owner, repo, tag });
62+
return r.data;
63+
}
64+
65+
async function getByName(name) {
5266
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}'.`);
56-
return;
57-
}
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.');
67+
return rels.find(r => (r.name || r.tag_name) === name) || null;
68+
}
69+
70+
try {
71+
if (tagInput) {
72+
chosen = `tag_input:${tagInput}`;
73+
release = await getByTag(tagInput);
74+
} else if (testTag) {
75+
chosen = `test_tag:${testTag}`;
76+
release = await getByTag(testTag);
77+
} else if (nameInput) {
78+
chosen = `name_input:${nameInput}`;
79+
release = await getByName(nameInput);
80+
} else if (testName) {
81+
chosen = `test_name:${testName}`;
82+
release = await getByName(testName);
83+
} else if (context.payload.release) {
84+
chosen = 'payload_release_event';
85+
release = context.payload.release;
86+
} else {
87+
core.setFailed('No release reference provided: set tag_name, TEST_TAG, release_name, TEST_NAME, or trigger from a release event.');
6288
return;
6389
}
64-
release = context.payload.release;
90+
} catch (e) {
91+
core.setFailed(`Failed to resolve release (${chosen}). ${e.message}`);
92+
return;
93+
}
94+
95+
if (!release) {
96+
core.setFailed(`Release not found (${chosen}).`);
97+
return;
6598
}
6699
67100
const tag = release.tag_name;
@@ -72,6 +105,7 @@ jobs:
72105
gh_url: a.browser_download_url
73106
}));
74107
108+
core.info(`Resolved release via ${chosen}: tag=${tag}, name=${name}, assets=${assets.length}`);
75109
core.setOutput('tag', tag);
76110
core.setOutput('name', name);
77111
core.setOutput('published_at', release.published_at || new Date().toISOString());
@@ -90,7 +124,7 @@ jobs:
90124
curl -L --fail -o "$f" "$url"
91125
done
92126
93-
- name: Build/merge releases.json (keep max 100 entries)
127+
- name: Build/merge releases.json (keep max N entries)
94128
env:
95129
TAG: ${{ steps.rel.outputs.tag }}
96130
NAME: ${{ steps.rel.outputs.name }}
@@ -107,7 +141,7 @@ jobs:
107141
const NAME = process.env.NAME || TAG
108142
const PUBLISHED_AT = process.env.PUBLISHED_AT || new Date().toISOString()
109143
const CDN = process.env.CDN_HOST
110-
const MAX = parseInt(process.env.MAX_HISTORY || '100', 10)
144+
const MAX = parseInt(process.env.MAX_HISTORY || '20', 10)
111145
112146
const files = fs.readdirSync('out')
113147
const sizeOf = f => fs.statSync(path.join('out', f)).size

0 commit comments

Comments
 (0)