mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-26 10:21:52 +00:00
* pack compressed assets into single binary * update naming * tweaks * fix build * fix cargo lock * rename CLI * remove explicit ref name
185 lines
5.5 KiB
YAML
185 lines
5.5 KiB
YAML
name: Debian-based ISO and SquashFS
|
|
|
|
on:
|
|
workflow_call:
|
|
workflow_dispatch:
|
|
inputs:
|
|
environment:
|
|
type: choice
|
|
description: Environment
|
|
options:
|
|
- "<NONE>"
|
|
- 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 == ''<NONE>''] }}'
|
|
|
|
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' }}
|