## Summary Switches from our custom GitHub Actions workflow to [autofix.ci](https://autofix.ci/) for automatically updating the `dist/` folder. This solves the CI triggering issue and works on all PRs, not just Renovate PRs. ## Problem Solved The previous workflow had a critical issue: commits made with `GITHUB_TOKEN` don't trigger other CI workflows (by design to prevent infinite loops). This meant that after the dist/ folder was updated, CI wouldn't run to verify the changes. ## Solution: autofix.ci autofix.ci uses a GitHub App token to make commits, which **does** trigger CI workflows. This ensures that: - ✅ CI tests run after dist/ is updated - ✅ Works on ALL PRs, not just Renovate - ✅ Renovate still recognizes and can rebase PRs (via `gitIgnoredAuthors`) ## Changes - **Renamed workflow**: `renovate-dist-update.yml` → `autofix.yml` - **Removed filters**: Now runs on all PRs (not just when specific files change) - **Removed Renovate check**: Works for all PR authors, not just renovate[bot] - **Switched to autofix.ci**: Replaced manual commit logic with autofix.ci action - **Updated permissions**: Changed from `write` to `read` (autofix.ci handles commits) - **Updated renovate.json**: Added `autofix.ci[bot]` to `gitIgnoredAuthors` ## Setup Required This PR requires installing the autofix.ci GitHub App: 👉 https://github.com/apps/autofix-ci ## Testing Once the app is installed, this workflow will automatically: 1. Run on every PR 2. Execute `npm run all` to rebuild dist/ 3. Let autofix.ci commit any changes 4. Trigger CI workflows to verify the changes 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Replaces the Renovate-only dist update workflow with an autofix.ci-based workflow that runs on all PRs and main pushes, and updates Renovate to ignore autofix.ci commits. > > - **CI**: > - Add `/.github/workflows/autofix.yml` to build (`npm run all`) and let `autofix.ci` commit fixes on PRs and `main` pushes. > - Remove `/.github/workflows/renovate-dist-update.yml` and its manual commit/push logic. > - **Renovate**: > - Update `/.github/renovate.json` to set `gitIgnoredAuthors` to `autofix.ci[bot] <autofix.ci[bot]@users.noreply.github.com>`. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 520b55f3f5045ef239900070ac87c66667338b09. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Claude <noreply@anthropic.com> |
||
|---|---|---|
| .github | ||
| .husky | ||
| dist | ||
| scripts | ||
| src | ||
| .eslintrc.yml | ||
| .gitattributes | ||
| .gitignore | ||
| .prettierignore | ||
| .prettierrc.json | ||
| action.yml | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| cliff.toml | ||
| CODEOWNERS | ||
| eslint.config.mjs | ||
| LICENSE | ||
| mise.toml | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
Example Workflow
name: test
on:
pull_request:
branches:
- main
push:
branches:
- main
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: jdx/mise-action@v3
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: jdx/mise-action@v3
# .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@v3
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@v3
with:
cache_key: "mise-{{platform}}-{{version}}-{{file_hash}}"
version: "2024.10.0"
install_args: "node python"
Available template variables:
{{version}}- The mise version (from theversioninput){{cache_key_prefix}}- The cache key prefix (fromcache_key_prefixinput 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: jdx/mise-action@v3
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: jdx/mise-action@v3
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.
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@v3
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.
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