name: test
on:
pull_request:
branches:
- main
push:
branches:
- main
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: step-security/mise-action@v2
with:
version: 2024.10.0 # [default: latest] mise version to install
install: true # [default: true] run `mise install`
install_args: "bun" # [default: ""] additional arguments to `mise install`
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.9.0
# or, if you prefer .mise.toml format:
mise_toml: |
[tools]
shellcheck = "0.9.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@v4
- uses: step-security/mise-action@v2
# .tool-versions will be read from repo root
- run: node ./my_app.js
You can customize the cache key used by the action:
- uses: step-security/mise-action@v2
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")
When using cache_key
, you can use template variables to reference internal values:
- uses: step-security/mise-action@v2
with:
cache_key: "mise-{{platform}}-{{version}}-{{file_hash}}"
version: "2024.10.0"
install_args: "node python"
Available template variables:
{{version}}
- The mise version (from theversion
input){{cache_key_prefix}}
- The cache key prefix (fromcache_key_prefix
input or default){{platform}}
- The target platform (e.g., "linux-x64", "macos-arm64"){{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{{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: step-security/mise-action@v2
with:
cache_key: "mise-v1-{{platform}}-{{install_args_hash}}-{{file_hash}}"
install_args: "node@20 python@3.12"
You can also extend the default cache key:
- uses: step-security/mise-action@v2
with:
cache_key: "{{default}}-custom-suffix"
install_args: "node@20 python@3.12"
This gives you full control over cache invalidation based on the specific aspects that matter to your workflow.
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: step-security/mise-action@v2
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.