diff --git a/.dprint.jsonc b/.dprint.jsonc index 7ba50ff36..520e7a49e 100644 --- a/.dprint.jsonc +++ b/.dprint.jsonc @@ -74,15 +74,15 @@ "npm:@dprint/dockerfile@0.6.0", "npm:@dprint/dockerfile@0.6.0", "npm:@dprint/typescript@0.96.1", - "npm:@dprint/markdown@0.23.2", - "npm:@dprint/json@0.23.0", - "npm:@jakebailey/dprint-plugin-gofumpt@0.0.17", + "npm:@dprint/markdown@0.24.0", + "npm:@dprint/json@0.24.0", + "npm:@jakebailey/dprint-plugin-gofumpt@0.0.18", "https://plugins.dprint.dev/sargunv/dprint-cmakefmt-0.1.0.wasm", "npm:dprint-plugin-yaml@0.6.0", "npm:dprint-plugin-malva@0.16.0", - "npm:dprint-plugin-markup@0.27.3", + "npm:dprint-plugin-markup@0.27.5", "https://plugins.dprint.dev/kjanat/pwsh-0.2.0.wasm", - "https://plugins.dprint.dev/kjanat/shfmt-1.1.0.wasm", + "https://plugins.dprint.dev/kjanat/shfmt-1.1.1.wasm", "https://plugins.dprint.dev/kjanat/sortpackagejson-0.2.1.wasm", "https://plugins.dprint.dev/kjanat/svg-v0.4.1.wasm", ], diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 410c021c7..b30d31581 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -65,18 +65,28 @@ jobs: steps: - *ActCheckNocred - *GoGomod - - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 + - &NodeTooling + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 with: { node-version-file: .node-version, package-manager-cache: false } - - &Runner { uses: kjanat/runner@8baa9ee978cfed038b98741749673c788ff161d1 } # v0.26.1 + - &Runner { uses: kjanat/runner@8baa9ee978cfed038b98741749673c788ff161d1 } # v0.26.2 - &Pandoc { name: Install Pandoc, uses: $/.github/actions/setup-pandoc } - name: Install JavaScript dependencies run: runner install --frozen - name: Build command manual run: run make:man - name: Build and test playground - run: run --dir playground -s make:build make:test + run: run -s playground:make:build playground:make:test - name: Lint JavaScript workspaces run: run lint + javascript: + name: JavaScript + runs-on: ubuntu-latest + steps: + - *ActCheckNocred + - *NodeTooling + - *Runner + - name: Install dependencies and test JavaScript tooling + run: runner install --frozen test:js release-snapshot: name: Release snapshot runs-on: ubuntu-latest @@ -87,6 +97,8 @@ jobs: - &Go { uses: *SetupGo, with: *GoMod } - *Pandoc - *Runner + - name: Install syft for SBOM generation + uses: anchore/sbom-action/download-syft@3ad7283483fc7af8ff2b4ea19663c2d5ca935e26 # v0.24.2 - uses: &SetupNode actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 with: { node-version: "24", package-manager-cache: false } - name: Build JavaScript Action release files outside the checkout @@ -95,8 +107,6 @@ jobs: tag="$(git describe --tags --abbrev=0 --match 'v[0-9]*.[0-9]*.[0-9]*' --exclude '*-*')" node scripts/build-action-release.mjs --out-dir "${RUNNER_TEMP}/actionlint-action" --version "${tag#v}" - run: run make:man/actionlint.1 - - name: Install syft for SBOM generation - uses: anchore/sbom-action/download-syft@3ad7283483fc7af8ff2b4ea19663c2d5ca935e26 # v0.24.2 - uses: goreleaser/goreleaser-action@f06c13b6b1a9625abc9e6e439d9c05a8f2190e94 # v7.2.3 with: { version: v2.18.0, args: release --snapshot --clean } - name: Smoke-test the linux/amd64 snapshot binary @@ -158,13 +168,14 @@ jobs: run: docker build --target action -t actionlint:action-test . - name: Check Docker Action compatibility run: bash scripts/test-docker-action.bash actionlint:action-test - - name: Lint Dockerfile with hadolint - run: docker run --rm -i hadolint/hadolint hadolint --ignore DL3018 --strict-labels - --require-label org.opencontainers.image.source:url - --require-label org.opencontainers.image.licenses:spdx - - < Dockerfile - - name: Lint Dockerfile with droast - uses: immanuwell/dockerfile-roast@1c87b2aa189338c24db4acde40864dae8994de8f # 1.7.0 + - parallel: + - name: Lint Dockerfile with hadolint + run: docker run --rm -i hadolint/hadolint hadolint --ignore DL3018 --strict-labels + --require-label org.opencontainers.image.source:url + --require-label org.opencontainers.image.licenses:spdx + - < Dockerfile + - name: Lint Dockerfile with droast + uses: immanuwell/dockerfile-roast@1c87b2aa189338c24db4acde40864dae8994de8f # 1.7.0 action: name: GitHub Action strategy: diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index 87b791fec..304bf0bca 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -15,24 +15,35 @@ jobs: build: if: >- github.event_name != 'workflow_run' || - (github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'push' && + (github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'release' && github.event.workflow_run.head_repository.full_name == github.repository) runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - with: { persist-credentials: false, fetch-depth: 0, ref: "${{ github.event.workflow_run.head_sha || github.sha }}" } - - uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7 - with: { go-version-file: go.mod } - - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 - with: { node-version-file: .node-version, package-manager-cache: false } - - uses: $/.github/actions/setup-pandoc - - uses: kjanat/runner@8baa9ee978cfed038b98741749673c788ff161d1 # v0.26.2 - - name: Install JavaScript dependencies - run: runner install --frozen - - name: Build command manual - run: run make:man + with: { + persist-credentials: false, + fetch-depth: 0, + ref: "${{ github.event_name == 'workflow_run' && github.event.repository.default_branch || github.sha }}", + } + - parallel: + - uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7 + with: { go-version-file: go.mod } + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 + with: { node-version-file: .node-version, package-manager-cache: false } + - uses: $/.github/actions/setup-pandoc + - uses: kjanat/runner@8baa9ee978cfed038b98741749673c788ff161d1 # v0.26.2 + - parallel: + - name: Install JavaScript dependencies + run: runner install --frozen + - name: Build command manual + run: run make:man - name: Build and test playground - run: run --dir playground -s make:build make:test + env: { GH_TOKEN: "${{ github.token }}" } + run: | + if latest_release="$(gh api "repos/${GITHUB_REPOSITORY}/releases/latest" --jq '.tag_name')"; then + export ACTIONLINT_LATEST_RELEASE="${latest_release}" + fi + run -s playground:make:build playground:make:test - uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5 with: { path: playground/dist } diff --git a/.mise.toml b/.mise.toml index c29411d58..aa106c947 100644 --- a/.mise.toml +++ b/.mise.toml @@ -5,6 +5,7 @@ actionlint = { version = "latest", minimum_release_age = "0s", depends = ["sh dprint = { version = "latest", lazy = true } go = { version = "latest" } golangci-lint = { version = "latest", lazy = true } +runner-run = "latest" shellcheck = { version = "latest" } tombi = { version = "latest", lazy = true } @@ -12,6 +13,7 @@ tombi = { version = "latest", lazy = true } "actionlint" = "github:kjanat/actionlint" "actionlint-kjanat" = "github:kjanat/actionlint" "actionlint-rhysd" = "github:rhysd/actionlint" +"runner-run" = "github:kjanat/runner" [settings] minimum_release_age_excludes = [ diff --git a/.npmrc b/.npmrc new file mode 100644 index 000000000..5d73173a9 --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +allow-git=root + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 473299518..c82449f15 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -287,15 +287,15 @@ Visit [`playground/README.md`]. ## How to deploy playground -The [Pages workflow] deploys on pushes to `master` and after successful Release runs triggered by pushes within this repository. Release-triggered builds check out that release's commit. The build job has read-only repository access and builds the bundle with `make -C playground build`, packages `playground/dist` together with the manual, and uploads it through `actions/upload-pages-artifact`. +The [Pages workflow] deploys on pushes to `master` and after successful Release runs triggered by published releases within this repository. Release-triggered builds check out the current default branch. The source badge and documentation links identify the built revision; a separate latest-release badge links to the published release. The build job has read-only repository access and builds the bundle with `run playground:make:build`, packages `playground/dist` together with the manual, and uploads it through `actions/upload-pages-artifact`. Only the separate deployment job receives Pages write and OIDC permissions. -To check a build locally before pushing: +Install the tools in `.mise.toml` with `mise install` and activate mise in your shell. This makes the configured runner's `run` command available. Then check a build locally: ```sh -make -C playground build -npm run preview +run playground:make:build +run playground:preview ``` ## Maintain auto-generated sources diff --git a/distribution/npm/facade/package.json b/distribution/npm/facade/package.json index 8667465a9..3c791a2a0 100644 --- a/distribution/npm/facade/package.json +++ b/distribution/npm/facade/package.json @@ -36,7 +36,9 @@ "exports": { "./package.json": "./package.json", "./schema": "./actionlint.schema.json", - "./result": { "types": "./types/result.d.ts" }, + "./result": { + "types": "./types/result.d.ts" + }, "./result.schema.json": "./schemas/results/v1.schema.json", "./schemas/*": "./schemas/*" }, diff --git a/docs/checks.md b/docs/checks.md index 73a93fd65..ee89dbdb6 100644 --- a/docs/checks.md +++ b/docs/checks.md @@ -1022,7 +1022,6 @@ shell and working directory. Findings point to `action.yml` or `action.yaml`. Remote action contents are not downloaded for these checks. [workflow-scripts-doc]: https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/add-scripts - ## [shellcheck][shellcheck] integration for `run:` diff --git a/package-lock.json b/package-lock.json index d5216d240..bedbbf3c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,8 +7,8 @@ "name": "actionlint", "license": "MIT", "workspaces": [ - "packages/*", "distribution/npm/facade", + "packages/*", "playground" ], "dependencies": { @@ -19,7 +19,7 @@ "@types/node": "^26.4.0", "@typescript/native": "npm:typescript@^7.0.2", "biome": "npm:@biomejs/biome@^2.5.14", - "runner-run": "^0.26.1", + "runner-run": "^0.26.2", "typescript": "npm:@typescript/typescript6@^6.0.2" }, "funding": { @@ -1399,9 +1399,9 @@ "license": "MIT" }, "node_modules/@runner-run/android-arm64": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/@runner-run/android-arm64/-/android-arm64-0.26.1.tgz", - "integrity": "sha512-uCUnOuADflPKlIY8G9UhHqnmOMRqm1dkGRYGFvq1CugPVo3lmPgkqXzDoiOyIvp6uNrtccjb38GAg6TDeqlsDQ==", + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/@runner-run/android-arm64/-/android-arm64-0.26.2.tgz", + "integrity": "sha512-zDnESHsqxVMHQ0P2Ea0Yciv3LMmAgwoR0s43sT2aVcer+lhAk4F6sIgoHYra8wZi/WXxCueRzi6LWs4tu6QAyA==", "cpu": [ "arm64" ], @@ -1420,9 +1420,9 @@ } }, "node_modules/@runner-run/darwin-arm64": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/@runner-run/darwin-arm64/-/darwin-arm64-0.26.1.tgz", - "integrity": "sha512-1N8gQlmhervzQ/kJGpAFUB2lC1F3HkUu6xJCDX9YB76xZgzpaAA5AFfhNjPe32+IHFmGSu+dBu+kurSzh3xRRQ==", + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/@runner-run/darwin-arm64/-/darwin-arm64-0.26.2.tgz", + "integrity": "sha512-HWogkROEGVbH7dC8C4iI2761WJtxFOjFN+xez4+8fiy+iPfeZkytcqn5fN1czSig238jH+O6vCamXiSIW60+Dg==", "cpu": [ "arm64" ], @@ -1441,9 +1441,9 @@ } }, "node_modules/@runner-run/darwin-x64": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/@runner-run/darwin-x64/-/darwin-x64-0.26.1.tgz", - "integrity": "sha512-ztBDJBa909wAU5PePXrjLHDyrFeaTBwZdb/93qlG3JgcAAPjvxVu3tSCyssv+gLEa4dJ7XDIUWMdUJ2vKLlXig==", + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/@runner-run/darwin-x64/-/darwin-x64-0.26.2.tgz", + "integrity": "sha512-M/YvB+agUEr9QvZBMPp69G4xKDyztf2gi/dwLQl1Sy54wmto+carrEh7xZf978nCN0i3UdV041NxqlLdZHOOUA==", "cpu": [ "x64" ], @@ -1462,9 +1462,9 @@ } }, "node_modules/@runner-run/freebsd-arm64": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/@runner-run/freebsd-arm64/-/freebsd-arm64-0.26.1.tgz", - "integrity": "sha512-twtX/x/rqHt4PI74iwedOPanTn89YxqUqktLQdFGPWLz1OA/0PNTs4LaJ0fK/Gvd6+lQW4AKkD+lMELUT8VljA==", + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/@runner-run/freebsd-arm64/-/freebsd-arm64-0.26.2.tgz", + "integrity": "sha512-yAN9jFE4h8RXGWmRG+fp2GiVkNIjCIr6+STCL5cE6YN+Az8wCEiH9uoBB+QsOutRgyWhD9EkyqChzyQhEwlxmQ==", "cpu": [ "arm64" ], @@ -1483,9 +1483,9 @@ } }, "node_modules/@runner-run/freebsd-x64": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/@runner-run/freebsd-x64/-/freebsd-x64-0.26.1.tgz", - "integrity": "sha512-FHg7wbykNXVfxIsIEz0V0yB4MjMarxHtiMKIlP+kFhQCobtXMDgthO+BGlpBVt6kKcLAOxfcP3Q3nKnx2DBUWg==", + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/@runner-run/freebsd-x64/-/freebsd-x64-0.26.2.tgz", + "integrity": "sha512-JalHWobwyA8xxdh6DeKt4B7sG0oyC3S8X/a4DKnNd7M4bzBmPzcDL0to993mKE1zfNiTGIJflIFWNz54moZ5iQ==", "cpu": [ "x64" ], @@ -1504,9 +1504,9 @@ } }, "node_modules/@runner-run/linux-arm64-gnu": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/@runner-run/linux-arm64-gnu/-/linux-arm64-gnu-0.26.1.tgz", - "integrity": "sha512-HjQiLA/e1VA38YrDStiYMlIWjWqEWEjnkkfXD4KYwhUYtKOWHgtRwra/4QReNpo3THrXzi8ExKVLyN/AKvAQyg==", + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/@runner-run/linux-arm64-gnu/-/linux-arm64-gnu-0.26.2.tgz", + "integrity": "sha512-s+7D5x4DHcZu1a5CLfwbTqe9L04RZwEyBkRTP9+nZIInGx3IMo5YnpIUqP2xQsALUpFc60NWRf8VE9h7qJrKUQ==", "cpu": [ "arm64" ], @@ -1528,9 +1528,9 @@ } }, "node_modules/@runner-run/linux-arm64-musl": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/@runner-run/linux-arm64-musl/-/linux-arm64-musl-0.26.1.tgz", - "integrity": "sha512-VuOZtDM2JTUqq1cgDerJhEmLgLLNevOmCVN6lmgYccNVPEypXWbCE+Vhq1EZWypUErsYNA8mF4mTEaT7hPKzPg==", + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/@runner-run/linux-arm64-musl/-/linux-arm64-musl-0.26.2.tgz", + "integrity": "sha512-SjqY5KSBIKRX4cXqSj+3hkPHqtL5DZDNsEqoP1CdLsuUhwezx+ytftpWBm4UzsA8xFNWQSkMECxLxHVPP7+Kpw==", "cpu": [ "arm64" ], @@ -1552,9 +1552,9 @@ } }, "node_modules/@runner-run/linux-armv7-gnueabihf": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/@runner-run/linux-armv7-gnueabihf/-/linux-armv7-gnueabihf-0.26.1.tgz", - "integrity": "sha512-wdjvB3JArqcQk1TV9gd2j/vX/3jHr2Hm8ik6utHNQmkyYntHi7dI+D+EwapIS8fOTbHw9zTIWvg9WKICytvWlQ==", + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/@runner-run/linux-armv7-gnueabihf/-/linux-armv7-gnueabihf-0.26.2.tgz", + "integrity": "sha512-wtgcFcogMmuIU+k3hOSTPPOk9WCcHpBxoUloT3cooUp3vzVbADmcvqNv3vcfjoUyIzp6nkaMxHon8O9kjEzpZA==", "cpu": [ "arm" ], @@ -1576,9 +1576,9 @@ } }, "node_modules/@runner-run/linux-x64-gnu": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/@runner-run/linux-x64-gnu/-/linux-x64-gnu-0.26.1.tgz", - "integrity": "sha512-0Xmhaz5XMEPe+Z36XGUgSoi4v4zjg3/qYkdnUjFzTz8LpSpH/KgKBp7Dh5BV/4xXwePY72Wngxx4/E3HSJplpA==", + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/@runner-run/linux-x64-gnu/-/linux-x64-gnu-0.26.2.tgz", + "integrity": "sha512-KHI11f+k2DmTUWzMq1tXvkvMU90s+PNKDrTuBenQTVu+42epgXodfkMasvEtt9O3V/qP3pBM97R2EAcEJ9iC/Q==", "cpu": [ "x64" ], @@ -1600,9 +1600,9 @@ } }, "node_modules/@runner-run/linux-x64-musl": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/@runner-run/linux-x64-musl/-/linux-x64-musl-0.26.1.tgz", - "integrity": "sha512-QD0c/N/HJm0aPNKKoMuGEgl/4YEudE3BMsw2e0ek8hM4MWkCUf+At1r1npO7S0bmsFp+wpFfJXN0tDF+yxqNww==", + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/@runner-run/linux-x64-musl/-/linux-x64-musl-0.26.2.tgz", + "integrity": "sha512-20rG4dg1W5TGrH0J/RQZ7/UR9tl+H/T4eCjs/BucNx589s0cU0+S3+O3ANppPBLNMlTibFr1OjzqCxOLvZaFhw==", "cpu": [ "x64" ], @@ -1624,9 +1624,9 @@ } }, "node_modules/@runner-run/netbsd-x64": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/@runner-run/netbsd-x64/-/netbsd-x64-0.26.1.tgz", - "integrity": "sha512-EVyUg4+n2CnUMRinOhht0Jy1NEvPlHauWcjDu5ZJqxES9xppdorTLsVefBD5tpDV8OGn5+jTRlW4SjcDKIVTPA==", + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/@runner-run/netbsd-x64/-/netbsd-x64-0.26.2.tgz", + "integrity": "sha512-1+RHc3iWsrjgglOAu4W5C3GX9d05FUVCPEatrpzxIoUGNcC6APuD/iz4nFjhKBeZJ++yJUYZfDcr3a7axyEakg==", "cpu": [ "x64" ], @@ -1645,9 +1645,9 @@ } }, "node_modules/@runner-run/win32-arm64-msvc": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/@runner-run/win32-arm64-msvc/-/win32-arm64-msvc-0.26.1.tgz", - "integrity": "sha512-3Dd3/GjbX7gZa8YfpIgJrHsklshQHnmgnhLuvqOBFuD51UYz5YsholLZY3j+LK87Y3/dodBKuCBIDySAR6cj0Q==", + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/@runner-run/win32-arm64-msvc/-/win32-arm64-msvc-0.26.2.tgz", + "integrity": "sha512-mpyb00JaP396cjkyp2GtiG0IDv60shfuQluFqZ9HBgczIuWopZEi4/fWOwcnYS2b/o6wpmjHfGjytKgdqYviZA==", "cpu": [ "arm64" ], @@ -1666,9 +1666,9 @@ } }, "node_modules/@runner-run/win32-ia32-msvc": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/@runner-run/win32-ia32-msvc/-/win32-ia32-msvc-0.26.1.tgz", - "integrity": "sha512-VKNDqAgUj6z3j38tsHrLNhDepQaIJTCLywizr0V40QBJ6uVBloRFGuppNS3byap3sPKjPSZvY1SVVfahs5VhEA==", + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/@runner-run/win32-ia32-msvc/-/win32-ia32-msvc-0.26.2.tgz", + "integrity": "sha512-pcV9VyQAe5dlzeq+yBuEhR24hxhWk1nWg807R/+E94Gt5xFn8ebaHeKyBlC75CVRpkahHno/3UddVpF/HjnGYg==", "cpu": [ "ia32" ], @@ -1687,9 +1687,9 @@ } }, "node_modules/@runner-run/win32-x64-msvc": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/@runner-run/win32-x64-msvc/-/win32-x64-msvc-0.26.1.tgz", - "integrity": "sha512-Br4yM2nWdpgOiOELR8SvHmxAzllXZmHiRd9P4rbv5Xu4ytdfcq7+OBVThfW+sdPn4BRP6ShhoRzKjU6KFlS/jw==", + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/@runner-run/win32-x64-msvc/-/win32-x64-msvc-0.26.2.tgz", + "integrity": "sha512-9IVcgn5SXssq0HDpT7DzwqUxpIz3H2gGmsmD3L2SxMgnzZke2FdrlL/1Bcs396kxZ2eoqdYa+dKpFYRW0ELuyg==", "cpu": [ "x64" ], @@ -4245,9 +4245,9 @@ } }, "node_modules/runner-run": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/runner-run/-/runner-run-0.26.1.tgz", - "integrity": "sha512-KkJUKJhzMC13ff/93akEe6H8d0SejTR2trU+8S/R9dDSvln2F03xaNjDssXJyXUMmUD6oFNy/M0KgSuVSZGVJw==", + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/runner-run/-/runner-run-0.26.2.tgz", + "integrity": "sha512-Nqd9UAINsjI71s7xEt89AeRD9ynl0K/quTq/qii3DGr8dO37JuS5Xm9pNCRog16/UmihVtYNds3CG3OSFiRNXw==", "dev": true, "license": "MIT", "dependencies": { @@ -4262,20 +4262,20 @@ "node": ">=18" }, "optionalDependencies": { - "@runner-run/android-arm64": "0.26.1", - "@runner-run/darwin-arm64": "0.26.1", - "@runner-run/darwin-x64": "0.26.1", - "@runner-run/freebsd-arm64": "0.26.1", - "@runner-run/freebsd-x64": "0.26.1", - "@runner-run/linux-arm64-gnu": "0.26.1", - "@runner-run/linux-arm64-musl": "0.26.1", - "@runner-run/linux-armv7-gnueabihf": "0.26.1", - "@runner-run/linux-x64-gnu": "0.26.1", - "@runner-run/linux-x64-musl": "0.26.1", - "@runner-run/netbsd-x64": "0.26.1", - "@runner-run/win32-arm64-msvc": "0.26.1", - "@runner-run/win32-ia32-msvc": "0.26.1", - "@runner-run/win32-x64-msvc": "0.26.1" + "@runner-run/android-arm64": "0.26.2", + "@runner-run/darwin-arm64": "0.26.2", + "@runner-run/darwin-x64": "0.26.2", + "@runner-run/freebsd-arm64": "0.26.2", + "@runner-run/freebsd-x64": "0.26.2", + "@runner-run/linux-arm64-gnu": "0.26.2", + "@runner-run/linux-arm64-musl": "0.26.2", + "@runner-run/linux-armv7-gnueabihf": "0.26.2", + "@runner-run/linux-x64-gnu": "0.26.2", + "@runner-run/linux-x64-musl": "0.26.2", + "@runner-run/netbsd-x64": "0.26.2", + "@runner-run/win32-arm64-msvc": "0.26.2", + "@runner-run/win32-ia32-msvc": "0.26.2", + "@runner-run/win32-x64-msvc": "0.26.2" } }, "node_modules/saxes": { @@ -5127,7 +5127,7 @@ "@codemirror/state": "^6.7.1", "@codemirror/theme-one-dark": "^6.1.3", "@codemirror/view": "^6.43.9", - "@kjlint/changelog-rss": "^0.0.0", + "@kjlint/changelog-rss": "^0.0.3", "bulma": "^1.0.4", "codemirror": "^6.0.2", "devicon": "^2.17.0", @@ -5139,7 +5139,7 @@ "@types/node": "^26.4.0", "eslint": "^10.9.1", "jsdom": "^30.0.1", - "runner-run": "^0.26.1", + "runner-run": "^0.26.2", "tsc7": "npm:typescript@^7", "typescript": "^6", "typescript-eslint": "^8.68.0", @@ -5168,16 +5168,6 @@ } } }, - "playground/node_modules/@kjlint/changelog-rss": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/@kjlint/changelog-rss/-/changelog-rss-0.0.0.tgz", - "integrity": "sha512-hTkiRDX1VHFObz9EvfxfSGF0ZU1rSe1iR7vrVa6yZ8TuTFyFRTgmGluP4jxxlQlC9COQ6NcfxVrK8DfZhG5Pew==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/kjanat" - } - }, "playground/node_modules/typescript": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", diff --git a/package.json b/package.json index f61fa1767..81a97adcf 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,17 @@ { "name": "actionlint", + "version": "", "private": true, "description": "Static checker for GitHub Actions workflow files", "homepage": "https://actionlint.kjanat.dev", - "repository": "https://github.com/kjanat/actionlint", - "funding": { "type": "github", "url": "https://github.com/sponsors/kjanat" }, + "repository": { + "type": "git", + "url": "git+https://github.com/kjanat/actionlint.git" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kjanat" + }, "license": "MIT", "type": "module", "workspaces": [ @@ -20,9 +27,10 @@ "lint:biome": "biome check . --error-on-warnings", "matcher:generate": "node ./scripts/generate-actionlint-matcher/main.mjs .github/actionlint-matcher.json", "preview": "npm run preview --workspace playground", - "test": "run -p test:comment-cop test:feed test:matcher test:npm-facade test:shellcheck-versions typecheck", + "test": "run test:js", "test:comment-cop": "node --test ./.github/actions/comment-cop/comment-cop.test.mjs", - "test:feed": "npm run typecheck --workspace @kjlint/changelog-rss && npm run test --workspace @kjlint/changelog-rss", + "test:feed": "run -s @kjlint/changelog-rss:typecheck @kjlint/changelog-rss:test", + "test:js": "run -p test:comment-cop test:feed test:matcher test:npm-facade test:shellcheck-versions typecheck", "test:matcher": "node --test ./scripts/generate-actionlint-matcher/test.mjs", "test:npm-facade": "node --test ./distribution/npm/facade/test/*.test.mjs", "test:shellcheck-versions": "node --test ./.github/actions/shellcheck-versions/shellcheck-version-lifecycle.test.mjs", @@ -31,14 +39,20 @@ "update:pyflakes": "npm run update:pyflakes --workspace actionlint-action", "update:shellcheck": "npm run update:shellcheck --workspace actionlint-action" }, - "overrides": { "undici": ">=6.28.0" }, - "dependencies": { "feather-icons": "4.29.2" }, + "overrides": { + "@actions/github-script": { + "undici": ">=6.28.0" + } + }, + "dependencies": { + "feather-icons": "4.29.2" + }, "devDependencies": { "@actions/github-script": "github:actions/github-script", "@types/node": "^26.4.0", "@typescript/native": "npm:typescript@^7.0.2", "biome": "npm:@biomejs/biome@^2.5.14", - "runner-run": "^0.26.1", + "runner-run": "^0.26.2", "typescript": "npm:@typescript/typescript6@^6.0.2" }, "packageManager": "npm@12.0.2", diff --git a/packages/changelog-feed/package.json b/packages/changelog-feed/package.json index 433f5934a..342b58947 100644 --- a/packages/changelog-feed/package.json +++ b/packages/changelog-feed/package.json @@ -3,10 +3,21 @@ "version": "0.0.3", "description": "RSS parser, browser reader, and issue monitor for the GitHub Actions changelog feed", "homepage": "https://actionlint.kjanat.dev/github-changelog", - "repository": "kjanat/actionlint", - "funding": { "type": "github", "url": "https://github.com/sponsors/kjanat" }, + "repository": { + "type": "git", + "url": "git+https://github.com/kjanat/actionlint.git" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kjanat" + }, "license": "MIT", - "sideEffects": ["./dist/index.js", "./dist/github-actions-reader.js"], + "sideEffects": [ + "./dist/index.js", + "./dist/github-actions-reader.js", + "./src/index.ts", + "./src/github-actions-reader.ts" + ], "type": "module", "imports": { "#action": { @@ -24,32 +35,66 @@ "types": "./dist/github-actions-reader.d.ts", "default": "./dist/github-actions-reader.js" }, - "#rss": { "source": "./src/index.ts", "types": "./dist/index.d.ts", "default": "./dist/index.js" }, + "#rss": { + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, "#pkg": "./package.json" }, "exports": { - ".": { "types": "./dist/index.d.ts", "default": "./dist/index.js" }, - "./feed": { "types": "./dist/github-actions-feed.d.ts", "default": "./dist/github-actions-feed.js" }, - "./reader": { "types": "./dist/github-actions-reader.d.ts", "default": "./dist/github-actions-reader.js" }, - "./action": { "types": "./dist/github-actions-monitor.d.ts", "default": "./dist/github-actions-monitor.js" }, + ".": { + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./feed": { + "source": "./src/github-actions-feed.ts", + "types": "./dist/github-actions-feed.d.ts", + "default": "./dist/github-actions-feed.js" + }, + "./reader": { + "source": "./src/github-actions-reader.ts", + "types": "./dist/github-actions-reader.d.ts", + "default": "./dist/github-actions-reader.js" + }, + "./action": { + "source": "./src/github-actions-monitor.ts", + "types": "./dist/github-actions-monitor.d.ts", + "default": "./dist/github-actions-monitor.js" + }, "./package.json": "./package.json" }, "main": "./dist/index.js", "types": "./dist/index.d.ts", "typesVersions": { "*": { - "feed": ["./dist/github-actions-feed.d.ts"], - "reader": ["./dist/github-actions-reader.d.ts"], - "action": ["./dist/github-actions-monitor.d.ts"] + "feed": [ + "./dist/github-actions-feed.d.ts" + ], + "reader": [ + "./dist/github-actions-reader.d.ts" + ], + "action": [ + "./dist/github-actions-monitor.d.ts" + ] } }, - "files": ["/dist", "/src"], + "files": [ + "/dist", + "/src" + ], "scripts": { "build": "tsc -p tsconfig.build.json", "prepack": "npm run build", "test": "node --conditions=source --test ./tests/*.test.ts", "typecheck": "tsc" }, - "devDependencies": { "@actions/github-script": "github:actions/github-script", "typescript": ">=7" }, - "volta": { "extends": "../../package.json" } + "devDependencies": { + "@actions/github-script": "github:actions/github-script", + "typescript": ">=7" + }, + "volta": { + "extends": "../../package.json" + } } diff --git a/packages/github-action/package.json b/packages/github-action/package.json index 5ecf6844a..a4516d2c2 100644 --- a/packages/github-action/package.json +++ b/packages/github-action/package.json @@ -1,5 +1,6 @@ { "name": "actionlint-action", + "version": "", "private": true, "description": "JavaScript launcher for the actionlint GitHub Action", "type": "module", @@ -22,6 +23,25 @@ "@types/node": "^24", "tsdown": "0.23.0" }, - "engines": { "node": "24" }, - "volta": { "node": "24.21.0" } + "engines": { + "node": "24" + }, + "devEngines": { + "runtime": [ + { + "name": "node", + "version": ">=24", + "onFail": "warn" + } + ], + "packageManager": { + "name": "npm", + "version": ">=12.0.2", + "onFail": "warn" + } + }, + "volta": { + "node": "24.21.0", + "extends": "../../package.json" + } } diff --git a/playground/README.md b/playground/README.md index 5b3695364..5736846b6 100644 --- a/playground/README.md +++ b/playground/README.md @@ -38,7 +38,9 @@ make clean Vite derives the version badge and links from Git when it starts. A clean release tag links to its release; development builds show `git describe` and link to their commit. Documentation links use that same commit. Without tags, the badge -shows the commit; without Git metadata, it shows `development`. No release version is maintained in `index.html`. +shows the commit; without Git metadata, it shows `development`. Pages also reads the latest published release and displays +a separate release link when the release API is available. Local builds can supply that tag through `ACTIONLINT_LATEST_RELEASE`; without it, only the source +badge appears. The release label does not identify the built WASM. No release version is maintained in `index.html`. ## Lint @@ -54,6 +56,6 @@ Formatting is handled from the repository root by [dprint](https://dprint.dev/). ## Deployment The [Pages workflow](../.github/workflows/pages.yml) builds the WASM and site from the same checkout and deploys `dist/` -on pushes to `master` and after successful Release runs. The release-triggered build checks out the release commit with -its tags, so the badge updates once the release exists. See +on pushes to `master` and after successful Release runs. Release-triggered builds use the current default branch with +its tags. The source revision and latest published release remain separately labeled. See [CONTRIBUTING.md](../CONTRIBUTING.md) for more details. diff --git a/playground/github-changelog/index.html b/playground/github-changelog/index.html index 4a3173ad7..2e49acc01 100644 --- a/playground/github-changelog/index.html +++ b/playground/github-changelog/index.html @@ -67,16 +67,8 @@