Compare commits

...

9 Commits

Author SHA1 Message Date
Taiki Endo
13af5a2f7c cargo-zigbuild 2026-05-05 15:10:04 +00:00
Taiki Endo
cca35edeb1 Release 2.77.1 2026-05-05 15:10:04 +00:00
Taiki Endo
e60138699e ci: Fix release workflow 2026-05-06 00:06:18 +09:00
Taiki Endo
651945350f Update tombi@latest to 0.10.3 2026-05-05 14:05:31 +00:00
Taiki Endo
bfbdc59475 Update prek manifest 2026-05-05 14:05:31 +00:00
Taiki Endo
9f306516af Update martin@latest to 1.8.2 2026-05-05 14:05:31 +00:00
Taiki Endo
d1eee517af codegen: Ignore uv 0.11.9
```
verifying https://github.com/astral-sh/uv/releases/download/0.11.9/uv-x86_64-unknown-linux-musl.tar.gz with gh attestation verify

Error: HTTP 404: Not Found (https://api.github.com/repos/astral-sh/uv/attestations/sha256:ac3e5051edbf30613b0f90d1c18d4807fea6b246f37490799fee0c1284a658b2?per_page=30&predicate_type=https://slsa.dev/provenance/v1)
```

https://github.com/astral-sh/uv/issues/19278
2026-05-05 22:47:55 +09:00
Taiki Endo
a4ad60dd6a ci: Use taiki-e/github-actions/.github/workflows/action-release.yml 2026-05-05 22:36:13 +09:00
Taiki Endo
39b209ec4a ci: Update config 2026-05-05 10:56:05 +09:00
15 changed files with 218 additions and 422 deletions

View File

@@ -34,7 +34,6 @@ rdme
rootfs
sccache
SHASUMS
shortstat
sigstore
startswith
syft
@@ -43,7 +42,6 @@ udeps
USERPROFILE
wasmtime
watchexec
worktree
xbuild
xscale
xwin

View File

@@ -32,20 +32,20 @@ concurrency:
jobs:
miri:
uses: taiki-e/github-actions/.github/workflows/miri.yml@75415970465917c31d702710acd9c9248b9af314 # main
uses: taiki-e/github-actions/.github/workflows/miri.yml@2474ed4664eb8903c151603a9d841512c069f7f6 # main
with:
# NB: sync with test job's --exclude option
args: --exclude install-action-internal-codegen
msrv:
uses: taiki-e/github-actions/.github/workflows/msrv.yml@75415970465917c31d702710acd9c9248b9af314 # main
uses: taiki-e/github-actions/.github/workflows/msrv.yml@2474ed4664eb8903c151603a9d841512c069f7f6 # main
test-manifest-schema:
uses: taiki-e/github-actions/.github/workflows/test.yml@75415970465917c31d702710acd9c9248b9af314 # main
uses: taiki-e/github-actions/.github/workflows/test.yml@2474ed4664eb8903c151603a9d841512c069f7f6 # main
with:
# NB: sync with miri job's --exclude option
test-args: --exclude install-action-internal-codegen
no-std: false
tidy:
uses: taiki-e/github-actions/.github/workflows/tidy.yml@75415970465917c31d702710acd9c9248b9af314 # main
uses: taiki-e/github-actions/.github/workflows/tidy.yml@2474ed4664eb8903c151603a9d841512c069f7f6 # main
permissions:
contents: write # for creating branch for pr
pull-requests: write # unused (used in `codegen-automerge: true` case)
@@ -117,8 +117,6 @@ jobs:
- uses: ./
with:
tool: ${{ steps.tool-list.outputs.tool }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Test all shells listed in https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell
- name: Test bash
run: just --version && shfmt --version && protoc --version && rustc --version && cargo --version && rustup --version
@@ -159,7 +157,7 @@ jobs:
- run: env
- uses: ./
with:
# NB: Update alias list in release.yml, case for aliases in main.sh,
# NB: Update alias list in tools/ci/release-post-commit.sh, case for aliases in main.sh,
# and match for alias for tools/codegen/src/tools-markdown.rs.
tool: |
nextest
@@ -167,8 +165,6 @@ jobs:
typos-cli
wasm-bindgen-cli
wasmtime-cli
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Test bash
run: cargo-nextest nextest --version && taplo --version
shell: bash
@@ -319,8 +315,6 @@ jobs:
- uses: ./
with:
tool: ${{ steps.tool-list.outputs.tool }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Test bash
run: just --version && shfmt --version
shell: bash

View File

@@ -32,7 +32,7 @@ concurrency:
jobs:
manifest:
uses: taiki-e/github-actions/.github/workflows/gen.yml@a6df8c9ea0038c730f138f0f849d692cf387ea4e # main
uses: taiki-e/github-actions/.github/workflows/gen.yml@2474ed4664eb8903c151603a9d841512c069f7f6 # main
permissions:
contents: write # for creating branch for pr
pull-requests: write # for gh pr review --approve

View File

@@ -32,408 +32,21 @@ concurrency:
cancel-in-progress: false
jobs:
prepare:
if: github.repository_owner == 'taiki-e' && inputs.target == 'install-action'
runs-on: ubuntu-24.04
timeout-minutes: 60
steps:
- uses: taiki-e/checkout-action@7d1e50e93dc4fb3bba58f85018fadf77898aee8b # v1.4.2
- uses: taiki-e/install-action@58e862542551f667fa44c8a2a4a1d64ad477c96a # v2.75.17
with:
tool: parse-changelog
fallback: none
- id: check
run: |
IFS=$'\n\t'
trap -- 's=$?; printf >&2 "%s\n" "${0##*/}:${LINENO}: \`${BASH_COMMAND}\` exit with ${s}"; exit ${s}' ERR
retry() {
for i in {1..10}; do
if "$@"; then
return 0
else
sleep "${i}"
fi
done
"$@"
}
bail() {
printf '::error::%s\n' "$*"
exit 1
}
if { sed --help 2>&1 || true; } | grep -Eq -e '-i extension'; then
in_place=(-i '')
else
in_place=(-i)
fi
# shellcheck disable=SC2153
version="${VERSION}"
printf 'version(input): %s\n' "${version}"
# shellcheck disable=SC2153
tag_prefix="${TAG_PREFIX}"
printf 'tag_prefix: %s\n' "${tag_prefix}"
# shellcheck disable=SC2153
changelog="${CHANGELOG}"
printf 'changelog: %s\n' "${changelog}"
# Get the current date.
release_date=$(date -u '+%Y-%m-%d')
printf 'release-date: %s\n' "${release_date}"
printf 'release-date=%s\n' "${release_date}" >>"${GITHUB_OUTPUT}"
# Get the current revision.
rev=$(git rev-parse HEAD)
printf 'rev: %s\n' "${rev}"
printf 'rev=%s\n' "${rev}" >>"${GITHUB_OUTPUT}"
prev_version=$(parse-changelog --title-no-link "${changelog}" | cut -d' ' -f1)
# Determine the new version number and tag name.
case "${version}" in
major | minor | patch)
if [[ ! "${prev_version}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
bail "pre-release/build-metadata"
fi
major="${prev_version%%.*}"
minor_patch="${prev_version#*.}"
minor="${minor_patch%%.*}"
patch="${minor_patch#*.}"
case "${version}" in
major) version="$((major+1)).0.0" ;;
minor) version="${major}.$((minor+1)).0" ;;
patch) version="${major}.${minor}.$((patch+1))" ;;
esac
;;
*) version="${version#v}" ;;
esac
if [[ ! "${version}" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z\.-]+)?(\+[0-9A-Za-z\.-]+)?$ ]]; then
bail "invalid version format '${version}'"
fi
printf 'version: %s\n' "${version}"
printf 'version=%s\n' "${version}" >>"${GITHUB_OUTPUT}"
tag="${tag_prefix}${version}"
printf 'tag: %s\n' "${tag}"
printf 'tag=%s\n' "${tag}" >>"${GITHUB_OUTPUT}"
# Make sure the same release has not been created in the past.
if gh release view "${tag}" &>/dev/null; then
bail "tag '${tag}' has already been created and pushed"
fi
# Make sure that the release was created from an allowed branch.
if ! git branch | grep -Eq '\* '"${BRANCH}"'$'; then
bail "current branch is not '${BRANCH}'"
fi
changed_paths=()
retry git fetch origin --tags &>/dev/null
tags=$(git --no-pager tag | { grep -E "^${tag_prefix}[0-9]+" || true; })
if [[ -n "${tags}" ]]; then
printf 'has-tags=true\n' >>"${GITHUB_OUTPUT}"
# Make sure the same release does not exist in changelog.
if grep -Eq "^## \\[${version//./\\.}\\]" "${changelog}"; then
bail "release ${version} already exist in ${changelog}"
fi
if grep -Eq "^\\[${version//./\\.}\\]: " "${changelog}"; then
bail "link to ${version} already exist in ${changelog}"
fi
# Update changelog.
changed_paths+=("${changelog}")
remote_url=$(grep -E '^\[Unreleased\]: https://' "${changelog}" | sed -E 's/^\[Unreleased\]: //; s/\.\.\.HEAD$//')
prev_tag="${remote_url#*/compare/}"
remote_url="${remote_url%/compare/*}"
sed -E "${in_place[@]}" \
-e "s/^## \\[Unreleased\\]/## [Unreleased]\\n\\n## [${version}] - ${release_date}/" \
-e "s#^\[Unreleased\]: https://.*#[Unreleased]: ${remote_url}/compare/${tag}...HEAD\\n[${version}]: ${remote_url}/compare/${prev_tag}...${tag}#" "${changelog}"
if ! grep -Eq "^## \\[${version//./\\.}\\] - ${release_date}$" "${changelog}"; then
bail "failed to update ${changelog}"
fi
if ! grep -Eq "^\\[${version//./\\.}\\]: " "${changelog}"; then
bail "failed to update ${changelog}"
fi
else
# Make sure the release exists in changelog.
if ! grep -Eq "^## \\[${version//./\\.}\\] - ${release_date}$" "${changelog}"; then
bail "release ${version} does not exist in ${changelog} or has wrong release date"
fi
if ! grep -Eq "^\\[${version//./\\.}\\]: " "${changelog}"; then
bail "link to ${version} does not exist in ${changelog}"
fi
fi
# Make sure that a valid release note for this version exists.
# https://github.com/taiki-e/parse-changelog
changes=$(parse-changelog "${changelog}" "${version}")
if [[ -z "${changes}" ]]; then
bail "changelog for ${version} has no body"
fi
printf '============== CHANGELOG ==============\n'
printf '%s\n' "${changes}"
printf '=======================================\n'
if [[ -n "${tags}" ]]; then
git -c color.ui=always diff "${changed_paths[@]}"
git add "${changed_paths[@]}"
fi
# Make sure that there is no unintended change.
git add -N .
git -c color.ui=always diff --exit-code
(
set -x
git show HEAD --shortstat
)
env:
VERSION: ${{ inputs.version }}
TAG_PREFIX: v
CHANGELOG: CHANGELOG.md
BRANCH: main
outputs:
has-tags: ${{ steps.check.outputs.has-tags }}
release-date: ${{ steps.check.outputs.release-date }}
rev: ${{ steps.check.outputs.rev }}
tag: ${{ steps.check.outputs.tag }}
version: ${{ steps.check.outputs.version }}
release:
if: github.repository_owner == 'taiki-e' && inputs.target == 'install-action'
needs: prepare
runs-on: ubuntu-24.04
timeout-minutes: 60
environment:
name: release
deployment: false
uses: taiki-e/github-actions/.github/workflows/action-release.yml@2474ed4664eb8903c151603a9d841512c069f7f6 # main
permissions:
contents: write # for taiki-e/create-gh-release-action
steps:
- uses: taiki-e/checkout-action@7d1e50e93dc4fb3bba58f85018fadf77898aee8b # v1.4.2
- uses: taiki-e/install-action@58e862542551f667fa44c8a2a4a1d64ad477c96a # v2.75.17
with:
tool: parse-changelog
fallback: none
- uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v3.1.1
id: push-token
with:
client-id: ${{ secrets.PUSH_TOKEN_APP_CLIENT_ID }}
private-key: ${{ secrets.PUSH_TOKEN_APP_PRIVATE_KEY }}
- name: Create and push release commit and tag
id: push
run: |
IFS=$'\n\t'
trap -- 's=$?; printf >&2 "%s\n" "${0##*/}:${LINENO}: \`${BASH_COMMAND}\` exit with ${s}"; exit ${s}' ERR
retry() {
for i in {1..10}; do
if "$@"; then
return 0
else
sleep "${i}"
fi
done
"$@"
}
bail() {
printf '::error::%s\n' "$*"
exit 1
}
if { sed --help 2>&1 || true; } | grep -Eq -e '-i extension'; then
in_place=(-i '')
else
in_place=(-i)
fi
git config user.name 'Taiki Endo'
git config user.email 'te316e89@gmail.com'
# shellcheck disable=SC2153
version="${VERSION}"
# shellcheck disable=SC2153
tag="${TAG}"
# shellcheck disable=SC2153
changelog="${CHANGELOG}"
# shellcheck disable=SC2153
release_date="${RELEASE_DATE}"
# Make sure the current revision is same as prepare step.
# --unshallow is necessary to successfully push the
# "releases/${major_version_tag}" branch in the subsequent step.
retry git fetch origin --unshallow &>/dev/null
rev=$(git rev-parse HEAD)
if [[ "${rev}" != "${PREPARE_REV}" ]]; then
bail "revision difference between prepare step"
fi
# Make sure the same release has not been created in the past.
if gh release view "${tag}" &>/dev/null; then
bail "tag '${tag}' has already been created and pushed"
fi
# Make sure that the release was created from an allowed branch.
if ! git branch | grep -Eq '\* '"${BRANCH}"'$'; then
bail "current branch is not '${BRANCH}'"
fi
changed_paths=()
if [[ "${HAS_TAGS}" == "true" ]]; then
# Update changelog.
changed_paths+=("${changelog}")
remote_url=$(grep -E '^\[Unreleased\]: https://' "${changelog}" | sed -E 's/^\[Unreleased\]: //; s/\.\.\.HEAD$//')
prev_tag="${remote_url#*/compare/}"
remote_url="${remote_url%/compare/*}"
sed -E "${in_place[@]}" \
-e "s/^## \\[Unreleased\\]/## [Unreleased]\\n\\n## [${version}] - ${release_date}/" \
-e "s#^\[Unreleased\]: https://.*#[Unreleased]: ${remote_url}/compare/${tag}...HEAD\\n[${version}]: ${remote_url}/compare/${prev_tag}...${tag}#" "${changelog}"
if ! grep -Eq "^## \\[${version//./\\.}\\] - ${release_date}$" "${changelog}"; then
bail "failed to update ${changelog}"
fi
if ! grep -Eq "^\\[${version//./\\.}\\]: " "${changelog}"; then
bail "failed to update ${changelog}"
fi
fi
changes=$(parse-changelog "${changelog}" "${version}")
printf '============== CHANGELOG ==============\n'
printf '%s\n' "${changes}"
printf '=======================================\n'
if [[ "${HAS_TAGS}" == "true" ]]; then
# Create a release commit.
(
set -x
git add "${changed_paths[@]}"
git commit -m "Release ${version}"
)
fi
major_version_tag="v${version%%.*}"
(
set -x
git tag "${tag}"
git branch "releases/${major_version_tag}"
git tag -f "${major_version_tag}"
)
refs=("refs/heads/${BRANCH}" "refs/tags/${tag}" "refs/heads/releases/${major_version_tag}" "+refs/tags/${major_version_tag}")
tools=()
for tool in tools/codegen/base/*.json; do
tool="${tool##*/}"
tools+=("${tool%.*}")
done
# Aliases.
# NB: Update case for aliases in main.sh, tool input option in test-alias job
# in .github/workflows/ci.yml, and match for alias for tools/codegen/src/tools-markdown.rs.
tools+=(
nextest
taplo-cli
typos-cli
wasm-bindgen-cli
wasmtime-cli
)
# Non-manifest-based tools.
tools+=(valgrind)
branches=()
for tool in "${tools[@]}"; do
(
set -x
git checkout -b "releases/${tool}"
sed -E "${in_place[@]}" action.yml \
-e "s/required: true/required: false/g" \
-e "s/# default: #publish:tool/default: ${tool}/g"
git add action.yml
git commit -m "${tool}"
git tag -f "${tool}"
git checkout refs/tags/"${tag}"
)
refs+=("+refs/heads/releases/${tool}" "+refs/tags/${tool}")
branches+=("releases/${tool}")
done
prev_credential_helper=$(git config get --local credential.helper || true)
if [[ -n "${prev_credential_helper}" ]]; then
printf 'credential helper is already set (%s)\n' "${prev_credential_helper}"
else
protocol="${GITHUB_SERVER_URL%%://*}"
hostname="${GITHUB_SERVER_URL#*://}"
(
set -x
git config --local credential.helper cache
)
git credential approve <<EOF
protocol=${protocol}
host=${hostname}
username=${GITHUB_ACTOR}
password=${PUSH_TOKEN}
EOF
# Remove credential helper config on exit.
trap -- '(set -x; git credential-cache exit; git config --local --unset credential.helper || true)' EXIT
fi
(
set -x
retry git push origin --atomic "${refs[@]}"
git branch -d "releases/${major_version_tag}"
git branch -D "${branches[@]}"
schema_workspace=/tmp/workspace
rm -rf -- "${schema_workspace}"
# Checkout manifest-schema branch
schema_version="$(cargo metadata --format-version=1 --no-deps | jq -r '.packages[] | select(.name == "install-action-manifest-schema") | .version')"
if [[ "${schema_version}" == "0."* ]]; then
schema_version="0.$(cut -d. -f2 <<<"${schema_version}")"
else
schema_version="$(cut -d. -f1 <<<"${schema_version}")"
fi
schema_branch="manifest-schema-${schema_version}"
git worktree add --force "${schema_workspace}"
(
cd -- "${schema_workspace}"
if git fetch origin "${schema_branch}"; then
git checkout "origin/${schema_branch}" -B "${schema_branch}"
elif ! git checkout "${schema_branch}"; then
# New branch with no history. Credit: https://stackoverflow.com/a/13969482
git checkout --orphan "${schema_branch}"
git rm -rf -- . || true
git commit -m 'Initial commit' --allow-empty
fi
)
# Copy over schema
cp -- ./manifests/* "${schema_workspace}"
(
cd -- "${schema_workspace}"
# Stage changes
git add .
# Detect changes, then commit and push if changes exist
if [[ "$(git status --porcelain=v1 | LC_ALL=C wc -l)" != "0" ]]; then
git commit -m 'Update manifest schema'
retry git push origin HEAD
fi
)
rm -rf -- "${schema_workspace}"
git worktree prune
# TODO: get branch in schema_workspace dir instead
git branch -D "${schema_branch}" "${schema_workspace##*/}"
)
env:
VERSION: ${{ needs.prepare.outputs.version }}
RELEASE_DATE: ${{ needs.prepare.outputs.release-date }}
HAS_TAGS: ${{ needs.prepare.outputs.has-tags }}
TAG: ${{ needs.prepare.outputs.tag }}
CHANGELOG: CHANGELOG.md
BRANCH: main
PREPARE_REV: ${{ needs.prepare.outputs.rev }}
# Note that if we use secrets.GITHUB_TOKEN, the pushed commit/tag cannot trigger other workflows.
PUSH_TOKEN: ${{ steps.push-token.outputs.token }}
- uses: taiki-e/create-gh-release-action@eba8ea96c86cca8a37f1b56e94b4d13301fba651 # v1.11.0
with:
changelog: CHANGELOG.md
title: $version
branch: main
ref: refs/tags/${{ needs.prepare.outputs.tag }}
secrets:
PUSH_TOKEN_APP_CLIENT_ID: ${{ secrets.PUSH_TOKEN_APP_CLIENT_ID }}
PUSH_TOKEN_APP_PRIVATE_KEY: ${{ secrets.PUSH_TOKEN_APP_PRIVATE_KEY }}
with:
version: ${{ inputs.version }}
post-commit-script: tools/ci/release-post-commit.sh
release-manifest-schema:
if: github.repository_owner == 'taiki-e' && inputs.target == 'install-action-manifest-schema'
uses: taiki-e/github-actions/.github/workflows/rust-release.yml@75415970465917c31d702710acd9c9248b9af314 # main
uses: taiki-e/github-actions/.github/workflows/rust-release.yml@2474ed4664eb8903c151603a9d841512c069f7f6 # main
permissions:
contents: write # for taiki-e/create-gh-release-action
id-token: write # for rust-lang/crates-io-auth-action
@@ -444,7 +57,7 @@ jobs:
with:
version: ${{ inputs.version }}
tag-prefix: install-action-manifest-schema-
crates: tools/manifest-schema
package: install-action-manifest-schema
changelog: tools/manifest-schema/CHANGELOG.md
title: $prefix $version
prefix: install-action-manifest-schema

View File

@@ -10,6 +10,12 @@ Note: In this file, do not use the hard wrap in the middle of a sentence for com
## [Unreleased]
## [2.77.1] - 2026-05-05
- Update `tombi@latest` to 0.10.3.
- Update `martin@latest` to 1.8.2.
## [2.77.0] - 2026-05-05
- Support `rust`. ([#1779](https://github.com/taiki-e/install-action/pull/1779))
@@ -6460,7 +6466,8 @@ Note: This release is considered a breaking change because installing on version
Initial release
[Unreleased]: https://github.com/taiki-e/install-action/compare/v2.77.0...HEAD
[Unreleased]: https://github.com/taiki-e/install-action/compare/v2.77.1...HEAD
[2.77.1]: https://github.com/taiki-e/install-action/compare/v2.77.0...v2.77.1
[2.77.0]: https://github.com/taiki-e/install-action/compare/v2.76.0...v2.77.0
[2.76.0]: https://github.com/taiki-e/install-action/compare/v2.75.30...v2.76.0
[2.75.30]: https://github.com/taiki-e/install-action/compare/v2.75.29...v2.75.30

View File

@@ -4,8 +4,8 @@ description: GitHub Action for installing development tools
inputs:
tool:
description: Tools to install (whitespace or comma separated list)
required: true
# default: #publish:tool
required: false
default: cargo-zigbuild
checksum:
description: Whether to enable checksums (strongly discouraged to disable)
required: false

View File

@@ -774,6 +774,7 @@ for tool in "${tools[@]}"; do
esac
fi
installed_bin=()
# NB: Update tools/ci/release-post-commit.sh when adding non-manifest-based tools.
case "${tool}" in
rust)
if [[ "${version}" == 'latest' ]]; then
@@ -957,7 +958,7 @@ for tool in "${tools[@]}"; do
;;
*)
# Handle aliases.
# NB: Update alias list in .github/workflows/release.yml, tool input option in test-alias in .github/workflows/ci.yml,
# NB: Update alias list in tools/ci/release-post-commit.sh, tool input option in test-alias in .github/workflows/ci.yml,
# and match for alias for tools/codegen/src/tools-markdown.rs.
# TODO(codegen): auto-detect cases where crate name and tool name are different.
case "${tool}" in

24
manifests/martin.json generated
View File

@@ -31,13 +31,31 @@
}
},
"latest": {
"version": "1.8.0"
"version": "1.8.2"
},
"1": {
"version": "1.8.0"
"version": "1.8.2"
},
"1.8": {
"version": "1.8.0"
"version": "1.8.2"
},
"1.8.2": {
"x86_64_linux_musl": {
"etag": "0x8DEAA75F9C0717B",
"hash": "b7ce4906219974f33c0c80994fde6afe503cd8fc6e4c37fd75caf77f320d98cc"
},
"x86_64_macos": {
"etag": "0x8DEAA75F8954F43",
"hash": "6be5743e73b43bc7ef34d17b94e7fdce5f3eafa26120a67ce317b55d557ba481"
},
"aarch64_linux_musl": {
"etag": "0x8DEAA75F885D044",
"hash": "d994a862ae5ded571da994f3e525c04e4afb8ee355e3c91135fb0ff78f8d1294"
},
"aarch64_macos": {
"etag": "0x8DEAA75F8A93635",
"hash": "11a05523e1e59c8322bae7bb49442eaa22bb355905222f96e723b9ca42dd4316"
}
},
"1.8.0": {
"x86_64_linux_musl": {

34
manifests/prek.json generated
View File

@@ -44,6 +44,40 @@
"0.3": {
"version": "0.3.11"
},
"0.3.12": {
"x86_64_linux_musl": {
"etag": "0x8DEAA7D00F52541",
"hash": "6e4874a2d83451df4946e81f161dc8c6bdc675064cca1f2e1e8b0921dc862ae8"
},
"x86_64_macos": {
"etag": "0x8DEAA7D008188C4",
"hash": "ed4aa96e2c71a29d30d5e8e8b173155cda9f6aea9822e4773ccff70da5a8287a"
},
"x86_64_windows": {
"etag": "0x8DEAA7D00B66709",
"hash": "b75cdae3279806c7a046b18c45c601fe3ec1a380f11911bc39c5273100e18fce"
},
"aarch64_linux_musl": {
"etag": "0x8DEAA7CFF326611",
"hash": "2d7bc8ce9bb8521a2b9f67ad23d556fbf208a8cf5d141f09c3dbae919df756aa"
},
"aarch64_macos": {
"etag": "0x8DEAA7CFEEC3638",
"hash": "8e31a0e21c2d70e0583500f728e2c1aaba45c397a2ef2c4ea43afb7cd64f5d04"
},
"aarch64_windows": {
"etag": "0x8DEAA7CFEF85D7F",
"hash": "6f69d45aa32571e9c34104564dd06a32b7aeec9802831a00a5074fa1a89d5ba9"
},
"riscv64_linux_gnu": {
"etag": "0x8DEAA7D0042F174",
"hash": "c4b23c1b7381f251499bba7e5d01c356a39b313f8fe0a5bf53a0e1f4f7d8d91a"
},
"s390x_linux_gnu": {
"etag": "0x8DEAA7D006A2383",
"hash": "5b6073abfcfd85c692c6e0f71185f24af911b55d6303a4dfa65fb0c6951d3ede"
}
},
"0.3.11": {
"x86_64_linux_musl": {
"etag": "0x8DEA414EFB86FDD",

40
manifests/tombi.json generated
View File

@@ -2,10 +2,46 @@
"rust_crate": null,
"template": null,
"latest": {
"version": "0.10.2"
"version": "0.10.3"
},
"0.10": {
"version": "0.10.2"
"version": "0.10.3"
},
"0.10.4": {
"x86_64_linux_musl": {
"url": "https://github.com/tombi-toml/tombi/releases/download/v0.10.4/tombi-cli-0.10.4-x86_64-unknown-linux-musl.tar.gz",
"etag": "0x8DEAA621E82D459",
"hash": "2988df7c5ac115dc20ebd42f45ba039df0b8cda110b444f419bec814db2c880a",
"bin": "tombi-cli-0.10.4-x86_64-unknown-linux-musl/tombi"
},
"x86_64_macos": {
"url": "https://github.com/tombi-toml/tombi/releases/download/v0.10.4/tombi-cli-0.10.4-x86_64-apple-darwin.tar.gz",
"etag": "0x8DEAA621E732E8B",
"hash": "f3ba04e491d0e2dbf42ecf6fc5d0e0c54d2b71cc74c8a4f59d34717a57544d15",
"bin": "tombi-cli-0.10.4-x86_64-apple-darwin/tombi"
},
"x86_64_windows": {
"url": "https://github.com/tombi-toml/tombi/releases/download/v0.10.4/tombi-cli-0.10.4-x86_64-pc-windows-msvc.zip",
"etag": "0x8DEAA621EFE096F",
"hash": "150c3b9f0ddb3a16faec88980df034889f618d671bdeecec4a49e45f507a4a7d"
},
"aarch64_linux_musl": {
"url": "https://github.com/tombi-toml/tombi/releases/download/v0.10.4/tombi-cli-0.10.4-aarch64-unknown-linux-musl.tar.gz",
"etag": "0x8DEAA621E95363E",
"hash": "0aac20f61dc0ead3eab386ecaf176ad19b8734e02a2efc031bbaeefc3ace7661",
"bin": "tombi-cli-0.10.4-aarch64-unknown-linux-musl/tombi"
},
"aarch64_macos": {
"url": "https://github.com/tombi-toml/tombi/releases/download/v0.10.4/tombi-cli-0.10.4-aarch64-apple-darwin.tar.gz",
"etag": "0x8DEAA621EE6566A",
"hash": "efff1d4fd57364c1b6f0ab7045006ed58d6fdf79925022213d44f4e0993a37a1",
"bin": "tombi-cli-0.10.4-aarch64-apple-darwin/tombi"
},
"aarch64_windows": {
"url": "https://github.com/tombi-toml/tombi/releases/download/v0.10.4/tombi-cli-0.10.4-aarch64-pc-windows-msvc.zip",
"etag": "0x8DEAA621E83490D",
"hash": "2a035a8a3b51dcc5cbff9c84391734499acf7d70279ecf317fc717d22e003647"
}
},
"0.10.3": {
"x86_64_linux_musl": {

86
tools/ci/release-post-commit.sh Executable file
View File

@@ -0,0 +1,86 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: Apache-2.0 OR MIT
set -CeEuo pipefail
IFS=$'\n\t'
trap -- 's=$?; printf >&2 "%s\n" "${0##*/}:${LINENO}: \`${BASH_COMMAND}\` exit with ${s}"; exit ${s}' ERR
cd -- "$(dirname -- "$0")"/../..
tools=()
for tool in tools/codegen/base/*.json; do
tool="${tool##*/}"
tools+=("${tool%.*}")
done
# Aliases.
# NB: Update case for aliases in main.sh, tool input option in test-alias job
# in .github/workflows/ci.yml, and match for alias for tools/codegen/src/tools-markdown.rs.
tools+=(
nextest
taplo-cli
typos-cli
wasm-bindgen-cli
wasmtime-cli
)
# Non-manifest-based tools.
tools+=(
rust
valgrind
)
for tool in "${tools[@]}"; do
(
set -x
git checkout -b "releases/${tool}"
sed -Ei action.yml \
-e "s/required: true/required: false/g" \
-e "s/# default: #publish:tool/default: ${tool}/g"
git add action.yml
git commit -m "${tool}"
git tag -f "${tool}"
git checkout main
)
refs+=",+refs/heads/releases/${tool},+refs/tags/${tool}"
done
set -x
# Copy manifests to tmp dir.
manifests=/tmp/manifests
rm -rf -- "${manifests}"
mkdir -p -- "${manifests}"
cp -- ./manifests/* "${manifests}"
# Checkout manifest-schema branch
schema_version="$(grep -Eo "^version = \".*\" #publish:version" tools/manifest-schema/Cargo.toml)"
schema_version="$(cut -d\" -f2 <<<"${schema_version}")"
if [[ "${schema_version}" == '0.'* ]]; then
schema_version="0.$(cut -d. -f2 <<<"${schema_version}")"
else
schema_version="$(cut -d. -f1 <<<"${schema_version}")"
fi
schema_branch="manifest-schema-${schema_version}"
refs+=",refs/heads/${schema_branch}"
if git fetch origin "${schema_branch}"; then
git checkout "origin/${schema_branch}" -B "${schema_branch}"
elif ! git checkout "${schema_branch}"; then
# New branch with no history. Credit: https://stackoverflow.com/a/13969482
git checkout --orphan "${schema_branch}"
git rm -rf -- . || true
git commit -m 'Initial commit' --allow-empty
fi
# Copy over schema
cp -- "${manifests}"/* ./
# Stage changes
git add .
# Detect changes, then commit and push if changes exist
if [[ "$(git status --porcelain=v1 | LC_ALL=C wc -l)" != "0" ]]; then
git commit -m 'Update manifest schema'
fi
git checkout main
printf 'additional-refs: %s\n' "${refs}"
if [[ -n "${GITHUB_OUTPUT:-}" ]]; then
printf 'additional-refs=%s\n' "${refs}" >>"${GITHUB_OUTPUT}"
fi

View File

@@ -4,6 +4,7 @@
"tag_prefix": "",
"rust_crate": "${package}",
"version_range": ">= 0.8.16",
"ignore": ["0.11.9"],
"signing": {
"version_range": ">= 0.9.13",
"kind": {

View File

@@ -31,9 +31,13 @@ pub struct BaseManifest {
/// Path to binaries in archive. Default to `${tool}${exe}`.
pub bin: Option<StringOrArray>,
pub signing: Option<Signing>,
pub version_range: Option<String>,
/// Include to manifest, but exclude from candidate for latest and omitted versions.
#[serde(default)]
pub broken: Vec<semver::Version>,
pub version_range: Option<String>,
/// Exclude from manifest.
#[serde(default)]
pub ignore: Vec<semver::Version>,
/// Use glibc build if host_env is gnu.
#[serde(default)]
pub prefer_linux_gnu: bool,

View File

@@ -96,7 +96,11 @@ fn main() {
semver_version = format!("{default_major_version}.{version}").parse();
}
}
Some((Reverse(semver_version.ok()?), (version, release)))
let semver_version = semver_version.ok()?;
if base_info.ignore.contains(&semver_version) {
return None;
}
Some((Reverse(semver_version), (version, release)))
})
.collect();

View File

@@ -17,7 +17,7 @@ targets=(
powerpc64le-unknown-linux-gnu
powerpc64le-unknown-linux-musl
riscv64gc-unknown-linux-gnu
# riscv64gc-unknown-linux-musl # tier 2 without host tools
# riscv64gc-unknown-linux-musl # tier 2 without host tools: TODO: https://github.com/rust-lang/rust/issues/156191
s390x-unknown-linux-gnu
# s390x-unknown-linux-musl # tier 3
x86_64-apple-darwin