Add nightly release and update artifact actions to v7#352
Conversation
- Publish a daily nightly prerelease from main - Refresh upload/download-artifact actions to v7
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughUpdated GitHub Actions workflows: upgraded artifact actions (uploads to Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant Jobs as "Matrix Jobs (build/test/bench)"
participant ArtifactStore as "GitHub Actions Artifacts"
participant Nightly as "nightly Job (runner)"
participant Stager as "stage-build-artifacts.sh"
participant Releases as "GitHub Releases API"
Jobs->>ArtifactStore: upload per-target artifacts (upload-artifact@v7)
Note right of ArtifactStore: artifacts persisted across jobs
Nightly->>ArtifactStore: download all artifacts (download-artifact@v8)
Nightly->>Stager: run staging per-target -> produce archives
Stager->>Nightly: return per-platform tar.gz / zip
Nightly->>Releases: check for existing nightly (UTC date)
alt existing release
Nightly->>Releases: delete existing nightly release
end
Nightly->>Releases: create nightly pre-release and upload archives
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/ci.yml:
- Around line 1096-1120: The current "Check if nightly already published today"
step (id: check) uses a non-atomic read-then-write (TODAY/PUBLISHED) which
allows a race where two workflow runs both decide to proceed; fix by making the
operation atomic: instead of relying solely on PUBLISHED, attempt to create the
nightly release (or call the Releases API to create a release with name
"nightly" / tag "nightly" targeting main) and treat a "release already exists"
error as the signal to set skip=true; update the step to use GH_TOKEN and `gh`
or `gh api` to create the release and on success set skip=false, on a 422/exists
error set skip=true, and only delete/recreate if the create succeeded — this
ensures the create is the atomic check-and-set rather than the current two-step
check using TODAY/PUBLISHED.
- Around line 1168-1183: The release tag is being pinned to the moving branch
via "gh release create nightly ... --target main" which can point at a different
commit than the built artifacts; change the target to the tested commit by using
the COMMIT you already compute (e.g. replace "--target main" with "--target
\"${COMMIT}\"" or compute the full SHA with COMMIT="$(git rev-parse HEAD)" and
pass that to "gh release create nightly" so the nightly release references the
exact tested commit.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: ba908516-4b45-44de-b78d-f733ece92ff3
📒 Files selected for processing (2)
.github/workflows/ci.yml.github/workflows/pr.yml
Suite Timing
Measured on ubuntu-latest x64. |
Benchmark Results386 benchmarks Interpreted: 🟢 346 improved · 🔴 10 regressed · 30 unchanged · avg +11.0% arraybuffer.js — Interp: 🟢 11, 3 unch. · avg +8.3% · Bytecode: 🟢 2, 🔴 2, 10 unch. · avg -0.4%
arrays.js — Interp: 🟢 18, 1 unch. · avg +12.1% · Bytecode: 🔴 7, 12 unch. · avg -1.5%
async-await.js — Interp: 🟢 5, 1 unch. · avg +8.9% · Bytecode: 6 unch. · avg +0.8%
base64.js — Interp: 🟢 8, 2 unch. · avg +12.9% · Bytecode: 🟢 1, 9 unch. · avg +0.7%
classes.js — Interp: 🟢 30, 1 unch. · avg +9.9% · Bytecode: 🔴 7, 24 unch. · avg -2.8%
closures.js — Interp: 🟢 11 · avg +11.9% · Bytecode: 11 unch. · avg -0.2%
collections.js — Interp: 🟢 12 · avg +13.2% · Bytecode: 12 unch. · avg +0.0%
csv.js — Interp: 🟢 13 · avg +10.9% · Bytecode: 🟢 1, 12 unch. · avg -0.0%
destructuring.js — Interp: 🟢 21, 1 unch. · avg +9.2% · Bytecode: 🟢 2, 🔴 3, 17 unch. · avg -0.5%
fibonacci.js — Interp: 🟢 8 · avg +14.2% · Bytecode: 8 unch. · avg +1.1%
float16array.js — Interp: 🟢 27, 🔴 4, 1 unch. · avg +7.6% · Bytecode: 🟢 4, 🔴 2, 26 unch. · avg -0.8%
for-of.js — Interp: 🟢 7 · avg +15.8% · Bytecode: 7 unch. · avg -0.2%
helpers/bench-module.js — Interp: 0 · Bytecode: 0
iterators.js — Interp: 🟢 29, 13 unch. · avg +5.7% · Bytecode: 🟢 7, 🔴 12, 23 unch. · avg -1.3%
json.js — Interp: 🟢 20 · avg +15.9% · Bytecode: 🔴 15, 5 unch. · avg -5.2%
jsx.jsx — Interp: 🟢 21 · avg +13.1% · Bytecode: 🟢 7, 14 unch. · avg +3.2%
modules.js — Interp: 🟢 9 · avg +13.3% · Bytecode: 🟢 1, 🔴 1, 7 unch. · avg -0.5%
numbers.js — Interp: 🟢 11 · avg +15.4% · Bytecode: 🟢 2, 🔴 1, 8 unch. · avg -0.3%
objects.js — Interp: 🟢 7 · avg +12.8% · Bytecode: 🟢 1, 🔴 5, 1 unch. · avg -3.1%
promises.js — Interp: 🟢 11, 1 unch. · avg +9.9% · Bytecode: 🟢 3, 🔴 1, 8 unch. · avg +1.3%
regexp.js — Interp: 🟢 11 · avg +11.4% · Bytecode: 🔴 2, 9 unch. · avg -1.7%
strings.js — Interp: 🟢 18, 🔴 1 · avg +8.8% · Bytecode: 🟢 5, 🔴 6, 8 unch. · avg +8.6%
tsv.js — Interp: 🟢 9 · avg +10.0% · Bytecode: 🔴 5, 4 unch. · avg -2.4%
typed-arrays.js — Interp: 🟢 16, 🔴 4, 2 unch. · avg +4.7% · Bytecode: 🟢 7, 🔴 5, 10 unch. · avg +0.4%
uint8array-encoding.js — Interp: 🟢 13, 🔴 1, 4 unch. · avg +27.6% · Bytecode: 🟢 3, 🔴 2, 13 unch. · avg -0.0%
Measured on ubuntu-latest x64. Benchmark ranges compare cached main-branch min/max ops/sec with the PR run; overlapping ranges are treated as unchanged noise. Percentage deltas are secondary context. |
- Add concurrency group to serialize nightly job across workflow runs - Use full commit SHA instead of branch name for --target to ensure the release tag points at the exact tested commit Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/ci.yml:
- Line 247: Update the workflow to use the latest matching upload/download
artifact actions: replace usages of actions/download-artifact@v7 with
actions/download-artifact@v8 (or the specific latest tag, e.g., v8.0.1) to align
with actions/upload-artifact@v7 and ensure you reference the exact action
identifiers (actions/download-artifact and actions/upload-artifact) in the CI
YAML so both steps use current, consistent versions.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: f6b73f60-3f06-4715-9b14-2c32603ce0da
📒 Files selected for processing (1)
.github/workflows/ci.yml
- Bump GitHub Actions artifact download steps from `actions/download-artifact@v7` to `@v8` - Keep CI workflows aligned with the newer artifact action
Summary
nightlyjob toci.ymlthat reuses existing CI build artifacts (no rebuild) to publish a rollingnightlypre-release on every push tomain, capped at once per day (UTC)actions/upload-artifactandactions/download-artifactfrom deprecated@v5to@v7across bothci.ymlandpr.ymlDetails
Nightly release:
maingocciascript-{target}artifacts, packages them into archives, and publishes anightlypre-releasehttps://github.com/OWNER/REPO/releases/download/nightly/gocciascript-nightly-{platform}.tar.gzreleasejob (nightly runs onmain, release runs on tags)Artifact action upgrade:
actions/upload-artifact@v5→@v7(4 in ci.yml, 3 in pr.yml)actions/download-artifact@v5→@v7(8 in ci.yml, 6 in pr.yml)Test plan
🤖 Generated with Claude Code