name: Test on: workflow_dispatch: jobs: doc: runs-on: ubuntu-latest name: "๐Ÿ““ Docs" steps: - name: "๐Ÿงฐ Checkout" uses: actions/checkout@v4 - 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@v4 with: name: openFPGALoader-Documentation path: doc/_build/html lin-build: strategy: fail-fast: false matrix: os: - 22 - 24 name: "๐Ÿšง๐Ÿง Ubuntu ${{ matrix.os }} | build" runs-on: ubuntu-${{ matrix.os }}.04 steps: - name: "๐Ÿงฐ Checkout" uses: actions/checkout@v4 - name: "โš™๏ธ Install dependencies" run: | sudo apt update -qq sudo apt install -y \ cmake \ gzip \ libftdi1-2 \ libftdi1-dev \ libhidapi-libusb0 \ 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@v4 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@v4 - 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: - 22 - 24 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-libusb0 \ udev \ zlib1g - name: "๐Ÿ“ฅ Download artifact: package" uses: actions/download-artifact@v4.1.7 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@a5d2c5a565c520efa5f477391e4e3f87c2e08f46 with: systems: >- mingw64 ucrt64 clang64 win: needs: win-jobs uses: msys2/setup-msys2/.github/workflows/PKGBUILD.yml@a5d2c5a565c520efa5f477391e4e3f87c2e08f46 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@v4.1.7 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/**/*