diff --git a/.github/actionlint.yaml b/.github/actionlint.yaml new file mode 100644 index 000000000..31c021b9b --- /dev/null +++ b/.github/actionlint.yaml @@ -0,0 +1,5 @@ +self-hosted-runner: + labels: + - namespace-profile-endev-linux-amd64 + - namespace-profile-endev-linux-arm64 + - namespace-profile-endev-macos-arm64 diff --git a/.github/workflows/autofix.yml b/.github/workflows/autofix.yml index 0ac86ddf6..17dc137fa 100644 --- a/.github/workflows/autofix.yml +++ b/.github/workflows/autofix.yml @@ -18,14 +18,14 @@ env: jobs: autofix: if: github.actor != 'renovate[bot]' && github.actor != 'mend[bot]' - runs-on: ubuntu-latest + runs-on: namespace-profile-endev-linux-amd64 timeout-minutes: 10 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2 + - uses: namespacelabs/nscloud-cache-action@15799a6b54e5765f85b2aac25b3f0df43ed571c0 # v1 with: - shared-key: autofix - - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4 + cache: rust + - uses: jdx/mise-action@b287efda3dc5f4f3c328507653b6617da783ff84 # v4 - run: mise x -- aube install - run: "mise run render ::: lint-fix" - uses: autofix-ci/action@7a166d7532b277f34e16238930461bf77f9d7ed8 # v1.3.3 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 87d94d99a..3852aa87d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,16 +21,19 @@ jobs: strategy: fail-fast: false matrix: - os: - - macos-latest - - ubuntu-latest - #- ubuntu-24.04-arm - runs-on: ${{ matrix.os }} + include: + - os: macos-latest + runner: namespace-profile-endev-macos-arm64 + - os: ubuntu-latest + runner: namespace-profile-endev-linux-amd64 + runs-on: ${{ matrix.runner }} timeout-minutes: 10 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2 - - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4 + - uses: namespacelabs/nscloud-cache-action@15799a6b54e5765f85b2aac25b3f0df43ed571c0 # v1 + with: + cache: rust + - uses: jdx/mise-action@b287efda3dc5f4f3c328507653b6617da783ff84 # v4 - run: mise run build - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 with: @@ -53,18 +56,18 @@ jobs: strategy: fail-fast: false matrix: - os: - - macos-latest - - ubuntu-latest - #- ubuntu-24.04-arm - #- windows-latest - runs-on: ${{ matrix.os }} + include: + - os: macos-latest + runner: namespace-profile-endev-macos-arm64 + - os: ubuntu-latest + runner: namespace-profile-endev-linux-amd64 + runs-on: ${{ matrix.runner }} timeout-minutes: 20 steps: - run: brew install parallel if: ${{ matrix.os == 'macos-latest' }} - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4 + - uses: jdx/mise-action@b287efda3dc5f4f3c328507653b6617da783ff84 # v4 - uses: actions-rust-lang/setup-rust-toolchain@2b1f5e9b395427c92ee4e3331786ca3c37afe2d7 # v1 with: toolchain: nightly @@ -87,18 +90,18 @@ jobs: strategy: fail-fast: false matrix: - os: - - macos-latest - - ubuntu-latest - #- ubuntu-24.04-arm - #- windows-latest - runs-on: ${{ matrix.os }} + include: + - os: macos-latest + runner: namespace-profile-endev-macos-arm64 + - os: ubuntu-latest + runner: namespace-profile-endev-linux-amd64 + runs-on: ${{ matrix.runner }} timeout-minutes: 20 steps: - run: brew install parallel if: ${{ matrix.os == 'macos-latest' }} - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4 + - uses: jdx/mise-action@b287efda3dc5f4f3c328507653b6617da783ff84 # v4 - uses: actions-rust-lang/setup-rust-toolchain@2b1f5e9b395427c92ee4e3331786ca3c37afe2d7 # v1 with: toolchain: nightly @@ -121,18 +124,19 @@ jobs: strategy: fail-fast: false matrix: - os: - - macos-latest - - ubuntu-latest - #- ubuntu-24.04-arm - #- windows-latest + os: [macos-latest, ubuntu-latest] + # Pinned to github-hosted runners: builtins_tests.bats installs ~50 + # tools via mise under 16-way parallelism, which surfaces a + # mise + namespace-runner incompatibility (many backends report + # "does not have an executable named X" on fresh installs, and + # asdf:swiftlint binaries SIGILL on namespace's linux image). runs-on: ${{ matrix.os }} timeout-minutes: 20 steps: - run: brew install parallel if: ${{ matrix.os == 'macos-latest' }} - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4 + - uses: jdx/mise-action@b287efda3dc5f4f3c328507653b6617da783ff84 # v4 - uses: actions-rust-lang/setup-rust-toolchain@2b1f5e9b395427c92ee4e3331786ca3c37afe2d7 # v1 with: toolchain: nightly @@ -154,31 +158,35 @@ jobs: strategy: fail-fast: false matrix: - os: - - macos-latest - - ubuntu-latest - #- ubuntu-24.04-arm - #- windows-latest - runs-on: ${{ matrix.os }} + include: + - os: macos-latest + runner: namespace-profile-endev-macos-arm64 + - os: ubuntu-latest + runner: namespace-profile-endev-linux-amd64 + runs-on: ${{ matrix.runner }} timeout-minutes: 20 steps: - run: brew install parallel if: ${{ matrix.os == 'macos-latest' }} - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2 - - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4 + - uses: namespacelabs/nscloud-cache-action@15799a6b54e5765f85b2aac25b3f0df43ed571c0 # v1 + with: + cache: rust + - uses: jdx/mise-action@b287efda3dc5f4f3c328507653b6617da783ff84 # v4 - run: mise x -- aube install - name: mise run test:cargo run: mise run test:cargo - name: mise run lint run: mise run lint msrv: - runs-on: ubuntu-latest + runs-on: namespace-profile-endev-linux-amd64 timeout-minutes: 10 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2 - - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4 + - uses: namespacelabs/nscloud-cache-action@15799a6b54e5765f85b2aac25b3f0df43ed571c0 # v1 + with: + cache: rust + - uses: jdx/mise-action@b287efda3dc5f4f3c328507653b6617da783ff84 # v4 - run: mise run msrv ci-windows: needs: build-windows @@ -187,7 +195,7 @@ jobs: steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2 - - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4 + - uses: jdx/mise-action@b287efda3dc5f4f3c328507653b6617da783ff84 # v4 - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 with: name: hk-windows-latest @@ -214,7 +222,7 @@ jobs: - ci-other - ci-windows - msrv - runs-on: ubuntu-latest + runs-on: namespace-profile-endev-linux-amd64 timeout-minutes: 1 if: always() steps: diff --git a/.github/workflows/claude.yml b/.github/workflows/claude.yml index 79f5bfe47..94693d04c 100644 --- a/.github/workflows/claude.yml +++ b/.github/workflows/claude.yml @@ -17,7 +17,7 @@ jobs: (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) || (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) || (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude'))) - runs-on: ubuntu-latest + runs-on: namespace-profile-endev-linux-amd64 permissions: contents: read pull-requests: read diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 9f38aae41..69ea7a3be 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -32,14 +32,16 @@ jobs: # Build job build: if: github.repository == 'jdx/hk' - runs-on: ubuntu-latest + runs-on: namespace-profile-endev-linux-amd64 steps: - name: Checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 with: fetch-depth: 0 # Not needed if lastUpdated is not enabled - - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2 - - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4 + - uses: namespacelabs/nscloud-cache-action@15799a6b54e5765f85b2aac25b3f0df43ed571c0 # v1 + with: + cache: rust + - uses: jdx/mise-action@b287efda3dc5f4f3c328507653b6617da783ff84 # v4 - name: Setup Pages uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6 - name: Build with VitePress @@ -61,7 +63,7 @@ jobs: pages: write # to deploy to Pages id-token: write # to verify the deployment originates from an appropriate source needs: build - runs-on: ubuntu-latest + runs-on: namespace-profile-endev-linux-amd64 name: Deploy steps: - name: Deploy to GitHub Pages diff --git a/.github/workflows/pr-closer.yml b/.github/workflows/pr-closer.yml index 84c22b3b1..5c3984927 100644 --- a/.github/workflows/pr-closer.yml +++ b/.github/workflows/pr-closer.yml @@ -7,7 +7,7 @@ on: jobs: close-stale-prs: - runs-on: ubuntu-latest + runs-on: namespace-profile-endev-linux-amd64 permissions: pull-requests: write steps: diff --git a/.github/workflows/release-plz.yml b/.github/workflows/release-plz.yml index 7f380e83f..68513c68a 100644 --- a/.github/workflows/release-plz.yml +++ b/.github/workflows/release-plz.yml @@ -20,14 +20,16 @@ env: jobs: release-plz: if: github.repository == 'jdx/hk' - runs-on: ubuntu-latest + runs-on: namespace-profile-endev-linux-amd64 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 with: fetch-depth: 0 token: ${{ secrets.HK_GH_TOKEN }} - - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2 - - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4 + - uses: namespacelabs/nscloud-cache-action@15799a6b54e5765f85b2aac25b3f0df43ed571c0 # v1 + with: + cache: rust + - uses: jdx/mise-action@b287efda3dc5f4f3c328507653b6617da783ff84 # v4 with: experimental: true - run: mise trust --all diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 56befefdf..184e7c2be 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,35 +20,47 @@ env: jobs: build-binaries: - runs-on: ${{ matrix.os }} + runs-on: ${{ matrix.runner }} strategy: fail-fast: false matrix: include: - target: aarch64-apple-darwin os: macos-latest + runner: namespace-profile-endev-macos-arm64 build-tool: cargo - target: x86_64-unknown-linux-musl os: ubuntu-latest + runner: namespace-profile-endev-linux-amd64 build-tool: cross - target: aarch64-unknown-linux-musl os: ubuntu-latest + runner: namespace-profile-endev-linux-amd64 build-tool: cross - target: x86_64-unknown-linux-gnu os: ubuntu-latest + runner: namespace-profile-endev-linux-amd64 build-tool: cross - target: aarch64-unknown-linux-gnu os: ubuntu-latest + runner: namespace-profile-endev-linux-amd64 build-tool: cross - target: x86_64-pc-windows-msvc os: windows-latest + runner: windows-latest build-tool: cargo - target: aarch64-pc-windows-msvc os: windows-latest + runner: windows-latest build-tool: cargo steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2 + - if: matrix.os != 'windows-latest' + uses: namespacelabs/nscloud-cache-action@15799a6b54e5765f85b2aac25b3f0df43ed571c0 # v1 + with: + cache: rust + - if: matrix.os == 'windows-latest' + uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2 with: shared-key: rust-${{ matrix.target }} - if: matrix.os == 'macos-latest' @@ -78,10 +90,10 @@ jobs: retention-days: 1 build-pkl: - runs-on: ubuntu-latest + runs-on: namespace-profile-endev-linux-amd64 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4 + - uses: jdx/mise-action@b287efda3dc5f4f3c328507653b6617da783ff84 # v4 - name: Package Pkl run: | if [[ -n "${{ inputs.version }}" ]]; then @@ -106,12 +118,12 @@ jobs: create-release: needs: [build-binaries, build-pkl] - runs-on: ubuntu-latest + runs-on: namespace-profile-endev-linux-amd64 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 with: fetch-depth: 0 - - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4 + - uses: jdx/mise-action@b287efda3dc5f4f3c328507653b6617da783ff84 # v4 - name: Extract release notes from CHANGELOG.md run: | awk '/^## \[/{if(found) exit; found=1} found{print}' CHANGELOG.md > release-notes.md @@ -145,23 +157,25 @@ jobs: publish-crate: needs: [create-release] if: github.repository == 'jdx/hk' - runs-on: ubuntu-latest + runs-on: namespace-profile-endev-linux-amd64 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2 - - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4 + - uses: namespacelabs/nscloud-cache-action@15799a6b54e5765f85b2aac25b3f0df43ed571c0 # v1 + with: + cache: rust + - uses: jdx/mise-action@b287efda3dc5f4f3c328507653b6617da783ff84 # v4 - run: cargo publish env: CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} enhance-release: needs: [create-release] - runs-on: ubuntu-latest + runs-on: namespace-profile-endev-linux-amd64 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 with: fetch-depth: 0 - - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4 + - uses: jdx/mise-action@b287efda3dc5f4f3c328507653b6617da783ff84 # v4 - name: Enhance release notes with communique run: | if [[ -n "${{ inputs.version }}" ]]; then diff --git a/.github/workflows/semantic-pr-lint.yml b/.github/workflows/semantic-pr-lint.yml index 9740186ba..6491f0783 100644 --- a/.github/workflows/semantic-pr-lint.yml +++ b/.github/workflows/semantic-pr-lint.yml @@ -10,7 +10,7 @@ on: jobs: main: name: Validate PR title - runs-on: ubuntu-latest + runs-on: namespace-profile-endev-linux-amd64 permissions: pull-requests: read steps: diff --git a/mise.lock b/mise.lock index d7155bdbc..a35269689 100644 --- a/mise.lock +++ b/mise.lock @@ -1,4 +1,4 @@ -# @generated - this file is auto-generated by `mise lock` https://mise.jdx.dev/dev-tools/mise-lock.html +# @generated - this file is auto-generated by `mise lock` https://mise.en.dev/dev-tools/mise-lock.html [[tools.actionlint]] version = "1.7.7" diff --git a/test/builtin_tool_stubs/shellcheck b/test/builtin_tool_stubs/shellcheck index 9fd4ca9a0..c694021e9 100755 --- a/test/builtin_tool_stubs/shellcheck +++ b/test/builtin_tool_stubs/shellcheck @@ -1,4 +1,4 @@ #!/usr/bin/env -S mise tool-stub version = "0.11.0" -tool = "ubi:koalaman/shellcheck" +tool = "shellcheck"