-
Notifications
You must be signed in to change notification settings - Fork 0
127 lines (115 loc) · 4.16 KB
/
Copy pathstable.yml
File metadata and controls
127 lines (115 loc) · 4.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
name: Build LegendaryOS Stable
on:
workflow_call:
inputs:
builder-source:
required: true
type: string
builder-version:
required: false
type: string
default: 'v0.5.3'
build-target:
description: 'What to build: all | cloud | iso'
required: false
type: string
default: 'all'
ref:
description: 'Branch/tag/commit to checkout'
required: false
type: string
default: ''
secrets:
LEGENDARYOS_BUILD:
required: true
workflow_dispatch:
inputs:
builder-source:
description: 'How to get legendaryos-builder'
required: true
type: choice
options: [release, source]
default: release
builder-version:
description: 'Builder version (release only)'
required: false
default: 'v0.5.3'
build-target:
description: 'What to build'
required: true
type: choice
options: [all, cloud, iso]
default: all
jobs:
build-stable:
name: Build Stable (bootc / immutable)
runs-on: ubuntu-latest
steps:
- name: Checkout LegendaryOS
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref || github.ref }}
- name: Install dependencies
run: |
sudo apt-get update -qq
sudo apt-get install -y --no-install-recommends \
podman skopeo python3 qemu-user-static
- name: Get builder (release binary)
if: inputs.builder-source == 'release'
run: |
curl -fsSL \
"https://github.com/LegendaryOS-Linux-System/LegendaryOS-Builder/releases/download/${{ inputs.builder-version }}/legendaryos-builder" \
-o /usr/local/bin/legendaryos-builder
chmod +x /usr/local/bin/legendaryos-builder
legendaryos-builder --version
- name: Get builder (build from source)
if: inputs.builder-source == 'source'
run: |
sudo apt-get install -y --no-install-recommends golang ruby
git clone --depth=1 \
https://github.com/LegendaryOS-Linux-System/LegendaryOS-Builder.git \
/tmp/los-builder
cd /tmp/los-builder
ruby build.rb
sudo cp legendaryos-builder /usr/local/bin/legendaryos-builder
legendaryos-builder --version
- name: Build cloud image (podman build + push)
if: inputs.build-target == 'all' || inputs.build-target == 'cloud'
env:
GITHUB_TOKEN: ${{ secrets.LEGENDARYOS_BUILD }}
run: |
sudo -E legendaryos-builder build cloud -push
- name: Build ISO
if: inputs.build-target == 'all' || inputs.build-target == 'iso'
env:
GITHUB_TOKEN: ${{ secrets.LEGENDARYOS_BUILD }}
run: |
sudo -E legendaryos-builder build iso --verbose 2>&1 | tee /tmp/build-iso.log
- name: Collect build logs
if: failure()
run: |
mkdir -p /tmp/los-logs
cp /tmp/build-iso.log /tmp/los-logs/ 2>/dev/null || true
cp build/anaconda.ks /tmp/los-logs/ 2>/dev/null || true
cp build/Containerfile /tmp/los-logs/ 2>/dev/null || true
cp build/output/bib-config.toml /tmp/los-logs/ 2>/dev/null || true
sudo podman images > /tmp/los-logs/podman-images.txt 2>/dev/null || true
sudo podman image inspect \
ghcr.io/legendaryos-linux-system/legendaryos:stable \
> /tmp/los-logs/image-inspect.json 2>/dev/null || true
df -h > /tmp/los-logs/df.txt 2>/dev/null || true
cd /tmp && zip -r los-stable-logs.zip los-logs/
- name: Upload failure logs
if: failure()
uses: actions/upload-artifact@v4
with:
name: los-stable-logs
path: /tmp/los-stable-logs.zip
retention-days: 14
- name: Upload ISO
if: success() && (inputs.build-target == 'all' || inputs.build-target == 'iso')
uses: actions/upload-artifact@v4
with:
name: LegendaryOS-stable-iso
path: build/output/*.iso
retention-days: 30