mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-26 10:21:52 +00:00
* add support for inbound proxies * backend changes * fix file type * proxy -> tunnel, implement backend apis * wip start-tunneld * add domains and gateways, remove routers, fix docs links * dont show hidden actions * show and test dns * edit instead of chnage acme and change gateway * refactor: domains page * refactor: gateways page * domains and acme refactor * certificate authorities * refactor public/private gateways * fix fe types * domains mostly finished * refactor: add file control to form service * add ip util to sdk * domains api + migration * start service interface page, WIP * different options for clearnet domains * refactor: styles for interfaces page * minor * better placeholder for no addresses * start sorting addresses * best address logic * comments * fix unnecessary export * MVP of service interface page * domains preferred * fix: address comments * only translations left * wip: start-tunnel & fix build * forms for adding domain, rework things based on new ideas * fix: dns testing * public domain, max width, descriptions for dns * nix StartOS domains, implement public and private domains at interface scope * restart tor instead of reset * better icon for restart tor * dns * fix sort functions for public and private domains * with todos * update types * clean up tech debt, bump dependencies * revert to ts-rs v9 * fix all types * fix dns form * add missing translations * it builds * fix: comments (#3009) * fix: comments * undo default --------- Co-authored-by: Matt Hill <mattnine@protonmail.com> * fix: refactor legacy components (#3010) * fix: comments * fix: refactor legacy components * remove default again --------- Co-authored-by: Matt Hill <mattnine@protonmail.com> * more translations * wip * fix deadlock * coukd work * simple renaming * placeholder for empty service interfaces table * honor hidden form values * remove logs * reason instead of description * fix dns * misc fixes * implement toggling gateways for service interface * fix showing dns records * move status column in service list * remove unnecessary truthy check * refactor: refactor forms components and remove legacy Taiga UI package (#3012) * handle wh file uploads * wip: debugging tor * socks5 proxy working * refactor: fix multiple comments (#3013) * refactor: fix multiple comments * styling changes, add documentation to sidebar * translations for dns page * refactor: subtle colors * rearrange service page --------- Co-authored-by: Matt Hill <mattnine@protonmail.com> * fix file_stream and remove non-terminating test * clean up logs * support for sccache * fix gha sccache * more marketplace translations * install wizard clarity * stub hostnameInfo in migration * fix address info after setup, fix styling on SI page, new 040 release notes * remove tor logs from os * misc fixes * reset tor still not functioning... * update ts * minor styling and wording * chore: some fixes (#3015) * fix gateway renames * different handling for public domains * styling fixes * whole navbar should not be clickable on service show page * timeout getState request * remove links from changelog * misc fixes from pairing * use custom name for gateway in more places * fix dns parsing * closes #3003 * closes #2999 * chore: some fixes (#3017) * small copy change * revert hardcoded error for testing * dont require port forward if gateway is public * use old wan ip when not available * fix .const hanging on undefined * fix test * fix doc test * fix renames * update deps * allow specifying dependency metadata directly * temporarily make dependencies not cliackable in marketplace listings * fix socks bind * fix test --------- Co-authored-by: Aiden McClelland <me@drbonez.dev> Co-authored-by: waterplea <alexander@inkin.ru>
282 lines
8.4 KiB
YAML
282 lines
8.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
|
|
deploy:
|
|
type: choice
|
|
description: Deploy
|
|
options:
|
|
- NONE
|
|
- alpha
|
|
- beta
|
|
push:
|
|
branches:
|
|
- master
|
|
- next/*
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
- next/*
|
|
|
|
env:
|
|
NODEJS_VERSION: "22.17.1"
|
|
ENVIRONMENT: '${{ fromJson(format(''["{0}", ""]'', github.event.inputs.environment || ''dev''))[github.event.inputs.environment == ''NONE''] }}'
|
|
|
|
jobs:
|
|
compile:
|
|
name: Compile Base Binaries
|
|
strategy:
|
|
fail-fast: true
|
|
matrix:
|
|
arch: >-
|
|
${{
|
|
fromJson('{
|
|
"x86_64": ["x86_64"],
|
|
"x86_64-nonfree": ["x86_64"],
|
|
"aarch64": ["aarch64"],
|
|
"aarch64-nonfree": ["aarch64"],
|
|
"raspberrypi": ["aarch64"],
|
|
"ALL": ["x86_64", "aarch64"]
|
|
}')[github.event.inputs.platform || 'ALL']
|
|
}}
|
|
runs-on: ${{ fromJson('["ubuntu-22.04", "buildjet-32vcpu-ubuntu-2204"]')[github.event.inputs.runner == 'fast'] }}
|
|
steps:
|
|
- run: |
|
|
sudo mount -t tmpfs tmpfs .
|
|
if: ${{ github.event.inputs.runner == 'fast' }}
|
|
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.x"
|
|
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ env.NODEJS_VERSION }}
|
|
|
|
- name: Set up docker QEMU
|
|
uses: docker/setup-qemu-action@v3
|
|
|
|
- name: Set up system dependencies
|
|
run: sudo apt-get update && sudo apt-get install -y qemu-user-static systemd-container squashfuse
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Configure sccache
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
core.exportVariable('ACTIONS_RESULTS_URL', process.env.ACTIONS_RESULTS_URL || '');
|
|
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
|
|
|
|
- name: Make
|
|
run: make ARCH=${{ matrix.arch }} compiled-${{ matrix.arch }}.tar
|
|
env:
|
|
SCCACHE_GHA_ENABLED: on
|
|
SCCACHE_GHA_VERSION: 0
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: compiled-${{ matrix.arch }}.tar
|
|
path: compiled-${{ matrix.arch }}.tar
|
|
image:
|
|
name: Build Image
|
|
needs: [compile]
|
|
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-8vcpu-ubuntu-2204",
|
|
"x86_64-nonfree": "buildjet-8vcpu-ubuntu-2204",
|
|
"aarch64": "buildjet-8vcpu-ubuntu-2204-arm",
|
|
"aarch64-nonfree": "buildjet-8vcpu-ubuntu-2204-arm",
|
|
"raspberrypi": "buildjet-8vcpu-ubuntu-2204-arm",
|
|
}')[matrix.platform]
|
|
)
|
|
)[github.event.inputs.runner == 'fast']
|
|
}}
|
|
env:
|
|
ARCH: >-
|
|
${{
|
|
fromJson('{
|
|
"x86_64": "x86_64",
|
|
"x86_64-nonfree": "x86_64",
|
|
"aarch64": "aarch64",
|
|
"aarch64-nonfree": "aarch64",
|
|
"raspberrypi": "aarch64",
|
|
}')[matrix.platform]
|
|
}}
|
|
steps:
|
|
- name: Free space
|
|
run: rm -rf /opt/hostedtoolcache*
|
|
if: ${{ github.event.inputs.runner != 'fast' }}
|
|
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.x"
|
|
|
|
- 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') }}
|
|
|
|
- name: Download compiled artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: compiled-${{ env.ARCH }}.tar
|
|
|
|
- name: Extract compiled artifacts
|
|
run: tar -xvf compiled-${{ env.ARCH }}.tar
|
|
|
|
- name: Prevent rebuild of compiled artifacts
|
|
run: |
|
|
mkdir -p web/node_modules
|
|
mkdir -p web/dist/raw
|
|
mkdir -p core/startos/bindings
|
|
mkdir -p sdk/base/lib/osBindings
|
|
mkdir -p container-runtime/node_modules
|
|
mkdir -p container-runtime/dist
|
|
mkdir -p container-runtime/dist/node_modules
|
|
mkdir -p core/startos/bindings
|
|
mkdir -p sdk/dist
|
|
mkdir -p sdk/baseDist
|
|
mkdir -p patch-db/client/node_modules
|
|
mkdir -p patch-db/client/dist
|
|
mkdir -p web/.angular
|
|
mkdir -p web/dist/raw/ui
|
|
mkdir -p web/dist/raw/install-wizard
|
|
mkdir -p web/dist/raw/setup-wizard
|
|
mkdir -p web/dist/static/ui
|
|
mkdir -p web/dist/static/install-wizard
|
|
mkdir -p web/dist/static/setup-wizard
|
|
PLATFORM=${{ matrix.platform }} make -t compiled-${{ env.ARCH }}.tar
|
|
|
|
- run: git status
|
|
|
|
- name: Run iso build
|
|
run: PLATFORM=${{ matrix.platform }} make iso
|
|
if: ${{ matrix.platform != 'raspberrypi' }}
|
|
|
|
- name: Run img build
|
|
run: PLATFORM=${{ matrix.platform }} make img
|
|
if: ${{ matrix.platform == 'raspberrypi' }}
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ matrix.platform }}.squashfs
|
|
path: results/*.squashfs
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ matrix.platform }}.iso
|
|
path: results/*.iso
|
|
if: ${{ matrix.platform != 'raspberrypi' }}
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ matrix.platform }}.img
|
|
path: results/*.img
|
|
if: ${{ matrix.platform == 'raspberrypi' }}
|
|
|
|
- name: Upload OTA to registry
|
|
run: >-
|
|
PLATFORM=${{ matrix.platform }} make upload-ota TARGET="${{
|
|
fromJson('{
|
|
"alpha": "alpha-registry-x.start9.com",
|
|
"beta": "beta-registry.start9.com",
|
|
}')[github.event.inputs.deploy]
|
|
}}" KEY="${{
|
|
fromJson(
|
|
format('{{
|
|
"alpha": "{0}",
|
|
"beta": "{1}",
|
|
}}', secrets.ALPHA_INDEX_KEY, secrets.BETA_INDEX_KEY)
|
|
)[github.event.inputs.deploy]
|
|
}}"
|
|
if: ${{ github.event.inputs.deploy != '' && github.event.inputs.deploy != 'NONE' }}
|
|
|
|
index:
|
|
if: ${{ github.event.inputs.deploy != '' && github.event.inputs.deploy != 'NONE' }}
|
|
needs: [image]
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- run: >-
|
|
curl "https://${{
|
|
fromJson('{
|
|
"alpha": "alpha-registry-x.start9.com",
|
|
"beta": "beta-registry.start9.com",
|
|
}')[github.event.inputs.deploy]
|
|
}}:8443/resync.cgi?key=${{
|
|
fromJson(
|
|
format('{{
|
|
"alpha": "{0}",
|
|
"beta": "{1}",
|
|
}}', secrets.ALPHA_INDEX_KEY, secrets.BETA_INDEX_KEY)
|
|
)[github.event.inputs.deploy]
|
|
}}"
|