fix: update CL output location #31
Workflow file for this run
This file contains 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: Release | |
on: | |
push: | |
tags: | |
- 'v*.*.*' # Trigger on version tags like v1.0.0 | |
workflow_dispatch: # Allows manual triggering | |
inputs: | |
version: | |
description: 'The version tag to use for the release (e.g., v1.0.0)' | |
required: true | |
type: string | |
permissions: | |
contents: write # Needed for softprops/action-gh-release | |
env: | |
CARGO_TERM_COLOR: always | |
CRATE_NAME: rustdocs_mcp_server | |
jobs: | |
build_assets: | |
name: Build Asset (${{ matrix.platform.target }}) | |
strategy: | |
matrix: | |
platform: | |
- release_for: Linux-x86_64 | |
os: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
bin: rustdocs_mcp_server | |
asset_suffix: linux-x86_64 | |
- release_for: macOS-x86_64 | |
os: macos-latest | |
target: x86_64-apple-darwin | |
bin: rustdocs_mcp_server | |
asset_suffix: macos-x86_64 | |
- release_for: macOS-aarch64 | |
os: macos-latest # Build arm on x86 runner | |
target: aarch64-apple-darwin | |
bin: rustdocs_mcp_server | |
asset_suffix: macos-aarch64 | |
- release_for: Windows-x86_64 | |
os: windows-latest | |
target: x86_64-pc-windows-msvc | |
bin: rustdocs_mcp_server.exe | |
asset_suffix: windows-x86_64.exe | |
runs-on: ${{ matrix.platform.os }} | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
- name: Cache cargo & target directories | |
uses: Swatinem/rust-cache@v2 | |
with: | |
key: ${{ matrix.platform.target }} # Use target in cache key | |
# --- Build Binary --- | |
- name: Build binary using actions-rust-cross | |
uses: houseabsolute/actions-rust-cross@v1 # Using latest version | |
with: | |
target: ${{ matrix.platform.target }} | |
args: "--release --verbose" | |
strip: true # Stripping is done by the action | |
# --- Install UPX --- | |
- name: Install UPX (Linux) | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y upx-ucl | |
- name: Install UPX (macOS) | |
if: runner.os == 'macOS' | |
run: brew install upx | |
- name: Install UPX (Windows) | |
if: runner.os == 'Windows' | |
run: choco install upx --no-progress --yes | |
# --- Prepare Artifact (includes UPX compression) --- | |
- name: Prepare Artifact and Compress with UPX | |
id: artifact_details | |
shell: bash | |
run: | | |
BINARY_NAME="${{ matrix.platform.bin }}" | |
ASSET_NAME="${{ env.CRATE_NAME }}-${{ matrix.platform.asset_suffix }}" | |
TARGET_DIR="target/${{ matrix.platform.target }}/release" | |
BINARY_PATH="$TARGET_DIR/$BINARY_NAME" | |
echo "Calculated binary path: $BINARY_PATH" | |
echo "Calculated asset name: $ASSET_NAME" | |
if [[ ! -f "$BINARY_PATH" ]]; then | |
echo "Error: Binary not found at $BINARY_PATH" | |
echo "Listing contents of $TARGET_DIR:" | |
ls -l "$TARGET_DIR" || echo "Could not list $TARGET_DIR" | |
exit 1 | |
fi | |
# Compress the binary with UPX (skip on macOS) | |
if [[ "${{ runner.os }}" != "macOS" ]]; then | |
echo "Compressing binary with UPX..." | |
upx --best --lzma "$BINARY_PATH" | |
else | |
echo "Skipping UPX compression on macOS." | |
fi | |
# Rename binary to the desired asset name AFTER potential compression | |
mv "$BINARY_PATH" "$TARGET_DIR/$ASSET_NAME" | |
echo "Renamed compressed binary to $TARGET_DIR/$ASSET_NAME" | |
echo "asset_path=$TARGET_DIR/$ASSET_NAME" >> $GITHUB_OUTPUT | |
echo "asset_name=$ASSET_NAME" >> $GITHUB_OUTPUT | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ steps.artifact_details.outputs.asset_name }} | |
path: ${{ steps.artifact_details.outputs.asset_path }} | |
if-no-files-found: error | |
release: | |
name: Create GitHub Release | |
needs: build_assets | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download all artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: artifacts | |
- name: List downloaded artifacts for debugging | |
run: | | |
echo "Listing downloaded artifacts:" | |
find artifacts -type f | |
echo "---" | |
- name: Create Release and Upload Assets | |
uses: softprops/action-gh-release@v2 | |
with: | |
tag_name: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.version || github.ref_name }} | |
name: Release ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.version || github.ref_name }} | |
body: | | |
Automated release for ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.version || github.ref_name }} | |
draft: false | |
prerelease: false | |
files: artifacts/*/* # Upload all files from all subdirectories within artifacts |