Build and Test #318
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: Build and Test | |
on: | |
push: | |
pull_request: | |
branches: [ "main" ] | |
workflow_dispatch: | |
release: | |
types: | |
- created | |
schedule: # Every day at the 2 P.M. (UTC) we run a scheduled nightly build | |
- cron: "0 14 * * *" | |
env: | |
CARGO_TERM_COLOR: always | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
name: build (${{ matrix.config.arch }}) | |
strategy: | |
matrix: | |
config: | |
- os: windows-latest | |
arch: win-x64 | |
- os: windows-latest | |
arch: win-x86 | |
- os: ubuntu-latest | |
arch: linux-x64 | |
- os: macos-latest | |
arch: macos-arm64 | |
- os: macos-13 | |
arch: macos-x64 | |
runs-on: ${{ matrix.config.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install libudev for Linux | |
if: runner.os == 'Linux' | |
run: sudo apt-get update && sudo apt-get install -y libudev-dev | |
- name: Set target | |
run: | | |
if [[ "${{ matrix.config.arch }}" == "win-x86" ]]; then | |
echo TARGET="--target i686-pc-windows-msvc" >> $GITHUB_ENV | |
else | |
echo TARGET="" >> $GITHUB_ENV | |
fi | |
shell: bash | |
- name: Build | |
run: cargo build --release ${{ env.TARGET }} | |
- name: Run tests | |
run: cargo test --release ${{ env.TARGET }} --verbose | |
- name: Run help | |
run: cargo run --release ${{ env.TARGET }} -- --help | |
- name: Prepare artifacts | |
run: | | |
if [[ "${{ matrix.config.arch }}" == "win-x64" ]]; then | |
WLINK_EXE="target/release/wlink.exe" | |
elif [[ "${{ matrix.config.arch }}" == "win-x86" ]]; then | |
WLINK_EXE="target/i686-pc-windows-msvc/release/wlink.exe" | |
else | |
WLINK_EXE="target/release/wlink" | |
fi | |
mkdir wlink-${{ matrix.config.arch }} | |
cp $WLINK_EXE wlink-${{ matrix.config.arch }} | |
cp README.md wlink-${{ matrix.config.arch }} | |
shell: bash | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: wlink-${{ matrix.config.arch }} | |
path: wlink-${{ matrix.config.arch }} | |
- name: Prepare Release Asset | |
if: github.event_name == 'release' | |
run: | | |
if [[ "${{ runner.os }}" == "Windows" ]]; then | |
7z a -tzip wlink-${{ github.event.release.tag_name }}-${{ matrix.config.arch }}.zip wlink-${{ matrix.config.arch }} | |
else | |
tar -czvf wlink-${{ github.event.release.tag_name }}-${{ matrix.config.arch }}.tar.gz wlink-${{ matrix.config.arch }} | |
fi | |
shell: bash | |
- name: Upload Release Asset | |
uses: softprops/action-gh-release@v2 | |
if: github.event_name == 'release' | |
with: | |
fail_on_unmatched_files: false | |
files: | | |
wlink-*.tar.gz | |
wlink-*.zip | |
nightly-release: | |
needs: build | |
runs-on: ubuntu-latest | |
if: github.event_name == 'schedule' | |
steps: | |
- name: Download Artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: ./ | |
- name: Prepare Nightly Asset | |
run: | | |
ls -R ./ | |
for f in wlink-*; do | |
echo "Compressing $f" | |
if [[ $f == wlink-win* ]]; then | |
zip -r $f.zip $f | |
else | |
tar -czvf $f.tar.gz $f | |
fi | |
done | |
ls ./ | |
- name: Update Nightly Release | |
uses: andelf/nightly-release@main | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: nightly | |
name: "wlink nightly release $$" | |
draft: false | |
prerelease: true | |
body: | | |
This is a nightly binary release of the wlink command line tool. | |
For Windows users, please use the x86 version since it has the Windows driver support. | |
files: | | |
wlink-*.tar.gz | |
wlink-*.zip |