mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-26 02:11:53 +00:00
208 lines
6.4 KiB
YAML
208 lines
6.4 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
|
|
platform:
|
|
type: choice
|
|
description: Platform
|
|
options:
|
|
- ALL
|
|
- x86_64
|
|
- x86_64-nonfree
|
|
- aarch64
|
|
- aarch64-nonfree
|
|
- raspberrypi
|
|
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: >-
|
|
${{
|
|
fromJson(
|
|
format(
|
|
'[
|
|
["{0}"],
|
|
["x86_64", "x86_64-nonfree", "aarch64", "aarch64-nonfree", "raspberrypi"]
|
|
]',
|
|
github.event.inputs.platform || 'ALL'
|
|
)
|
|
)[(github.event.inputs.platform || 'ALL') == 'ALL']
|
|
}}
|
|
runs-on: >-
|
|
${{
|
|
fromJson(
|
|
format(
|
|
'["ubuntu-22.04", "{0}"]',
|
|
fromJson('{
|
|
"x86_64": ["buildjet-32vcpu-ubuntu-2204", "buildjet-32vcpu-ubuntu-2204"],
|
|
"x86_64-nonfree": ["buildjet-32vcpu-ubuntu-2204", "buildjet-32vcpu-ubuntu-2204"],
|
|
"aarch64": ["buildjet-8vcpu-ubuntu-2204-arm", "buildjet-32vcpu-ubuntu-2204-arm"],
|
|
"aarch64-nonfree": ["buildjet-8vcpu-ubuntu-2204-arm", "buildjet-32vcpu-ubuntu-2204-arm"],
|
|
"raspberrypi": ["buildjet-16vcpu-ubuntu-2204-arm", "buildjet-32vcpu-ubuntu-2204-arm"],
|
|
}')[matrix.platform][github.event.inputs.platform == matrix.platform]
|
|
)
|
|
)[github.event.inputs.runner == 'fast']
|
|
}}
|
|
steps:
|
|
- name: Free space
|
|
run: df -h && rm -rf /opt/hostedtoolcache* && df -h
|
|
|
|
- run: |
|
|
sudo mount -t tmpfs tmpfs .
|
|
if: ${{ github.event.inputs.runner == 'fast' && (matrix.platform == 'x86_64' || matrix.platform == 'x86_64-nonfree' || github.event.inputs.platform == matrix.platform) }}
|
|
|
|
- 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: actions/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: actions/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 ${{ steps.npm-cache-dir.outputs.dir }} $HOME/.cargo"
|
|
|
|
- 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' }}
|