name: Debian-based ISO and SquashFS on: workflow_call: workflow_dispatch: inputs: environment: type: choice description: Environment options: - "" - dev - unstable - dev-unstable runner: type: choice description: Runner options: - standard - fast push: branches: - master - next pull_request: branches: - master - next env: NODEJS_VERSION: "18.15.0" ENVIRONMENT: '${{ fromJson(format(''["{0}", ""]'', github.event.inputs.environment || ''dev''))[github.event.inputs.environment == ''''] }}' jobs: all: name: Build strategy: fail-fast: false matrix: platform: [x86_64, x86_64-nonfree, aarch64, aarch64-nonfree, raspberrypi] runs-on: >- ${{ fromJson( format( '["ubuntu-22.04", "{0}"]', fromJson('{ "x86_64": "buildjet-32vcpu-ubuntu-2204", "x86_64-nonfree": "buildjet-32vcpu-ubuntu-2204", "aarch64": "buildjet-8vcpu-ubuntu-2204-arm", "aarch64-nonfree": "buildjet-8vcpu-ubuntu-2204-arm", "raspberrypi": "buildjet-16vcpu-ubuntu-2204-arm", }')[matrix.platform] ) )[github.event.inputs.runner == 'fast'] }} steps: - run: | sudo mount -t tmpfs tmpfs . if: ${{ github.event.inputs.runner == 'fast' && (matrix.platform == 'x86_64' || matrix.platform == 'x86_64-nonfree') }} - uses: actions/checkout@v3 with: repository: Start9Labs/embassy-os-deb path: embassy-os-deb - uses: actions/checkout@v3 with: submodules: recursive path: embassy-os-deb/embassyos-0.3.x - run: | cp -r debian embassyos-0.3.x/ VERSION=0.3.x ./control.sh cp embassyos-0.3.x/backend/startd.service embassyos-0.3.x/debian/embassyos.startd.service working-directory: embassy-os-deb - uses: actions/setup-node@v3 with: node-version: ${{ env.NODEJS_VERSION }} - name: Get npm cache directory id: npm-cache-dir run: | echo "dir=$(npm config get cache)" >> $GITHUB_OUTPUT - uses: buildjet/cache@v3 id: npm-cache with: path: ${{ steps.npm-cache-dir.outputs.dir }} key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - name: Install dependencies run: | sudo apt-get update sudo apt-get install \ debmake \ debhelper-compat \ crossbuild-essential-arm64 - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Run dpkg build working-directory: embassy-os-deb run: "make VERSION=0.3.x TAG=${{ github.ref_name }}" env: OS_ARCH: ${{ matrix.platform }} - uses: actions/checkout@v3 with: repository: Start9Labs/startos-image-recipes path: startos-image-recipes - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y qemu-user-static wget https://deb.debian.org/debian/pool/main/d/debspawn/debspawn_0.6.2-1_all.deb sha256sum ./debspawn_0.6.2-1_all.deb | grep 37ef27458cb1e35e8bce4d4f639b06b4b3866fc0b9191ec6b9bd157afd06a817 sudo apt-get install -y ./debspawn_0.6.2-1_all.deb - name: Configure debspawn run: | sudo mkdir -p /etc/debspawn/ echo "AllowUnsafePermissions=true" | sudo tee /etc/debspawn/global.toml sudo mkdir -p /var/tmp/debspawn - run: sudo mount -t tmpfs tmpfs /var/tmp/debspawn if: ${{ github.event.inputs.runner == 'fast' && (matrix.platform == 'x86_64' || matrix.platform == 'x86_64-nonfree') }} - uses: buildjet/cache@v3 with: path: /var/lib/debspawn key: ${{ runner.os }}-${{ matrix.platform }}-debspawn-init - run: "mkdir -p startos-image-recipes/overlays/deb" - run: "mv embassy-os-deb/embassyos_0.3.x-1_*.deb startos-image-recipes/overlays/deb/" - run: "rm -rf embassy-os-deb" - name: Run iso build working-directory: startos-image-recipes run: | ./run-local-build.sh ${{ matrix.platform }} - uses: actions/upload-artifact@v3 with: name: ${{ matrix.platform }}.squashfs path: startos-image-recipes/results/*.squashfs - uses: actions/upload-artifact@v3 with: name: ${{ matrix.platform }}.iso path: startos-image-recipes/results/*.iso if: ${{ matrix.platform != 'raspberrypi' }} - uses: actions/checkout@v3 with: submodules: recursive path: start-os if: ${{ matrix.platform == 'raspberrypi' }} - run: "mv startos-image-recipes/results/startos-*_raspberrypi.squashfs start-os/startos.raspberrypi.squashfs" if: ${{ matrix.platform == 'raspberrypi' }} - run: rm -rf startos-image-recipes if: ${{ matrix.platform == 'raspberrypi' }} - name: Build image working-directory: start-os run: make startos_raspberrypi.img if: ${{ matrix.platform == 'raspberrypi' }} - uses: actions/upload-artifact@v3 with: name: raspberrypi.img path: start-os/startos-*_raspberrypi.img if: ${{ matrix.platform == 'raspberrypi' }}