Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 72 additions & 20 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -224,19 +224,31 @@ jobs:
if [[ "$mode" == "dry-run" ]]; then
publish_cmd+=(--dry-run)
fi
"${publish_cmd[@]}" deb
"${publish_cmd[@]}" --publish-report target/publish-reports/deb.toml deb

- name: Upload deb packages to GitHub Release
if: github.ref_type == 'tag' && startsWith(github.ref_name, 'v')
env:
GH_TOKEN: ${{ github.token }}
run: |
set -euo pipefail
shopt -s nullglob
assets=(target/*/release/deb/*.deb)
report=target/publish-reports/deb.toml
test -f "$report"
mapfile -t assets < <(python3 - "$report" <<'PY'
import sys
import tomllib

with open(sys.argv[1], "rb") as handle:
report = tomllib.load(handle)

for manifest in report.get("manifests", []):
for asset in manifest.get("artifacts", []):
print(asset["local-path"])
PY
)
if [ "${#assets[@]}" -eq 0 ]; then
echo "no deb release assets found" >&2
exit 1
echo "no deb release assets selected by publish report; skipping GitHub Release upload"
exit 0
fi
for attempt in {1..30}; do
if gh release view "$GITHUB_REF_NAME" --repo "$GITHUB_REPOSITORY" >/dev/null 2>&1; then
Expand All @@ -258,6 +270,7 @@ jobs:
if-no-files-found: ignore
path: |
gmutils/target/common/deb/**
gmutils/target/publish-reports/*.toml

linux-rpm:
needs: github-release
Expand Down Expand Up @@ -369,19 +382,31 @@ jobs:
if [[ "$mode" == "dry-run" ]]; then
publish_cmd+=(--dry-run)
fi
"${publish_cmd[@]}" rpm
"${publish_cmd[@]}" --publish-report target/publish-reports/rpm.toml rpm

- name: Upload rpm packages to GitHub Release
if: github.ref_type == 'tag' && startsWith(github.ref_name, 'v')
env:
GH_TOKEN: ${{ github.token }}
run: |
set -euo pipefail
shopt -s nullglob
assets=(target/*/release/rpm/*.rpm)
report=target/publish-reports/rpm.toml
test -f "$report"
mapfile -t assets < <(python3 - "$report" <<'PY'
import sys
import tomllib

with open(sys.argv[1], "rb") as handle:
report = tomllib.load(handle)

for manifest in report.get("manifests", []):
for asset in manifest.get("artifacts", []):
print(asset["local-path"])
PY
)
if [ "${#assets[@]}" -eq 0 ]; then
echo "no rpm release assets found" >&2
exit 1
echo "no rpm release assets selected by publish report; skipping GitHub Release upload"
exit 0
fi
for attempt in {1..30}; do
if gh release view "$GITHUB_REF_NAME" --repo "$GITHUB_REPOSITORY" >/dev/null 2>&1; then
Expand All @@ -403,6 +428,7 @@ jobs:
if-no-files-found: ignore
path: |
gmutils/target/common/rpm/**
gmutils/target/publish-reports/*.toml

linux-scoop:
needs: github-release
Expand Down Expand Up @@ -532,7 +558,7 @@ jobs:
if [[ "$mode" == "dry-run" ]]; then
publish_cmd+=(--dry-run)
fi
"${publish_cmd[@]}" scoop
"${publish_cmd[@]}" --publish-report target/publish-reports/scoop.toml scoop

- name: Create Scoop bucket pull request
if: github.ref_type == 'tag' && startsWith(github.ref_name, 'v')
Expand Down Expand Up @@ -591,11 +617,23 @@ jobs:
GH_TOKEN: ${{ github.token }}
run: |
set -euo pipefail
shopt -s nullglob
assets=(target/*/release/scoop/*.zip target/common/scoop/gmutils-*.json)
report=target/publish-reports/scoop.toml
test -f "$report"
mapfile -t assets < <(python3 - "$report" <<'PY'
import sys
import tomllib

with open(sys.argv[1], "rb") as handle:
report = tomllib.load(handle)

for manifest in report.get("manifests", []):
for asset in manifest.get("artifacts", []):
print(asset["local-path"])
PY
)
if [ "${#assets[@]}" -eq 0 ]; then
echo "no scoop release assets found" >&2
exit 1
echo "no scoop release assets selected by publish report; skipping GitHub Release upload"
exit 0
fi
for attempt in {1..30}; do
if gh release view "$GITHUB_REF_NAME" --repo "$GITHUB_REPOSITORY" >/dev/null 2>&1; then
Expand All @@ -617,6 +655,7 @@ jobs:
if-no-files-found: ignore
path: |
gmutils/target/common/scoop/**
gmutils/target/publish-reports/*.toml

homebrew:
needs: github-release
Expand Down Expand Up @@ -732,7 +771,7 @@ jobs:
if [[ "$mode" == "dry-run" ]]; then
publish_cmd+=(--dry-run)
fi
"${publish_cmd[@]}" brew
"${publish_cmd[@]}" --publish-report target/publish-reports/brew.toml brew

- name: Create Homebrew tap pull request
if: github.ref_type == 'tag' && startsWith(github.ref_name, 'v')
Expand Down Expand Up @@ -791,11 +830,23 @@ jobs:
GH_TOKEN: ${{ github.token }}
run: |
set -euo pipefail
shopt -s nullglob
assets=(target/*/release/brew/*.tar.gz target/common/brew/gmutils-*.rb)
report=target/publish-reports/brew.toml
test -f "$report"
mapfile -t assets < <(python3 - "$report" <<'PY'
import sys
import tomllib

with open(sys.argv[1], "rb") as handle:
report = tomllib.load(handle)

for manifest in report.get("manifests", []):
for asset in manifest.get("artifacts", []):
print(asset["local-path"])
PY
)
if [ "${#assets[@]}" -eq 0 ]; then
echo "no Homebrew release assets found" >&2
exit 1
echo "no Homebrew release assets selected by publish report; skipping GitHub Release upload"
exit 0
fi
for attempt in {1..30}; do
if gh release view "$GITHUB_REF_NAME" --repo "$GITHUB_REPOSITORY" >/dev/null 2>&1; then
Expand All @@ -817,3 +868,4 @@ jobs:
if-no-files-found: ignore
path: |
gmutils/target/common/brew/**
gmutils/target/publish-reports/*.toml
41 changes: 41 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,47 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.8.0-beta.3] - 2026-07-09

### Added

- `genmeta access` supports explicit DHTTP identity shorthand in access-rule
patterns through the `dhttp` access facade.

### Changed

- Access-control integration now consumes access APIs and access feature
activation through the `dhttp` facade instead of a direct `dhttp-access`
dependency.
- CLI progress integration remains opt-in so ordinary non-progress output is
stable.

### Fixed

- Release workflows upload package assets from publish reports instead of broad
local artifact globs.

### Dependencies

- Release manifests now target `dhttp` v0.5.0-beta.3, `dhttp-access`
v0.4.0-beta.1 through the `dhttp` facade, `dhttp-home`
v0.4.0-beta.1, `dhttp-identity` v0.3.0-beta.1, `dyns`
v0.6.0-beta.3, `h3x` v0.6.0-beta.3, `dquic`
v0.7.0-beta.2, `dshell` v0.6.0-beta.2, and `rankey` v0.2.1.

### Components

- `genmeta` v0.8.0-beta.3
- `genmeta-curl` v0.7.0-beta.3
- `genmeta-ssh` v0.7.0-beta.3
- `genmeta-access` v0.4.0-beta.2
- `genmeta-identity` v0.4.0-beta.3
- `genmeta-proxy` v0.4.0-beta.2
- `genmeta-discover` v0.4.0-beta.2
- `genmeta-doctor` v0.4.0-beta.2
- `genmeta-nat` v0.5.0-beta.2
- `genmeta-nslookup` v0.5.0-beta.2

## [0.8.0-beta.2] - 2026-07-06

### Added
Expand Down
Loading
Loading