Merge pull request #41 from imal1/fix/agent-timeout #27
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |