Skip to content

fix(release): pass --no-git-checks to aube publish#9483

Merged
jdx merged 2 commits intomainfrom
claude/nervous-almeida-ac89ae
Apr 30, 2026
Merged

fix(release): pass --no-git-checks to aube publish#9483
jdx merged 2 commits intomainfrom
claude/nervous-almeida-ac89ae

Conversation

@jdx
Copy link
Copy Markdown
Owner

@jdx jdx commented Apr 30, 2026

Summary

  • The npm-publish workflow installs aube via mise install aube, which updates mise.lock. aube publish then aborts on the dirty working tree, failing the publish step.
  • The npm package is constructed from downloaded GitHub release tarballs in releases/npm/, so the working tree state of the parent repo is irrelevant to what gets published.
  • Added --no-git-checks to both aube publish invocations in scripts/release-npm.sh (the per-platform package publishes and the meta-package publish). aube's own error message recommends this flag.

Fixes the failure seen in https://github.com/jdx/mise/actions/runs/25163085007/job/73762238727:

```
Error: × aube publish: working tree has uncommitted changes:
│ M mise.lock
│ help: commit or stash them, or pass --no-git-checks to override
```

Test plan

  • Re-run the failed npm-publish workflow (or wait for the next release) and confirm publish succeeds.

🤖 Generated with Claude Code


Note

Low Risk
Small change limited to the release script; it only relaxes aube publish git checks during packaging and should not affect built artifacts.

Overview
Fixes npm publishing in CI by adding --no-git-checks to aube publish for both the per-platform packages and the final meta-package in scripts/release-npm.sh.

Also refactors the publish invocation to use a shared aube_publish_args array so dry-run output and real publishes stay in sync.

Reviewed by Cursor Bugbot for commit e4d4037. Bugbot is set up for automated code reviews on this repo. Configure here.

The npm-publish workflow installs aube via `mise install aube`, which
updates mise.lock. aube publish then aborts on the dirty working tree
even though the npm package is built from downloaded release tarballs
and is independent of repo state.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 30, 2026

Greptile Summary

Adds --no-git-checks to both aube publish invocations in scripts/release-npm.sh, fixing CI failures caused by mise install aube dirtying mise.lock during the npm-publish workflow. The args are factored into a aube_publish_args array for readability. The fix is correctly applied to both the per-platform package loop and the meta-package publish.

Confidence Score: 5/5

Safe to merge — targeted one-line fix with no functional side-effects on published artifacts.

The change is minimal and directly addresses a documented CI failure. --no-git-checks only bypasses the working-tree cleanliness guard; the package contents come from pre-downloaded tarballs and are unaffected. Both publish sites are updated consistently.

No files require special attention.

Important Files Changed

Filename Overview
scripts/release-npm.sh Adds --no-git-checks to both aube publish calls via a shared args array; change is consistent, correct, and applied symmetrically in the loop and the meta-package block.

Sequence Diagram

sequenceDiagram
    participant CI as npm-publish Workflow
    participant mise as mise install aube
    participant lock as mise.lock
    participant aube as aube publish
    participant npm as npm Registry

    CI->>mise: mise install aube
    mise-->>lock: updates mise.lock (dirty worktree)
    CI->>aube: aube publish --no-git-checks ...(per-platform x5)
    aube-->>npm: publish platform package
    CI->>aube: aube publish --no-git-checks ...(meta-package)
    aube-->>npm: publish meta-package
Loading

Reviews (2): Last reviewed commit: "refactor(release): extract aube publish ..." | Re-trigger Greptile

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the scripts/release-npm.sh script to include the --no-git-checks flag in the aube publish command for both dry-run and actual execution paths. The review feedback suggests refactoring the command arguments into a shared array to eliminate duplication and improve maintainability, ensuring that flags remain consistent across different execution blocks.

Comment thread scripts/release-npm.sh Outdated
Comment on lines +65 to +68
echo aube publish --access public --tag "$dist_tag" --provenance --no-git-checks
echo DRY_RUN
else
if ! aube publish --access public --tag "$dist_tag" --provenance 2>&1 | tee /tmp/npm-publish.log; then
if ! aube publish --access public --tag "$dist_tag" --provenance --no-git-checks 2>&1 | tee /tmp/npm-publish.log; then
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The aube publish command string is duplicated between the dry-run echo and the actual execution. This increases the risk of the two becoming out of sync if flags are added or modified in the future. Consider using a variable or an array to store the common arguments to ensure consistency and improve maintainability.

Suggested change
echo aube publish --access public --tag "$dist_tag" --provenance --no-git-checks
echo DRY_RUN
else
if ! aube publish --access public --tag "$dist_tag" --provenance 2>&1 | tee /tmp/npm-publish.log; then
if ! aube publish --access public --tag "$dist_tag" --provenance --no-git-checks 2>&1 | tee /tmp/npm-publish.log; then
AUBE_PUBLISH_ARGS=(--access public --tag "$dist_tag" --provenance --no-git-checks)
if [ "${DRY_RUN:-1}" != "0" ]; then
echo DRY_RUN
echo aube publish "${AUBE_PUBLISH_ARGS[@]}"
echo DRY_RUN
else
if ! aube publish "${AUBE_PUBLISH_ARGS[@]}" 2>&1 | tee /tmp/npm-publish.log; then

Comment thread scripts/release-npm.sh Outdated
Comment on lines +169 to +172
echo aube publish --access public --tag "$dist_tag" --provenance --no-git-checks
echo DRY_RUN
else
if ! aube publish --access public --tag "$dist_tag" --provenance 2>&1 | tee /tmp/npm-publish.log; then
if ! aube publish --access public --tag "$dist_tag" --provenance --no-git-checks 2>&1 | tee /tmp/npm-publish.log; then
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Similar to the platform-specific publish loop, the aube publish command for the meta-package is duplicated between the echo and the execution. Using a shared array for the arguments would prevent inconsistencies.

Suggested change
echo aube publish --access public --tag "$dist_tag" --provenance --no-git-checks
echo DRY_RUN
else
if ! aube publish --access public --tag "$dist_tag" --provenance 2>&1 | tee /tmp/npm-publish.log; then
if ! aube publish --access public --tag "$dist_tag" --provenance --no-git-checks 2>&1 | tee /tmp/npm-publish.log; then
AUBE_PUBLISH_ARGS=(--access public --tag "$dist_tag" --provenance --no-git-checks)
if [ "${DRY_RUN:-1}" != "0" ]; then
echo DRY_RUN
echo aube publish "${AUBE_PUBLISH_ARGS[@]}"
echo DRY_RUN
else
if ! aube publish "${AUBE_PUBLISH_ARGS[@]}" 2>&1 | tee /tmp/npm-publish.log; then

Avoid duplicating the flag list between the dry-run echo and the live
invocation so they cannot drift.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@github-actions
Copy link
Copy Markdown

Hyperfine Performance

mise x -- echo

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.28 x -- echo 21.9 ± 0.8 21.0 27.1 1.00
mise x -- echo 22.4 ± 0.8 21.5 25.3 1.02 ± 0.05

mise env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.28 env 21.5 ± 0.8 20.5 27.9 1.00
mise env 21.8 ± 0.6 21.0 24.7 1.02 ± 0.05

mise hook-env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.28 hook-env 22.1 ± 0.5 21.3 24.8 1.00
mise hook-env 22.5 ± 0.6 21.7 25.9 1.02 ± 0.04

mise ls

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.28 ls 22.4 ± 0.6 21.8 24.7 1.00
mise ls 22.9 ± 0.4 22.2 27.5 1.02 ± 0.03

xtasks/test/perf

Command mise-2026.4.28 mise Variance
install (cached) 153ms 157ms -2%
ls (cached) 77ms 80ms -3%
bin-paths (cached) 80ms 81ms -1%
task-ls (cached) 846ms 798ms +6%

@jdx jdx merged commit 11254d7 into main Apr 30, 2026
36 checks passed
@jdx jdx deleted the claude/nervous-almeida-ac89ae branch April 30, 2026 12:37
mise-en-dev added a commit that referenced this pull request May 3, 2026
### 🚀 Features

- **(conda)** graduate conda backend out of experimental by @jdx in
[#9544](#9544)
- **(deps)** Add dart and flutter providers by @tjarvstrand in
[#9505](#9505)
- **(registry)** add neo4j by @mnm364 in
[#9525](#9525)
- **(registry)** add rustfs by @mnm364 in
[#9530](#9530)
- **(task)** support exclusion patterns in task sources by
@jlarmstrongiv in [#9496](#9496)
- **(vfox)** add stat function to lua file module by @esteve in
[#9497](#9497)

### 🐛 Bug Fixes

- **(backend)** flag regex prerelease versions by @jdx in
[#9500](#9500)
- **(backend)** mark -nightly/-canary/-experimental as prereleases by
@jdx in [#9523](#9523)
- **(backend)** suppress no-versions warning for unresolved-latest
backends by @jdx in [#9548](#9548)
- **(backend)** include dotnet prereleases from package flags by @jdx in
[#9551](#9551)
- **(backend)** scope PEP 440 prerelease detection to Python backends by
@jdx in [#9558](#9558)
- **(cargo)** Apply install_env during cargo install by @c22 in
[#9502](#9502)
- **(copr)** drop epel-9 chroots since rust >= 1.91 is unavailable by
@jdx in [#9484](#9484)
- **(github)** skip attestations on non-default api_url by @jdx in
[#9486](#9486)
- **(github)** retry ip allow list errors without auth by @risu729 in
[#9506](#9506)
- **(http)** update versions host tracking endpoint by @jdx in
[#9527](#9527)
- **(install)** don't warn for configured tools when version is passed
via CLI by @jdx in [#9522](#9522)
- **(install)** refresh latest before installing missing tools by @jdx
in [#9545](#9545)
- **(install)** don't cache nonexistent install paths by @jdx in
[#9553](#9553)
- **(lockfile)** don't propagate ad-hoc CLI overrides into the project
lockfile by @jdx in [#9562](#9562)
- **(plugin)** detect plugin types after cloning by @risu729 in
[#9540](#9540)
- **(release)** pass --no-git-checks to aube publish by @jdx in
[#9483](#9483)
- **(task)** convert PATH to MSYS Unix form when spawning POSIX shells
on Windows by @JamBalaya56562 in
[#9547](#9547)

### 📚 Documentation

- **(contributing)** require popularity check for registry PRs by @jdx
in
[7bbeebe](7bbeebe)
- **(watch)** update pitchfork domain to en.dev by @risu729 in
[#9536](#9536)
- document ghtkn GitHub token setup by @jdx in
[#9546](#9546)
- clarify registry backend acceptance policy by @jdx in
[#9543](#9543)
- Change exec command to use bash for variable echo by @kuboon in
[#9567](#9567)

### 🧪 Testing

- **(e2e)** run test-tool targets in parallel by @jdx in
[#9564](#9564)
- **(e2e)** run tests in parallel by @jdx in
[#9563](#9563)
- **(e2e)** bind-mount /tmp on disk and surface failed tests in CI
summary by @jdx in [#9570](#9570)
- **(tasks)** migrate test_task_help atask to usage field by @jdx in
[#9549](#9549)

### 📦️ Dependency Updates

- update fedora:45 docker digest to 8b838b3 by @renovate[bot] in
[#9507](#9507)
- update ghcr.io/jdx/mise:deb docker digest to f02194c by @renovate[bot]
in [#9509](#9509)
- update taiki-e/install-action digest to 7769b73 by @renovate[bot] in
[#9512](#9512)
- update ghcr.io/jdx/mise:alpine docker digest to 581f8a8 by
@renovate[bot] in [#9508](#9508)
- update rust crate ctor to v0.10.1 by @renovate[bot] in
[#9515](#9515)
- update ghcr.io/jdx/mise:rpm docker digest to a5c9655 by @renovate[bot]
in [#9510](#9510)
- update rust docker digest to a9cfb75 by @renovate[bot] in
[#9511](#9511)
- update rust crate age to v0.11.3 by @renovate[bot] in
[#9514](#9514)
- update rust crate jiff to v0.2.24 by @renovate[bot] in
[#9516](#9516)
- update dependency vitepress-plugin-tabs to ^0.9.0 by @renovate[bot] in
[#9518](#9518)
- update autofix-ci/action action to v1.3.4 by @renovate[bot] in
[#9513](#9513)
- update rust crate usage-lib to v3.2.1 by @renovate[bot] in
[#9517](#9517)
- update apple-actions/import-codesign-certs action to v7 by
@renovate[bot] in [#9519](#9519)
- update taiki-e/install-action digest to 51cd0b8 by @renovate[bot] in
[#9531](#9531)
- exclude taiki-e/install-action from renovate by @jdx in
[#9532](#9532)
- update rust crate blake3 to v1.8.5 by @renovate[bot] in
[#9533](#9533)

### 📦 Registry

- enable shellcheck on windows by @zeitlinger in
[#9487](#9487)
- add google-java-format by @zeitlinger in
[#9488](#9488)
- add expert
([aqua:expert-lsp/expert](https://github.com/expert-lsp/expert)) by
@AlternateRT in [#9498](#9498)
- update entry for checkmake by @eread in
[#9504](#9504)
- add systemctl-tui
([aqua:rgwood/systemctl-tui](https://github.com/rgwood/systemctl-tui))
by @2xdevv in [#9521](#9521)
- add codon by @3w36zj6 in
[#9538](#9538)
- add tool yr (backend:github:VirusTotal/yara-x) by @adam-moss in
[#9542](#9542)
- add tool betterleaks (backend:aqua/betterleaks/betterleaks) by
@adam-moss in [#9541](#9541)
- add `git-filter-repo` by @garysassano in
[#9550](#9550)
- add umoci
([aqua:opencontainers/umoci](https://github.com/opencontainers/umoci))
by @2xdevv in [#9555](#9555)
- add aqua backend for elixir-ls by @AlternateRT in
[#9557](#9557)
- deny inline backend options by @risu729 in
[#9565](#9565)

### Chore

- **(ci)** fail registry tests without summary by @jdx in
[#9559](#9559)
- **(ci)** use !cancelled() instead of always() for test-ci aggregator
by @jdx in [#9569](#9569)
- **(ci)** use namespace runners for ci jobs by @jdx in
[#9561](#9561)
- **(config)** deprecate shorthands_file setting by @risu729 in
[#9534](#9534)
- **(docs)** remove shrill.en.dev analytics script by @jdx in
[#9539](#9539)
- **(release)** replace bc with awk in release-plz star formatting by
@jdx in
[d7f177f](d7f177f)
- bump hk to 1.44.3 by @jdx in
[#9493](#9493)
- invert CLAUDE.md/AGENTS.md so AGENTS.md is canonical by @jdx in
[#9560](#9560)
- set dev profile debug to 1 by @jdx in
[#9572](#9572)

### New Contributors

- @kuboon made their first contribution in
[#9567](#9567)
- @AlternateRT made their first contribution in
[#9557](#9557)
- @2xdevv made their first contribution in
[#9555](#9555)
- @adam-moss made their first contribution in
[#9541](#9541)
- @jlarmstrongiv made their first contribution in
[#9496](#9496)
- @tjarvstrand made their first contribution in
[#9505](#9505)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant