208 lines
4.7 KiB
YAML
208 lines
4.7 KiB
YAML
name: Test
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
|
|
|
|
doc:
|
|
runs-on: ubuntu-latest
|
|
name: '📓 Docs'
|
|
steps:
|
|
|
|
- name: '🧰 Checkout'
|
|
uses: actions/checkout@v2
|
|
|
|
- name: '📓 BuildTheDocs (BTD)'
|
|
uses: buildthedocs/btd@v0
|
|
with:
|
|
token: ${{ github.token }}
|
|
skip-deploy: ${{ github.event_name == 'pull_request' }}
|
|
|
|
- name: '🧹 Clean HTML build'
|
|
if: ${{ github.event_name != 'pull_request' }}
|
|
run: sudo rm -rf doc/_build/html/.git
|
|
|
|
- name: '📤 Upload artifact: HTML'
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: openFPGALoader-Documentation
|
|
path: doc/_build/html
|
|
|
|
|
|
lin-build:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os:
|
|
- 20
|
|
- 22
|
|
name: '🚧🐧 Ubuntu ${{ matrix.os }} | build'
|
|
runs-on: ubuntu-${{ matrix.os }}.04
|
|
steps:
|
|
|
|
- name: '🧰 Checkout'
|
|
uses: actions/checkout@v2
|
|
|
|
- name: '⚙️ Install dependencies'
|
|
run: |
|
|
sudo apt update -qq
|
|
sudo apt install -y \
|
|
cmake \
|
|
gzip \
|
|
libftdi1-2 \
|
|
libftdi1-dev \
|
|
libhidapi-hidraw0 \
|
|
libhidapi-dev \
|
|
libudev-dev \
|
|
pkg-config \
|
|
tree \
|
|
zlib1g-dev
|
|
|
|
- name: '🚧 Build tarball'
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake ..
|
|
cmake --build .
|
|
|
|
make DESTDIR=$(pwd)/dist install
|
|
_rulesdir='dist/etc/udev/rules.d/'
|
|
mkdir -p "${_rulesdir}"
|
|
cp ../99-openfpgaloader.rules "${_rulesdir}"
|
|
_licenses="dist/usr/local/share/licenses/openFPGALoader"
|
|
mkdir -p "${_licenses}"
|
|
install -m 644 ../LICENSE "${_licenses}"
|
|
|
|
tar -cvzf ../ubtuntu${{ matrix.os }}.04-openFPGALoader.tgz -C dist .
|
|
|
|
- name: '📤 Upload artifact: tarball'
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: ubtuntu${{ matrix.os }}.04-openFPGALoader
|
|
path: ubtuntu${{ matrix.os }}.04-openFPGALoader.tgz
|
|
|
|
- name: '🔍 Show package content'
|
|
run: |
|
|
mkdir tmp
|
|
cd tmp
|
|
tar -xf ../ubtuntu${{ matrix.os }}.04-openFPGALoader.tgz
|
|
tree .
|
|
|
|
|
|
mac-build:
|
|
strategy:
|
|
fail-fast: false
|
|
name: '🚧🐧 macOS latest | build'
|
|
runs-on: macos-latest
|
|
steps:
|
|
|
|
- name: '🧰 Checkout'
|
|
uses: actions/checkout@v2
|
|
|
|
- name: '⚙️ Install dependencies'
|
|
run: |
|
|
brew update
|
|
brew install --only-dependencies openFPGALoader
|
|
|
|
- name: '🚧 Build tarball'
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake ..
|
|
cmake --build .
|
|
|
|
|
|
lin-test:
|
|
needs: lin-build
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os:
|
|
- 18
|
|
- 20
|
|
name: '🚦🐧 Ubuntu ${{ matrix.os }} | test'
|
|
runs-on: ubuntu-${{ matrix.os }}.04
|
|
steps:
|
|
|
|
- name: '⚙️ Install dependencies'
|
|
run: |
|
|
sudo apt update -qq
|
|
sudo apt install -y \
|
|
libftdi1-2 \
|
|
libhidapi-hidraw0 \
|
|
udev \
|
|
zlib1g
|
|
|
|
- name: '📥 Download artifact: package'
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
name: ubtuntu${{ matrix.os }}.04-openFPGALoader
|
|
|
|
- name: '🛠️ Install package'
|
|
run: sudo tar -xvzf *.tgz -C /
|
|
|
|
- name: '🚦 Test package'
|
|
run: |
|
|
openFPGALoader --help
|
|
openFPGALoader --detect || true
|
|
|
|
|
|
win-jobs:
|
|
name: ⬜ Generate list of MSYS2 jobs
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
jobs: ${{ steps.matrix.outputs.jobs }}
|
|
steps:
|
|
- id: matrix
|
|
uses: msys2/setup-msys2/matrix@main
|
|
with:
|
|
systems: >-
|
|
mingw32
|
|
mingw64
|
|
ucrt64
|
|
clang64
|
|
|
|
win:
|
|
needs: win-jobs
|
|
uses: msys2/setup-msys2/.github/workflows/PKGBUILD.yml@main
|
|
with:
|
|
name: openFPGALoader
|
|
matrix: ${{ needs.win-jobs.outputs.jobs }}
|
|
path: scripts/msys2
|
|
test: |
|
|
uname -a
|
|
which openFPGALoader
|
|
openFPGALoader --help
|
|
openFPGALoader --detect || true
|
|
|
|
|
|
Release:
|
|
if: github.event_name != 'pull_request' && (github.ref == 'refs/heads/master' || contains(github.ref, 'refs/tags/'))
|
|
needs: [ lin-test, win ]
|
|
runs-on: ubuntu-latest
|
|
name: '📦 Release'
|
|
steps:
|
|
|
|
- name: '📥 Download artifacts'
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
path: artifact
|
|
|
|
- name: '✉️ Package Documentation'
|
|
run: |
|
|
cd artifact
|
|
tar cvzf openFPGALoader-Documentation.tar.gz openFPGALoader-Documentation
|
|
rm -rf openFPGALoader-Documentation
|
|
|
|
# Tagged: create a pre-release or a release (semver)
|
|
# Untagged: update the assets of pre-release 'nightly'
|
|
- uses: pyTooling/Actions/releaser@r0
|
|
with:
|
|
token: ${{ github.token }}
|
|
tag: 'nightly'
|
|
files: artifact/**/*
|