13
0
Fork 0
mirror of https://github.com/jdx/mise-action.git synced 2026-06-28 15:50:45 +00:00
No description
Find a file
renovate[bot] 6632158b71
chore(deps): update jdx/mise-action action to v4.2.0 (#534)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [jdx/mise-action](https://redirect.github.com/jdx/mise-action) |
action | minor | `v4.1.0` → `v4.2.0` |

---

### Release Notes

<details>
<summary>jdx/mise-action (jdx/mise-action)</summary>

###
[`v4.2.0`](https://redirect.github.com/jdx/mise-action/releases/tag/v4.2.0):
: Bootstrap mode & wget fallback

[Compare
Source](https://redirect.github.com/jdx/mise-action/compare/v4.1.0...v4.2.0)

This release adds an opt-in **bootstrap mode** for projects that use
`mise bootstrap`, and makes the action work on runner images that ship
`wget` but not `curl`.

#### Added

##### Bootstrap mode
([#&#8203;522](https://redirect.github.com/jdx/mise-action/pull/522)) by
[@&#8203;jdx](https://redirect.github.com/jdx)

Three new inputs let the action drive `mise bootstrap` instead of `mise
install`:

```yaml
- uses: jdx/mise-action@v4
  with:
    bootstrap: true
    bootstrap_skip: "tools,task"   # comma-separated parts to skip
    bootstrap_args: "--yes"        # extra args forwarded to mise bootstrap
```

- When `bootstrap: true`, the action runs `mise bootstrap` under the
existing `install` gate and sets `MISE_EXPERIMENTAL=1` automatically.
- If a repo mise lock file is present, it runs `mise --locked
bootstrap`, matching the auto-lock behavior introduced for `mise
install` in v4.1.0.
- `install_args` cannot be combined with `bootstrap: true` — the action
fails fast and tells you to use `bootstrap_skip` / `bootstrap_args`
instead, because full bootstrap doesn't support partial tool install
args.
- A new `{{bootstrap_hash}}` template variable is included in the
default cache key (and available in custom `cache_key` templates) so
bootstrap and non-bootstrap configurations don't share caches.

`bootstrap_skip` relies on `mise bootstrap --skip` from
[jdx/mise#10497](https://redirect.github.com/jdx/mise/pull/10497), so
make sure you're on a recent mise version if you use it.

#### Fixed

- **Fall back to `wget` when `curl` is unavailable**
([#&#8203;521](https://redirect.github.com/jdx/mise-action/pull/521)) by
[@&#8203;risu729](https://redirect.github.com/risu729) — The action used
to hard-code `curl` for fetching the mise binary, tar/zip archives, and
the latest `VERSION` lookup, which broke on minimal runner images that
only ship `wget`. It now prefers `curl` and transparently falls back to
`wget`, preserving the streaming `download | tar` fast path for
`.tar.gz` and `.tar.zst` installs on Linux/macOS. Proxy support is
unchanged — both tools honor `HTTP_PROXY`/`HTTPS_PROXY`. Addresses
[jdx/mise#10488](https://redirect.github.com/jdx/mise/issues/10488).

#### Documentation

- Link the known Rust cache interaction note from the README
([#&#8203;496](https://redirect.github.com/jdx/mise-action/pull/496)) by
[@&#8203;risu729](https://redirect.github.com/risu729).

**Full Changelog**:
<https://github.com/jdx/mise-action/compare/v4.1.0...v4.2.0>

</details>

---

### Configuration

📅 **Schedule**: (in timezone America/Chicago)

- Branch creation
  - Only on Friday (`* * * * 5`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/jdx/mise-action).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNDIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-26 05:13:59 +00:00
.codex Enable Entire for Codex (#529) 2026-06-25 14:25:38 -05:00
.entire Enable Entire for Codex (#529) 2026-06-25 14:25:38 -05:00
.github chore(deps): update jdx/mise-action action to v4.2.0 (#534) 2026-06-26 05:13:59 +00:00
.husky fix: fall back to wget when curl is unavailable (#521) 2026-06-17 14:26:03 -04:00
dist fix: fall back to wget when curl is unavailable (#521) 2026-06-17 14:26:03 -04:00
scripts fix(ci): add gh auth setup-git to release-plz.sh (#473) 2026-05-12 15:20:22 -05:00
src fix: fall back to wget when curl is unavailable (#521) 2026-06-17 14:26:03 -04:00
.eslintrc.yml feat: support windows (#122) 2024-09-25 21:27:52 +00:00
.gitattributes updated action template base from actions/typescript-action (#170) 2023-10-16 19:18:57 -05:00
.gitignore chore: migrate package manager from npm/pnpm/bun to aube (#455) 2026-04-29 09:13:34 -05:00
.npmrc chore: migrate package manager from npm/pnpm/bun to aube (#455) 2026-04-29 09:13:34 -05:00
.prettierignore updated action template base from actions/typescript-action (#170) 2023-10-16 19:18:57 -05:00
.prettierrc.json updated action template base from actions/typescript-action (#170) 2023-10-16 19:18:57 -05:00
action.yml feat: support bootstrap mode (#522) 2026-06-16 21:43:53 -05:00
CHANGELOG.md chore: release v4.2.0 (#504) 2026-06-17 13:28:36 -05:00
CLAUDE.md chore: migrate package manager from npm/pnpm/bun to aube (#455) 2026-04-29 09:13:34 -05:00
cliff.toml docs: hide release entries in CHANGELOG 2025-08-18 11:50:35 -05:00
CODEOWNERS jdxcode -> jdx 2023-08-27 12:12:44 -05:00
eslint.config.mjs chore: updated deps 2024-11-27 18:10:51 -06:00
LICENSE Initial commit 2023-01-14 08:11:40 -06:00
mise.lock chore: update aube tool version (#501) 2026-05-31 09:20:02 -05:00
mise.toml chore: update aube tool version (#501) 2026-05-31 09:20:02 -05:00
package-lock.json chore(deps): update dependency rollup to v4.62.0 (#533) 2026-06-26 05:13:37 +00:00
package.json chore: release v4.2.0 (#504) 2026-06-17 13:28:36 -05:00
README.md feat: support bootstrap mode (#522) 2026-06-16 21:43:53 -05:00
rollup.config.mjs chore: migrate package manager from npm/pnpm/bun to aube (#455) 2026-04-29 09:13:34 -05:00
tsconfig.json chore: migrate from ncc (CJS) to rollup (ESM) (#436) 2026-04-11 12:55:09 -05:00

Example Workflow

name: test
on:
  pull_request:
    branches:
      - main
  push:
    branches:
      - main
jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: jdx/mise-action@v4
        with:
          version: 2026.3.10 # [default: latest] mise version to install
          install: true # [default: true] run `mise install`
          install_args: "bun" # [default: ""] additional arguments to `mise install`
          bootstrap: false # [default: false] run `mise bootstrap` instead of `mise install`
          bootstrap_skip: "tools,task" # [default: ""] comma-separated parts to skip when bootstrapping
          bootstrap_args: "--yes" # [default: ""] additional arguments to `mise bootstrap`
          cache: true # [default: true] cache mise using GitHub's cache
          experimental: true # [default: false] enable experimental features
          log_level: debug # [default: info] log level
          # automatically write this .tool-versions file
          tool_versions: |
            shellcheck 0.11.0
          # or, if you prefer .mise.toml format:
          mise_toml: |
            [tools]
            shellcheck = "0.11.0"
          working_directory: app # [default: .] directory to run mise in
          reshim: false # [default: false] run `mise reshim -f`
          github_token: ${{ secrets.GITHUB_TOKEN }} # [default: ${{ github.token }}] GitHub token for API authentication
      - run: shellcheck scripts/*.sh
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: jdx/mise-action@v4
      # .tool-versions will be read from repo root
      - run: node ./my_app.js

Cache Configuration

You can customize the cache key used by the action:

- uses: jdx/mise-action@v4
  with:
    cache_key: "my-custom-cache-key"  # Override the entire cache key
    cache_key_prefix: "mise-v1"       # Or just change the prefix (default: "mise-v0")

Template Variables in Cache Keys

When using cache_key, you can use template variables to reference internal values:

- uses: jdx/mise-action@v4
  with:
    cache_key: "mise-{{platform}}-{{version}}-{{file_hash}}"
    version: "2026.3.10"
    install_args: "node python"

Available template variables:

  • {{version}} - The mise version (from the version input)
  • {{cache_key_prefix}} - The cache key prefix (from cache_key_prefix input or default)
  • {{platform}} - The target platform, including the runner image (e.g., "linux-x64-ubuntu24", "macos-arm64-macos15", "linux-x64-self-hosted"). The trailing segment is process.env.ImageOS on github-hosted runners and falls back to "self-hosted" elsewhere — preventing cache collisions when the same repo runs on different runner providers (github-hosted, namespace.so, self-hosted).
  • {{file_hash}} - Hash of all mise configuration files
  • {{mise_env}} - The MISE_ENV environment variable value
  • {{install_args_hash}} - SHA256 hash of the sorted tools from install args
  • {{bootstrap_hash}} - SHA256 hash of bootstrap mode, skip list, and args
  • {{default}} - The processed default cache key (useful for extending)

Conditional logic is also supported using Handlebars syntax like {{#if version}}...{{/if}}.

Example using multiple variables:

- uses: jdx/mise-action@v4
  with:
    cache_key: "mise-v1-{{platform}}-{{install_args_hash}}-{{file_hash}}"
    install_args: "node@24 python@3.14"

You can also extend the default cache key:

- uses: jdx/mise-action@v4
  with:
    cache_key: "{{default}}-custom-suffix"
    install_args: "node@24 python@3.14"

This gives you full control over cache invalidation based on the specific aspects that matter to your workflow.

Rust Cache

Rust has a known cache interaction because mise installs Rust through rustup. See jdx/mise-action#215.

GitHub API Rate Limits

When installing tools hosted on GitHub (like gh, node, bun, etc.), mise needs to make API calls to GitHub's releases API. Without authentication, these calls are subject to GitHub's rate limit of 60 requests per hour, which can cause installation failures.

- uses: jdx/mise-action@v4
  with:
    github_token: ${{ secrets.GITHUB_TOKEN }}
    # your other configuration

Note: The action automatically uses ${{ github.token }} as the default, so in most cases you don't need to explicitly provide it. However, if you encounter rate limit errors, make sure the token is being passed correctly.

Lock Files

If a repo mise lock file such as mise.lock is present in the working directory or one of its parents, this action automatically runs mise install --locked. You can still pass install_args; --locked will be added automatically unless you already included it yourself.

This auto-detection is intended for repo-managed config files. If you provide mise_toml or tool_versions inputs, the action does not automatically force locked mode.

Bootstrap

Set bootstrap: true to run mise bootstrap instead of mise install:

- uses: jdx/mise-action@v4
  with:
    bootstrap: true

When a repo mise lock file is present, the action automatically runs mise --locked bootstrap. install_args cannot be combined with bootstrap: true; use bootstrap_skip and bootstrap_args for bootstrap customization.

Alternative Installation

Alternatively, mise is easy to use in GitHub Actions even without this:

jobs:
  build:
    steps:
    - run: |
        curl https://mise.run | sh
        echo "$HOME/.local/share/mise/bin" >> $GITHUB_PATH
        echo "$HOME/.local/share/mise/shims" >> $GITHUB_PATH