Skip to content

Commit c775f3a

Browse files
committed
Initial commit
0 parents  commit c775f3a

46 files changed

Lines changed: 3687 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build-iso.yml

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
name: Build GyrOS ISO
2+
3+
on:
4+
push:
5+
branches: [main]
6+
tags:
7+
- 'v*'
8+
pull_request:
9+
branches: [main]
10+
workflow_dispatch:
11+
12+
env:
13+
IMAGE_NAME: gyros
14+
15+
jobs:
16+
build:
17+
runs-on: ubuntu-24.04
18+
container:
19+
image: ubuntu:questing
20+
options: --privileged
21+
22+
steps:
23+
- name: Install container prerequisites
24+
run: |
25+
apt-get update
26+
apt-get install -y git sudo ca-certificates
27+
28+
- name: Checkout repository
29+
uses: actions/checkout@v4
30+
31+
- name: Fix script permissions
32+
run: chmod +x build.sh scripts/*.sh
33+
34+
- name: Install build dependencies
35+
run: ./scripts/ensure-deps.sh
36+
37+
- name: Validate configuration
38+
run: ./scripts/validate.sh
39+
40+
- name: Build ISO (Release mode for tags)
41+
if: startsWith(github.ref, 'refs/tags/')
42+
run: ./build.sh --release
43+
44+
- name: Build ISO (Default mode)
45+
if: "!startsWith(github.ref, 'refs/tags/')"
46+
run: ./build.sh
47+
48+
- name: Get ISO filename
49+
id: iso
50+
run: |
51+
ISO_FILE=$(ls build/gyros-*.iso | head -n1)
52+
ISO_NAME=$(basename "$ISO_FILE")
53+
echo "file=$ISO_FILE" >> $GITHUB_OUTPUT
54+
echo "name=$ISO_NAME" >> $GITHUB_OUTPUT
55+
echo "sha256=$(sha256sum "$ISO_FILE" | awk '{print $1}')" >> $GITHUB_OUTPUT
56+
57+
- name: Upload ISO artifact
58+
uses: actions/upload-artifact@v4
59+
with:
60+
name: ${{ steps.iso.outputs.name }}
61+
path: ${{ steps.iso.outputs.file }}
62+
retention-days: 30
63+
compression-level: 0 # ISO already compressed
64+
65+
- name: Create checksums file
66+
if: startsWith(github.ref, 'refs/tags/')
67+
run: |
68+
cd build
69+
sha256sum *.iso > SHA256SUMS
70+
sha512sum *.iso > SHA512SUMS
71+
72+
- name: Create Release
73+
if: startsWith(github.ref, 'refs/tags/')
74+
uses: softprops/action-gh-release@v1
75+
with:
76+
files: |
77+
build/*.iso
78+
build/SHA256SUMS
79+
build/SHA512SUMS
80+
body: |
81+
## GyrOS ${{ github.ref_name }}
82+
83+
Secure RAM-only Ubuntu live ISO
84+
85+
### Verification
86+
```
87+
SHA256: ${{ steps.iso.outputs.sha256 }}
88+
```
89+
90+
### Installation
91+
```bash
92+
# Write to USB drive (replace /dev/sdX with your device)
93+
sudo dd if=${{ steps.iso.outputs.name }} of=/dev/sdX bs=4M status=progress oflag=sync && sync
94+
```
95+
96+
### QEMU Testing
97+
```bash
98+
qemu-system-x86_64 -enable-kvm -smp 4 -cpu host -m 4096 \
99+
-cdrom ${{ steps.iso.outputs.name }} \
100+
-netdev user,id=net0 -device virtio-net,netdev=net0
101+
```
102+
draft: false
103+
prerelease: false
104+
env:
105+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.gitignore

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Build output
2+
build/
3+
4+
# Package cache
5+
.cache/
6+
7+
# ISO images and checksums
8+
*.iso
9+
*.iso.sha256
10+
11+
# Test images (QEMU)
12+
*.img

0 commit comments

Comments
 (0)