Skip to content

Commit 46103a3

Browse files
authored
fix: release file (#238)
1 parent 627f59b commit 46103a3

File tree

1 file changed

+51
-17
lines changed

1 file changed

+51
-17
lines changed

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

Lines changed: 51 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@ jobs:
2424
- name: Checkout
2525
uses: actions/checkout@v4
2626

27+
# Derive repo name safely for all events (release/workflow_dispatch)
28+
- name: Derive REPO_NAME
29+
id: repoinfo
30+
run: |
31+
echo "REPO_NAME=${GITHUB_REPOSITORY##*/}" >> "$GITHUB_ENV"
32+
echo "OWNER_NAME=${GITHUB_REPOSITORY%%/*}" >> "$GITHUB_ENV"
33+
echo "Repo resolved to: ${GITHUB_REPOSITORY##*/}"
34+
2735
- name: Resolve release (release event or manual by tag)
2836
id: rel
2937
uses: actions/github-script@v7
@@ -67,9 +75,17 @@ jobs:
6775
core.setOutput('name', name);
6876
core.setOutput('published_at', release.published_at || new Date().toISOString());
6977
core.setOutput('assets', JSON.stringify(assets));
78+
7079
- name: Prepare assets directory
7180
run: mkdir -p out meta
7281

82+
- name: Configure AWS credentials
83+
uses: aws-actions/configure-aws-credentials@v4
84+
with:
85+
aws-access-key-id: ${{ secrets.CATALOG_AWS_ACCESS_KEY_ID }}
86+
aws-secret-access-key: ${{ secrets.CATALOG_AWS_SECRET_ACCESS_KEY }}
87+
aws-region: ${{ env.AWS_REGION }}
88+
7389
- name: Download assets from GitHub
7490
run: |
7591
echo '${{ steps.rel.outputs.assets }}' \
@@ -80,13 +96,29 @@ jobs:
8096
curl -L --fail -o "$f" "$url"
8197
done
8298
99+
- name: Fetch existing releases.json from S3 (if any)
100+
env:
101+
BUCKET: ${{ env.BUCKET }}
102+
REPO_NAME: ${{ env.REPO_NAME }}
103+
run: |
104+
mkdir -p meta
105+
KEY="$REPO_NAME/releases/releases.json"
106+
if aws s3api head-object --bucket "$BUCKET" --key "$KEY" >/dev/null 2>&1; then
107+
echo "Found $KEY in S3. Downloading..."
108+
aws s3 cp "s3://$BUCKET/$KEY" meta/releases.json
109+
else
110+
echo "No $KEY in S3. Initializing with empty array."
111+
echo '[]' > meta/releases.json
112+
fi
113+
83114
- name: Build/merge releases.json (keep max N entries)
84115
env:
85116
TAG: ${{ steps.rel.outputs.tag }}
86117
NAME: ${{ steps.rel.outputs.name }}
87118
PUBLISHED_AT: ${{ steps.rel.outputs.published_at }}
88119
CDN_HOST: ${{ env.CDN_HOST }}
89120
MAX_HISTORY: ${{ env.MAX_HISTORY }}
121+
REPO_NAME: ${{ env.REPO_NAME }}
90122
run: |
91123
test -f meta/releases.json || echo '[]' > meta/releases.json
92124
node - <<'NODE'
@@ -98,6 +130,7 @@ jobs:
98130
const PUBLISHED_AT = process.env.PUBLISHED_AT || new Date().toISOString()
99131
const CDN = process.env.CDN_HOST
100132
const MAX = parseInt(process.env.MAX_HISTORY || '20', 10)
133+
const REPO = process.env.REPO_NAME
101134
102135
const files = fs.readdirSync('out')
103136
const sizeOf = f => fs.statSync(path.join('out', f)).size
@@ -109,7 +142,8 @@ jobs:
109142
assets: files.map(f => ({
110143
name: f,
111144
size: sizeOf(f),
112-
browser_download_url: `https://${CDN}/releases/${TAG}/${f}`
145+
// URL now includes repo prefix
146+
browser_download_url: `https://${CDN}/${REPO}/releases/${TAG}/${f}`
113147
}))
114148
}
115149
@@ -127,34 +161,34 @@ jobs:
127161
fs.writeFileSync(p, JSON.stringify(arr, null, 2))
128162
NODE
129163
130-
- name: Configure AWS credentials
131-
uses: aws-actions/configure-aws-credentials@v4
132-
with:
133-
aws-access-key-id: ${{ secrets.CATALOG_AWS_ACCESS_KEY_ID }}
134-
aws-secret-access-key: ${{ secrets.CATALOG_AWS_SECRET_ACCESS_KEY }}
135-
aws-region: ${{ env.AWS_REGION }}
136-
137-
- name: Upload assets to S3
164+
- name: Upload assets to S3 (repo-scoped path)
138165
env:
139166
TAG: ${{ steps.rel.outputs.tag }}
140167
BUCKET: ${{ env.BUCKET }}
168+
REPO_NAME: ${{ env.REPO_NAME }}
141169
run: |
142-
echo "Uploading assets for tag $TAG to s3://$BUCKET/releases/$TAG/"
143-
aws s3 sync out "s3://$BUCKET/releases/$TAG/"
170+
DEST="s3://$BUCKET/$REPO_NAME/releases/$TAG/"
171+
echo "Uploading assets for tag $TAG to $DEST"
172+
aws s3 sync out "$DEST"
144173
145-
- name: Update 'latest' alias in S3
174+
- name: Update 'latest' alias in S3 (repo-scoped)
146175
env:
147176
TAG: ${{ steps.rel.outputs.tag }}
148177
BUCKET: ${{ env.BUCKET }}
178+
REPO_NAME: ${{ env.REPO_NAME }}
149179
run: |
180+
LATEST_PREFIX="s3://$BUCKET/$REPO_NAME/releases/latest/"
181+
TAG_PREFIX="s3://$BUCKET/$REPO_NAME/releases/$TAG/"
150182
echo "Updating 'latest' alias to point to tag $TAG"
151-
aws s3 rm "s3://$BUCKET/releases/latest/" --recursive || true
152-
aws s3 sync "s3://$BUCKET/releases/$TAG/" "s3://$BUCKET/releases/latest/"
183+
aws s3 rm "$LATEST_PREFIX" --recursive || true
184+
aws s3 sync "$TAG_PREFIX" "$LATEST_PREFIX"
153185
154-
- name: Upload releases.json
186+
- name: Upload releases.json (repo-scoped)
155187
env:
156188
BUCKET: ${{ env.BUCKET }}
189+
REPO_NAME: ${{ env.REPO_NAME }}
157190
run: |
158-
echo "Uploading releases.json"
159-
aws s3 cp meta/releases.json "s3://$BUCKET/releases/releases.json" \
191+
KEY="$REPO_NAME/releases/releases.json"
192+
echo "Uploading releases.json to s3://$BUCKET/$KEY"
193+
aws s3 cp meta/releases.json "s3://$BUCKET/$KEY" \
160194
--content-type 'application/json' --cache-control 'no-store'

0 commit comments

Comments
 (0)