name: build on: push: branches: - main pull_request: branches: - main release: types: - created workflow_dispatch: jobs: build-firmware: runs-on: ubuntu-latest steps: - name: Download SummerCart64 repository uses: actions/checkout@v4 - name: Set package version uses: frabert/replace-string-action@v2 id: version with: pattern: '\/' string: '${{ github.ref_name }}' replace-with: '-' - name: Build firmware run: ./docker_build.sh release --force-clean env: SC64_VERSION: ${{ steps.version.outputs.replaced }} - name: Upload artifact uses: actions/upload-artifact@v4 with: name: sc64-pkg-${{ steps.version.outputs.replaced }} path: | sc64-extra-${{ steps.version.outputs.replaced }}.zip sc64-firmware-${{ steps.version.outputs.replaced }}.bin - name: Upload release assets if: github.event_name == 'release' && github.event.action == 'created' uses: softprops/action-gh-release@v0.1.15 with: files: | sc64-extra-${{ steps.version.outputs.replaced }}.zip sc64-firmware-${{ steps.version.outputs.replaced }}.bin build-deployer: strategy: matrix: version: [windows, windows-32bit, linux, macos] include: - version: windows os: windows-latest executable: target/release/sc64deployer.exe package-name: sc64-deployer-windows package-params: -c -a -f package-extension: zip - version: windows-32bit os: windows-latest build-params: --target=i686-pc-windows-msvc executable: target/i686-pc-windows-msvc/release/sc64deployer.exe package-name: sc64-deployer-windows-32bit package-params: -c -a -f package-extension: zip - version: linux os: ubuntu-latest apt-packages: libftdi1-dev libudev-dev libusb-1.0-0-dev executable: target/release/sc64deployer package-name: sc64-deployer-linux package-params: -czf package-extension: tar.gz - version: macos os: macos-latest executable: target/release/sc64deployer package-name: sc64-deployer-macos package-params: -czf package-extension: tgz runs-on: ${{ matrix.os }} steps: - name: Download SummerCart64 repository uses: actions/checkout@v4 - name: Set package version uses: frabert/replace-string-action@v2 id: version with: pattern: '\/' string: '${{ github.ref_name }}' replace-with: '-' - name: Install apt packages if: matrix.apt-packages run: | sudo apt-get update sudo apt-get -y install ${{ matrix.apt-packages }} - name: Build deployer run: cargo b -r ${{ matrix.build-params }} working-directory: sw/deployer - name: Package executable run: | mkdir -p ./package cp ${{ matrix.executable }} ./package/ cd ./package tar ${{ matrix.package-params }} ./${{ matrix.package-name }}-${{ steps.version.outputs.replaced }}.${{ matrix.package-extension }} * working-directory: sw/deployer - name: Upload artifact uses: actions/upload-artifact@v4 with: name: ${{ matrix.package-name }}-${{ steps.version.outputs.replaced }} path: sw/deployer/package/${{ matrix.package-name }}-${{ steps.version.outputs.replaced }}.${{ matrix.package-extension }} - name: Upload release assets if: github.event_name == 'release' && github.event.action == 'created' uses: softprops/action-gh-release@v0.1.15 with: files: | sw/deployer/package/${{ matrix.package-name }}-${{ steps.version.outputs.replaced }}.${{ matrix.package-extension }} publish-website: if: github.ref == 'refs/heads/main' permissions: contents: read pages: write id-token: write environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest steps: - name: Download SummerCart64 repository uses: actions/checkout@v4 - name: Copy BOM file to the website folder run: cp ./hw/pcb/sc64v2_bom.html ./web - name: Setup GitHub pages uses: actions/configure-pages@v4 - name: Upload website artifact uses: actions/upload-pages-artifact@v3 with: path: ./web - name: Publish website from uploaded artifact id: deployment uses: actions/deploy-pages@v4