Start X on Raspberry Pi, lazzer style #16
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and Release | |
| on: | |
| push: | |
| branches: | |
| - main | |
| env: | |
| REGISTRY: ghcr.io | |
| IMAGE_NAME: ${{ github.repository }} | |
| jobs: | |
| build-appimage: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| arch: [x86_64, aarch64] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up QEMU | |
| if: matrix.arch == 'aarch64' | |
| uses: docker/setup-qemu-action@v3 | |
| with: | |
| platforms: arm64 | |
| - name: Build AppImage (${{ matrix.arch }}) | |
| run: | | |
| if [ "${{ matrix.arch }}" = "aarch64" ]; then | |
| docker run --rm --platform linux/arm64 \ | |
| -v $PWD:/workspace -w /workspace \ | |
| ubuntu:22.04 /bin/bash -c ' | |
| apt-get update && \ | |
| apt-get install -y xxd wget libsdl2-dev libsdl2-ttf-dev \ | |
| libsdl2-image-dev libsdl2-mixer-dev build-essential squashfs-tools && \ | |
| make clean && make && \ | |
| ./utils/build-appimage.sh aarch64 | |
| ' | |
| else | |
| sudo apt-get update | |
| sudo apt-get install -y wget libsdl2-dev libsdl2-ttf-dev \ | |
| libsdl2-image-dev libsdl2-mixer-dev squashfs-tools | |
| make clean && make | |
| ./utils/build-appimage.sh x86_64 | |
| fi | |
| - name: Upload AppImage artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: appimage-${{ matrix.arch }} | |
| path: InfixDemo-${{ matrix.arch }}.AppImage | |
| build-docker: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| packages: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Log in to Container Registry | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Extract metadata | |
| id: meta | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
| tags: | | |
| type=raw,value=latest | |
| type=sha,prefix={{branch}}- | |
| - name: Build and push Docker image | |
| uses: docker/build-push-action@v5 | |
| with: | |
| context: . | |
| platforms: linux/amd64,linux/arm64 | |
| push: true | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=max | |
| release: | |
| needs: [build-appimage] | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: artifacts | |
| - name: Display structure of downloaded files | |
| run: ls -R artifacts | |
| - name: Create/Update Release | |
| uses: ncipollo/release-action@v1 | |
| with: | |
| tag: latest | |
| name: Latest Build | |
| body: | | |
| Automated build of Infix Demo | |
| **AppImages:** | |
| - `InfixDemo-x86_64.AppImage` - x86_64 build | |
| - `InfixDemo-aarch64.AppImage` - ARM64 build | |
| **Docker images:** | |
| - `ghcr.io/${{ github.repository }}:latest` | |
| Built from commit: ${{ github.sha }} | |
| artifacts: "artifacts/**/*.AppImage" | |
| allowUpdates: true | |
| removeArtifacts: true | |
| makeLatest: true | |
| token: ${{ secrets.GITHUB_TOKEN }} |