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: - 18 - 20 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 \ 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 . 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.jobs.outputs.jobs }} steps: - name: Generate list of jobs shell: python id: jobs run: | jobs = [ { 'icon': 'โฌ›', 'sys': 'mingw32' }, { 'icon': '๐ŸŸฆ', 'sys': 'mingw64' }, { 'icon': '๐ŸŸจ', 'sys': 'ucrt64' }, # Experimental! { 'icon': '๐ŸŸง', 'sys': 'clang64' }, # Experimental! ] print(f"::set-output name=jobs::{jobs!s}") win-makepkg: runs-on: windows-latest needs: win-jobs strategy: fail-fast: false matrix: include: ${{ fromJson(needs.win-jobs.outputs.jobs) }} name: '๐Ÿšง${{ matrix.icon }} ${{ matrix.sys }} | makepkg' defaults: run: shell: msys2 {0} env: MINGW_ARCH: ${{ matrix.sys }} steps: - name: 'โš™๏ธ git config' run: git config --global core.autocrlf input shell: bash - name: '๐Ÿงฐ Checkout' uses: actions/checkout@v2 with: fetch-depth: 0 - name: '${{ matrix.icon }} Setup MSYS2' uses: msys2/setup-msys2@v2 with: msystem: ${{ matrix.sys }} update: true install: > git base-devel tree pacboy: toolchain:p - name: '๐Ÿšง Build package' run: | cd scripts/msys2 makepkg-mingw --noconfirm --noprogressbar -sCLf - name: '๐Ÿ“ค Upload artifact: package' uses: actions/upload-artifact@v2 with: name: ${{ matrix.sys }}-openFPGALoader path: scripts/msys2/*.zst - name: '๐Ÿ” Show package content' run: | mkdir tmp cd tmp tar -xf ../scripts/msys2/*.zst tree . win-test: needs: - win-jobs - win-makepkg runs-on: windows-latest strategy: fail-fast: false matrix: include: ${{ fromJson(needs.win-jobs.outputs.jobs) }} name: '๐Ÿšฆ${{ matrix.icon }} ${{ matrix.sys }} | test' defaults: run: shell: msys2 {0} steps: - name: '${{ matrix.icon }} Setup MSYS2' uses: msys2/setup-msys2@v2 with: msystem: ${{ matrix.sys }} update: true - name: '๐Ÿ“ฅ Download artifact: package' uses: actions/download-artifact@v2 with: name: ${{ matrix.sys }}-openFPGALoader - name: '๐Ÿ› ๏ธ Install package' run: pacman -U --noconfirm --noprogressbar *.zst - name: '๐Ÿšฆ Test package' run: | 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-test ] 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/**/*