Skip to content

Windows build fails

Windows build fails #4

Workflow file for this run

name: Release
on:
push:
tags:
- 'v*'
env:
CARGO_TERM_COLOR: always
jobs:
build_and_release:
name: Build and Release
runs-on: ${{ matrix.os }}
permissions:
contents: write # Required to upload release assets
strategy:
matrix:
include:
- os: ubuntu-latest
target: x86_64-unknown-linux-musl
archive_extension: tar.gz
- os: macos-latest
target: x86_64-apple-darwin
archive_extension: tar.gz
#- os: windows-latest
# target: x86_64-pc-windows-msvc
# archive_extension: zip
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: stable
target: ${{ matrix.target }}
cache: true # Enable caching for dependencies
- name: Install musl for Linux build
if: matrix.os == 'ubuntu-latest'
run: sudo apt-get update && sudo apt-get install -y musl-tools
- name: Build binary
run: cargo build --release --target ${{ matrix.target }} --verbose
- name: Strip binary (Linux & macOS)
if: runner.os != 'Windows'
run: strip target/${{ matrix.target }}/release/compact-ts
- name: Prepare package artifacts
id: package
shell: bash
run: |
# Define asset names and paths
BINARY_NAME="compact-ts"
if [[ "${{ runner.os }}" == "Windows" ]]; then
BINARY_NAME="compact-ts.exe"
fi
RELEASE_DIR="target/${{ matrix.target }}/release"
ARCHIVE_NAME="compact-ts-${{ github.ref_name }}-${{ matrix.target }}"
# Create a temporary directory for packaging
PACKAGE_DIR="/tmp/${ARCHIVE_NAME}"
mkdir -p "${PACKAGE_DIR}"
# Copy necessary files
cp "${RELEASE_DIR}/${BINARY_NAME}" "${PACKAGE_DIR}/"
cp README.md LICENSE "${PACKAGE_DIR}/"
# Create the archive
if [[ "${{ runner.os }}" == "Windows" ]]; then
7z a "${ARCHIVE_NAME}.zip" "./${PACKAGE_DIR}/*"
echo "FILE_PATH=${ARCHIVE_NAME}.zip" >> $GITHUB_OUTPUT
echo "ASSET_NAME=${ARCHIVE_NAME}.zip" >> $GITHUB_OUTPUT
else
tar -czf "${ARCHIVE_NAME}.tar.gz" -C "/tmp" "${ARCHIVE_NAME}"
echo "FILE_PATH=${ARCHIVE_NAME}.tar.gz" >> $GITHUB_OUTPUT
echo "ASSET_NAME=${ARCHIVE_NAME}.tar.gz" >> $GITHUB_OUTPUT
fi
- name: Upload release asset
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ steps.package.outputs.FILE_PATH }}
asset_name: ${{ steps.package.outputs.ASSET_NAME }}
tag: ${{ github.ref }}
overwrite: true