[ci] feat: add GitHub actions workflows for building/testing/docs (#2)

* disable windows runner for now (chocolatey jack package is broken)
* install jack and pcre from homebrew for macOS workflow
* install libjack-jackd2-dev libpcre3-dev for linux workflow
* add additional libjack location candidate for macOS / homebrew
* make library name patterns const strings

Signed-off-by: Christopher Arndt <chris@chrisarndt.de>
This commit is contained in:
Christopher Arndt 2025-01-23 03:10:43 +01:00 committed by GitHub
parent f05bbbd294
commit ca918769ec
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 93 additions and 10 deletions

58
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,58 @@
name: Run tests and build examples
on: [push, pull_request]
env:
nim_version: "2.2.0"
jobs:
build:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
#os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Check out sources
uses: actions/checkout@v4
- name: Nim Runtime Cache
id: cache-nim
uses: actions/cache@v4
with:
path: ".nim_runtime"
key: ${{ runner.os }}-nim-${{ env.nim_version }}
- name: Install Nim
id: install-nim
if: ${{ hashFiles('.nim_runtime/bin/nim*') == '' }}
uses: jiro4989/setup-nim-action@v2
with:
nim-version: ${{ env.nim_version }}
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Set PATH for Unix
if: ${{ runner.os != 'Windows' && steps.install-nim.outcome == 'skipped' }}
shell: bash
run: |
echo "$(pwd)/.nim_runtime/bin" >> "$GITHUB_PATH"
echo "$HOME/.nimble/bin" >> "$GITHUB_PATH"
- name: Set PATH for Windows
if: ${{ runner.os == 'Windows' && steps.install-nim.outcome == 'skipped' }}
shell: pwsh
run: |
echo "$(Get-Location)\.nim_runtime\bin" >> $Env:GITHUB_PATH
mkdir -Force ~\.nimble\bin
(Resolve-Path ~\.nimble\bin).Path >> $Env:GITHUB_PATH
- name: Install dependency packages (jack)
uses: ConorMacBride/install-package@v1
with:
brew: jack pcre
apt: libjack-jackd2-dev libpcre3-dev
choco: jack
- name: Update PATH (Windows)
if: runner.os == 'Windows'
run: Add-Content $env:GITHUB_PATH "C:\Program Files\jack\bin"
- name: Run tests
run: nimble test -y
- name: Build examples (debug)
run: nimble examples_debug
- name: Build examples (release)
run: nimble examples

26
.github/workflows/docs.yml vendored Normal file
View File

@ -0,0 +1,26 @@
name: Build and publish API docs
on:
push:
branches:
- master
env:
nim-version: "stable"
nim-src: src/jacket.nim
deploy-dir: .gh-pages
jobs:
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: jiro4989/setup-nim-action@v2
with:
nim-version: ${{ env.nim-version }}
- run: nimble install -y
- run: nimble doc --index:on --project --git.url:https://github.com/${{ github.repository }} --git.commit:master --out:${{ env.deploy-dir }} ${{ env.nim-src }}
- name: "Copy to index.html"
run: cp ${{ env.deploy-dir }}/jacket.html ${{ env.deploy-dir }}/index.html
- name: Deploy documents
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ${{ env.deploy-dir }}

View File

@ -2,18 +2,17 @@
# Possible names/install locations of libjack, according to:
# https://github.com/x42/weakjack/blob/master/weak_libjack.c#L108
proc getJackLibName: string =
when system.hostOS == "windows":
when defined(windows):
when sizeof(int) == 4:
result = "libjack.dll"
const soname = "(|lib)jack.dll"
else:
result = "libjack64.dll"
elif system.hostOS == "macosx":
result = "(|/usr/local/lib/|/opt/homebrew/lib/|/opt/local/lib/)libjack.dylib"
const soname = "(|lib)jack64.dll"
elif defined(macosx):
const soname = "(|/usr/local/lib/|/opt/homebrew/lib/|/opt/homebrew/opt/jack/lib/|/opt/local/lib/)libjack.dylib"
else:
result = "libjack.so.0"
const soname = "libjack.so.0"
{.push dynlib: getJackLibName().}
{.push dynlib: soname.}
# ------------------------------ Constants --------------------------------