Skip to content

Merge pull request #41 from imal1/fix/agent-timeout #27

Merge pull request #41 from imal1/fix/agent-timeout

Merge pull request #41 from imal1/fix/agent-timeout #27

Workflow file for this run

name: CLI Release
on:
push:
tags: ['v*']
workflow_dispatch:
inputs:
version:
description: Semantic version to package
required: true
permissions:
contents: write
jobs:
cli:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
with:
bun-version: 1.2.13
- run: bun install --frozen-lockfile
- name: Resolve release version
id: release
env:
REQUESTED_VERSION: ${{ inputs.version || github.ref_name }}
run: |
set -euo pipefail
version="${REQUESTED_VERSION#v}"
[[ "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+([.-][0-9A-Za-z.-]+)?$ ]]
echo "version=$version" >> "$GITHUB_OUTPUT"
echo "tag=v$version" >> "$GITHUB_OUTPUT"
- name: Package self-contained Linux CLIs
env:
MIOBRIDGE_RELEASE_VERSION: ${{ steps.release.outputs.version }}
run: |
rm -rf packages/core/dist packages/cli/dist dist/cli-release
bun run cli:release
- name: Verify release contracts
run: bun run cli:test
- name: Inspect both release archives
env:
RELEASE_VERSION: ${{ steps.release.outputs.version }}
run: |
set -euo pipefail
for arch in x64 arm64; do
archive="$(find dist/cli-release -maxdepth 1 -name "miobridge-*-linux-$arch.tar.gz" -print -quit)"
test -n "$archive"
tar -tzf "$archive" | grep -Fx 'VERSION'
tar -tzf "$archive" | grep -Fx 'miobridge'
tar -tzf "$archive" | grep -Fx 'dashboard/provider.json'
tar -tzf "$archive" | grep -Fx 'dashboard/artifact/index.html'
directory="$(mktemp -d)"
tar -xzf "$archive" -C "$directory"
test -x "$directory/miobridge"
if [[ "$arch" == x64 ]]; then
test "$("$directory/miobridge" --version)" = "$RELEASE_VERSION"
fi
done
for arch in x64 arm64; do
agent="dist/cli-release/miobridge-agent-$RELEASE_VERSION-linux-$arch.gz"
gzip -t "$agent"
grep -F "$(basename "$agent")" dist/cli-release/SHA256SUMS
done
gzip -dc "dist/cli-release/miobridge-agent-$RELEASE_VERSION-linux-x64.gz" > "$RUNNER_TEMP/miobridge-agent"
chmod 0755 "$RUNNER_TEMP/miobridge-agent"
test "$("$RUNNER_TEMP/miobridge-agent" --version)" = "$RELEASE_VERSION"
sh -n dist/cli-release/install.sh
grep -F 'install.sh' dist/cli-release/SHA256SUMS
sh -n dist/cli-release/install-agent.sh
grep -F 'install-agent.sh' dist/cli-release/SHA256SUMS
test -s dist/cli-release/SHA256SUMS
- name: Verify installer against packaged release
env:
RELEASE_VERSION: ${{ steps.release.outputs.version }}
run: |
set -euo pipefail
home="$(mktemp -d)"
HOME="$home" sh scripts/install.sh \
--version "$RELEASE_VERSION" \
--base-url "file://$PWD/dist/cli-release" \
--skip-setup
test "$("$home/.local/bin/miobridge" --version)" = "$RELEASE_VERSION"
test -f "$home/.config/miobridge/dist/dashboard/provider.json"
test -f "$home/.config/miobridge/dist/dashboard/artifact/index.html"
- uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.release.outputs.tag }}
generate_release_notes: true
files: |
dist/cli-release/miobridge-*.tar.gz
dist/cli-release/miobridge-agent-*.gz
dist/cli-release/install.sh
dist/cli-release/install-agent.sh
dist/cli-release/SHA256SUMS