name: C/C++ CI on: workflow_dispatch: push: branches: - master - preview tags: - v*.*.* - preview-v*.*.* pull_request: branches: - master - preview jobs: build-macOS-x86_64: runs-on: macos-13 steps: - name: Check out repository code uses: actions/checkout@v4 - name: Fix homebrew in Github Runner run: | for f in $(find /usr/local/bin -type l -print); do \ (readlink $f | grep -q -s "/Library") && echo Removing "$f" && rm -f "$f"; \ done || exit 0 - name: Install dependencies run: | brew update brew upgrade brew install sdl2 mpg123 sdl2_ttf sdl2_image flac libmpeg2 libserialport portmidi dylibbundler - name: make for macOS X64 run: make -j4 PLATFORM=osx-x86 - name: ZIP binaries if: github.ref_type != 'tag' run: zip -r amiberry-macOS-x86_64.zip Amiberry.app - name: Upload artifact if: github.ref_type != 'tag' uses: actions/upload-artifact@v4 with: name: amiberry-macOS-64bit-intel path: amiberry-macOS-x86_64.zip - name: ZIP binaries if: github.ref_type == 'tag' run: zip -r amiberry-${{ github.ref_name }}-macOS-x86_64.zip Amiberry.app - name: Upload artifact if: github.ref_type == 'tag' uses: actions/upload-artifact@v4 with: name: amiberry-macOS-64bit-intel path: amiberry-${{ github.ref_name }}-macOS-x86_64.zip build-macOS-Apple-Silicon: runs-on: macos-latest steps: - name: Check out repository code uses: actions/checkout@v4 - name: Install dependencies run: | brew update brew upgrade brew install sdl2 mpg123 sdl2_ttf sdl2_image flac libmpeg2 libserialport portmidi dylibbundler - name: make for macOS Apple Silicon run: make -j4 PLATFORM=osx-m1 - name: ZIP binaries if: github.ref_type != 'tag' run: zip -r amiberry-macOS-apple-silicon.zip Amiberry.app - name: Upload artifact if: github.ref_type != 'tag' uses: actions/upload-artifact@v4 with: name: amiberry-macOS-64bit-apple-silicon path: amiberry-macOS-apple-silicon.zip - name: ZIP binaries if: github.ref_type == 'tag' run: zip -r amiberry-${{ github.ref_name }}-macOS-apple-silicon.zip Amiberry.app - name: Upload artifact if: github.ref_type == 'tag' uses: actions/upload-artifact@v4 with: name: amiberry-macOS-64bit-apple-silicon path: amiberry-${{ github.ref_name }}-macOS-apple-silicon.zip build-debian-bullseye-amd64: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run the build process with Docker uses: addnab/docker-run-action@v3 with: image: midwan/amiberry-debian-x86_64:bullseye options: -v ${{ github.workspace }}:/build run: | cmake -B build && cmake --build build -j4 cpack --config build/CPackConfig.cmake - name: Upload artifact uses: actions/upload-artifact@v4 with: name: amiberry-debian-bullseye-amd64 path: amiberry_*.deb build-debian-bookworm-amd64: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run the build process with Docker uses: addnab/docker-run-action@v3 with: image: midwan/amiberry-debian-x86_64:bookworm options: -v ${{ github.workspace }}:/build run: | cmake -B build && cmake --build build -j4 cpack --config build/CPackConfig.cmake - name: Upload artifact uses: actions/upload-artifact@v4 with: name: amiberry-debian-bookworm-amd64 path: amiberry_*.deb build-debian-bookworm-arm64: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run the build process with Docker uses: addnab/docker-run-action@v3 with: image: midwan/amiberry-debian-aarch64:bookworm options: -v ${{ github.workspace }}:/build run: | cmake -DCMAKE_TOOLCHAIN_FILE=cmake/Toolchain-aarch64-linux-gnu.cmake -B build && cmake --build build -j4 cpack --config build/CPackConfig.cmake - name: Upload artifact uses: actions/upload-artifact@v4 with: name: amiberry-debian-bookworm-arm64 path: amiberry_*.deb build-debian-bookworm-armhf: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run the build process with Docker uses: addnab/docker-run-action@v3 with: image: midwan/amiberry-debian-armhf:bookworm options: -v ${{ github.workspace }}:/build run: | cmake -DCMAKE_TOOLCHAIN_FILE=cmake/Toolchain-arm-linux-gnueabihf.cmake -B build && cmake --build build -j4 cpack --config build/CPackConfig.cmake - name: Upload artifact uses: actions/upload-artifact@v4 with: name: amiberry-debian-bookworm-armhf path: amiberry_*.deb build-debian-bullseye-arm64: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run the build process with Docker uses: addnab/docker-run-action@v3 with: image: midwan/amiberry-debian-aarch64:bullseye options: -v ${{ github.workspace }}:/build run: | cmake -DCMAKE_TOOLCHAIN_FILE=cmake/Toolchain-aarch64-linux-gnu.cmake -B build && cmake --build build -j4 cpack --config build/CPackConfig.cmake - name: Upload artifact uses: actions/upload-artifact@v4 with: name: amiberry-debian-bullseye-arm64 path: amiberry_*.deb build-debian-bullseye-armhf: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run the build process with Docker uses: addnab/docker-run-action@v3 with: image: midwan/amiberry-debian-armhf:bullseye options: -v ${{ github.workspace }}:/build run: | cmake -DCMAKE_TOOLCHAIN_FILE=cmake/Toolchain-arm-linux-gnueabihf.cmake -B build && cmake --build build -j4 cpack --config build/CPackConfig.cmake - name: Upload artifact uses: actions/upload-artifact@v4 with: name: amiberry-debian-bullseye-armhf path: amiberry_*.deb create-release: needs: [build-macOS-x86_64, build-macOS-Apple-Silicon, build-debian-bookworm-amd64, build-debian-bookworm-arm64, build-debian-bookworm-armhf, build-debian-bullseye-amd64, build-debian-bullseye-arm64, build-debian-bullseye-armhf] runs-on: ubuntu-latest if: github.ref_type == 'tag' && startsWith(github.ref_name, 'v') steps: - uses: actions/checkout@v4 - name: Create Changelog if: github.ref_type == 'tag' id: changelog uses: loopwerk/tag-changelog@v1 with: token: ${{ secrets.GITHUB_TOKEN }} config_file: .github/tag-changelog-config.js - name: Download Build Artifacts uses: actions/download-artifact@v4.1.7 - name: Create Release if: github.ref_type == 'tag' uses: ncipollo/release-action@v1 with: allowUpdates: true omitBodyDuringUpdate: true body: ${{ steps.changelog.outputs.changes }} artifacts: | amiberry-macOS-64bit-intel/amiberry-${{ github.ref_name }}-macOS-x86_64.zip amiberry-macOS-64bit-apple-silicon/amiberry-${{ github.ref_name }}-macOS-apple-silicon.zip amiberry-debian-bookworm-amd64/amiberry_*.deb amiberry-debian-bookworm-arm64/amiberry_*.deb amiberry-debian-bookworm-armhf/amiberry_*.deb amiberry-debian-bullseye-amd64/amiberry_*.deb amiberry-debian-bullseye-arm64/amiberry_*.deb amiberry-debian-bullseye-armhf/amiberry_*.deb create-prerelease: needs: [build-macOS-x86_64, build-macOS-Apple-Silicon, build-debian-bookworm-amd64, build-debian-bookworm-arm64, build-debian-bookworm-armhf, build-debian-bullseye-amd64, build-debian-bullseye-arm64, build-debian-bullseye-armhf] runs-on: ubuntu-latest if: github.ref_type == 'tag' && startsWith(github.ref_name, 'preview-v') steps: - uses: actions/checkout@v4 - name: Create Changelog if: github.ref_type == 'tag' id: changelog uses: loopwerk/tag-changelog@v1 with: token: ${{ secrets.GITHUB_TOKEN }} config_file: .github/tag-changelog-config.js - name: Download Build Artifacts uses: actions/download-artifact@v4.1.7 - name: Create PreRelease if: github.ref_type == 'tag' uses: ncipollo/release-action@v1 with: prerelease: true allowUpdates: true omitBodyDuringUpdate: true body: ${{ steps.changelog.outputs.changes }} artifacts: | amiberry-macOS-64bit-intel/amiberry-${{ github.ref_name }}-macOS-x86_64.zip amiberry-macOS-64bit-apple-silicon/amiberry-${{ github.ref_name }}-macOS-apple-silicon.zip amiberry-debian-bookworm-amd64/amiberry_*.deb amiberry-debian-bookworm-arm64/amiberry_*.deb amiberry-debian-bookworm-armhf/amiberry_*.deb amiberry-debian-bullseye-amd64/amiberry_*.deb amiberry-debian-bullseye-arm64/amiberry_*.deb amiberry-debian-bullseye-armhf/amiberry_*.deb