mirror of
https://github.com/jdx/mise-action.git
synced 2026-05-14 22:00:34 +00:00
I added support for customizing the key, but forgot the most important
piece that we need, being able to reference an environment variable
value. Our CI runner provider is now exposing an environment variable
that indicates if the OS configuration changes, and we plan to use that
one to invalidate the cache, otherwise we get errors because the cached
dependencies are linking against an invalid / non-existent `glibc`
version.
> [!IMPORTANT]
> I wrote the code with `claude code` and reviewed it afterwards
## Summary (Claude-generated)
- Add support for `{{env.VAR_NAME}}` syntax in cache key templates to
allow reading environment variable values
- Enables more flexible cache key customization based on CI/CD
environment variables like branch names, deployment environments, or
custom build identifiers
- Maintains backward compatibility with existing cache key templates
## Examples
```yaml
# Include branch name from environment
cache_key: 'mise-{{env.GITHUB_REF_NAME}}-{{platform}}-{{file_hash}}'
# Use custom deployment environment
cache_key: 'mise-{{env.DEPLOY_ENV}}-{{platform}}-{{file_hash}}'
# Conditional logic with environment variables
cache_key: '{{default}}{{#if env.CUSTOM_SUFFIX}}-{{env.CUSTOM_SUFFIX}}{{/if}}'
```
## Changes
- Modified `processCacheKeyTemplate()` in `src/index.ts` to include
`process.env` in template data
- Updated `action.yml` documentation to include the new
`{{env.VAR_NAME}}` syntax
- All existing functionality remains unchanged
## Test plan
- [x] Build and package successfully with `npm run all`
- [x] Linting and formatting pass
- [ ] Manual testing with environment variables in cache key templates
- [ ] Verify backward compatibility with existing cache key
configurations
89 lines
3 KiB
YAML
89 lines
3 KiB
YAML
name: mise action
|
|
description: Actions for working with mise runtime manager
|
|
author: Jeff Dickey <@jdx>
|
|
branding:
|
|
icon: arrow-down-circle
|
|
color: purple
|
|
inputs:
|
|
version:
|
|
required: false
|
|
description: The version of mise to use. If not specified, will use the latest release.
|
|
sha256:
|
|
required: false
|
|
description: The SHA256 checksum of the mise binary to verify the download.
|
|
mise_dir:
|
|
required: false
|
|
description: |
|
|
The directory that mise will be installed to, defaults to $HOME/.local/share/mise
|
|
Or $XDG_DATA_HOME/mise if $XDG_DATA_HOME is set.
|
|
Or $MISE_DATA_DIR if $MISE_DATA_DIR is set.
|
|
tool_versions:
|
|
required: false
|
|
description: If present, this value will be written to the .tool-versions file
|
|
mise_toml:
|
|
required: false
|
|
description: If present, this value will be written to the .mise.toml file
|
|
install:
|
|
required: false
|
|
default: "true"
|
|
description: if false, will not run `mise install`
|
|
install_args:
|
|
required: false
|
|
description: Arguments to pass to `mise install` such as "bun" to only install bun
|
|
install_dir:
|
|
required: false
|
|
description: deprecated
|
|
cache:
|
|
required: false
|
|
default: "true"
|
|
description: if false, action will not read or write to cache
|
|
cache_save:
|
|
required: false
|
|
default: "true"
|
|
description: if false, action will not write to cache
|
|
cache_key_prefix:
|
|
required: false
|
|
default: "mise-v0"
|
|
description: The prefix key to use for the cache, change this to invalidate the cache
|
|
cache_key:
|
|
required: false
|
|
description: |
|
|
Override the complete cache key (ignores all other cache key options).
|
|
Supports template variables: {{version}}, {{cache_key_prefix}}, {{platform}}, {{file_hash}},
|
|
{{mise_env}}, {{install_args_hash}}, {{default}}, {{env.VAR_NAME}} for environment variables,
|
|
and conditional logic like {{#if version}}...{{/if}}
|
|
experimental:
|
|
required: false
|
|
default: "false"
|
|
description: if true, will use experimental features
|
|
log_level:
|
|
required: false
|
|
default: "info"
|
|
description: The log level to use for the action
|
|
working_directory:
|
|
required: false
|
|
description: The directory that mise runs in
|
|
reshim:
|
|
required: false
|
|
default: "false"
|
|
description: if true, will run `mise reshim --all` after setting up mise
|
|
github_token:
|
|
required: false
|
|
description: |
|
|
GitHub token for API authentication to avoid rate limits when installing GitHub-hosted tools.
|
|
Defaults to the automatic GitHub token.
|
|
default: ${{ github.token }}
|
|
fetch_from_github:
|
|
required: false
|
|
default: "true"
|
|
description: If true (default), fetch the mise binary from GitHub. If false and using the latest version, fetch from mise.jdx.dev instead.
|
|
env:
|
|
description: "Automatically load mise env vars into GITHUB_ENV. Note that PATH modifications are not part of this."
|
|
required: false
|
|
default: "true"
|
|
outputs:
|
|
cache-hit:
|
|
description: A boolean value to indicate if a cache was hit.
|
|
runs:
|
|
using: node20
|
|
main: dist/index.js
|