Skip to content

Commit 784ade2

Browse files
mauromoralesmudlerItxaka
authored
[factory web ui] Basic features (#211)
* wip * wip * Enhance readabilitY Signed-off-by: mudler <mudler@kairos.io> * Make it working Signed-off-by: mudler <mudler@kairos.io> * Avoid installing docker * Display results separately Signed-off-by: mudler <mudler@kairos.io> * Build iso and raw images * Some nice UX/UI (#186) - Hide not needed fields for kubernetes when they are not needed - Only make them required if k8s variant is chosen - Put the checkbox along the Text, for gods sake Signed-off-by: Itxaka <itxaka@kairos.io> * Allow parallel jobs, improve UX/UI Signed-off-by: mudler <mudler@kairos.io> * Rename kubernetes provider to distribution Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * New design Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add progress Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Fixes Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add spinners to reset Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * remove missing defaults.yaml section Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Fix rocky name Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove fedora's moby engine Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Add a banner on top Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove packages installed Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Remove dropped grub Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Generate dockerfile Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Update css Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * feedback Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Use existing dep for uuid Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> --------- Signed-off-by: mudler <mudler@kairos.io> Signed-off-by: Itxaka <itxaka@kairos.io> Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> Co-authored-by: mudler <mudler@kairos.io> Co-authored-by: Itxaka <itxaka@kairos.io>
1 parent 5cc710b commit 784ade2

File tree

14 files changed

+2366
-11
lines changed

14 files changed

+2366
-11
lines changed

Dockerfile

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,34 @@ RUN go build -ldflags "-X main.version=${VERSION}" -o auroraboot
1717
FROM fedora:$FEDORA_VERSION AS default
1818
RUN dnf -y update
1919
## ISO+ Arm image + Netboot + cloud images Build depedencies
20-
RUN dnf in -y bc jq genisoimage docker sudo parted e2fsprogs erofs-utils binutils curl util-linux udev rsync \
21-
dosfstools mtools xorriso lvm2 zstd sbsigntools squashfs-tools kpartx grub2 openssl
20+
RUN dnf in -y bc \
21+
binutils \
22+
curl \
23+
dosfstools \
24+
e2fsprogs \
25+
erofs-utils \
26+
gdisk \
27+
genisoimage \
28+
git \
29+
grub2 \
30+
jq \
31+
kpartx \
32+
lvm2 \
33+
mtools \
34+
openssl \
35+
parted \
36+
qemu-img \
37+
qemu-system-x86 \
38+
qemu-tools \
39+
rsync \
40+
sbsigntools \
41+
squashfs-tools \
42+
sudo \
43+
udev \
44+
util-linux \
45+
xfsprogs \
46+
xorriso \
47+
zstd
2248

2349
COPY --from=luet /usr/bin/luet /usr/bin/luet
2450
ENV LUET_NOLOCK=true
@@ -97,6 +123,9 @@ RUN rm -d /arm/raw/grubefi/var || true
97123
# ARM helpers
98124
COPY ./image-assets/prepare_nvidia_orin_images.sh /prepare_nvidia_orin_images.sh
99125

126+
ENV BUILDKIT_PROGRESS=plain
127+
RUN dnf -y install dnf-plugins-core && dnf-3 config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo && dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin
128+
100129
COPY --from=builder /work/auroraboot /usr/bin/auroraboot
101130

102131
ENTRYPOINT ["/usr/bin/auroraboot"]

go.mod

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,19 @@ require (
1717
github.com/gofrs/uuid v4.4.0+incompatible
1818
github.com/google/go-containerregistry v0.20.3
1919
github.com/hashicorp/go-multierror v1.1.1
20+
github.com/joho/godotenv v1.5.1
2021
github.com/kairos-io/go-ukify v0.2.5
2122
github.com/kairos-io/kairos-agent/v2 v2.16.4
2223
github.com/kairos-io/kairos-sdk v0.7.3
2324
github.com/kairos-io/netboot v0.0.0-20241104101831-1454e04fdb07
2425
github.com/klauspost/compress v1.18.0
26+
github.com/labstack/echo/v4 v4.13.3
2527
github.com/mudler/go-processmanager v0.0.0-20240820160718-8b802d3ecf82
2628
github.com/mudler/yip v1.15.0
2729
github.com/onsi/ginkgo/v2 v2.23.0
2830
github.com/onsi/gomega v1.36.2
2931
github.com/otiai10/copy v1.14.1
32+
github.com/robert-nix/ansihtml v1.0.1
3033
github.com/sanity-io/litter v1.5.8
3134
github.com/spectrocloud-labs/herd v0.4.2
3235
github.com/spectrocloud/peg v0.0.0-20240405075800-c5da7125e30f
@@ -36,6 +39,7 @@ require (
3639
github.com/urfave/cli/v2 v2.27.6
3740
golang.org/x/exp v0.0.0-20250305212735-054e65f0b394
3841
golang.org/x/mod v0.24.0
42+
golang.org/x/net v0.37.0
3943
golang.org/x/sys v0.31.0
4044
gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0
4145
gopkg.in/yaml.v3 v3.0.1
@@ -116,10 +120,10 @@ require (
116120
github.com/jaypipes/ghw v0.13.0 // indirect
117121
github.com/jaypipes/pcidb v1.0.1 // indirect
118122
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
119-
github.com/joho/godotenv v1.5.1 // indirect
120123
github.com/kendru/darwin/go/depgraph v0.0.0-20230809052043-4d1c7e9d1767 // indirect
121124
github.com/kevinburke/ssh_config v1.2.0 // indirect
122125
github.com/klauspost/cpuid/v2 v2.2.8 // indirect
126+
github.com/labstack/gommon v0.4.2 // indirect
123127
github.com/lithammer/fuzzysearch v1.1.8 // indirect
124128
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
125129
github.com/magiconair/properties v1.8.7 // indirect
@@ -183,6 +187,8 @@ require (
183187
github.com/twpayne/go-vfs/v4 v4.3.0 // indirect
184188
github.com/u-root/uio v0.0.0-20240209044354-b3d14b93376a // indirect
185189
github.com/ulikunitz/xz v0.5.11 // indirect
190+
github.com/valyala/bytebufferpool v1.0.0 // indirect
191+
github.com/valyala/fasttemplate v1.2.2 // indirect
186192
github.com/vbatts/tar-split v0.11.6 // indirect
187193
github.com/vishvananda/netlink v1.3.0 // indirect
188194
github.com/vishvananda/netns v0.0.4 // indirect
@@ -200,10 +206,10 @@ require (
200206
go.opentelemetry.io/otel v1.34.0 // indirect
201207
go.opentelemetry.io/otel/metric v1.34.0 // indirect
202208
go.opentelemetry.io/otel/trace v1.34.0 // indirect
209+
go.uber.org/atomic v1.9.0 // indirect
203210
go.uber.org/multierr v1.11.0 // indirect
204-
go.uber.org/zap v1.27.0 // indirect
211+
go.uber.org/zap v1.23.0 // indirect
205212
golang.org/x/crypto v0.36.0 // indirect
206-
golang.org/x/net v0.37.0 // indirect
207213
golang.org/x/sync v0.12.0 // indirect
208214
golang.org/x/term v0.30.0 // indirect
209215
golang.org/x/text v0.23.0 // indirect

go.sum

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZw
170170
github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59 h1:WWB576BN5zNSZc/M9d/10pqEx5VHNhaQ/yOVAkmj5Yo=
171171
github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I=
172172
github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM=
173+
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
173174
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
174175
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
175176
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
@@ -681,6 +682,10 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
681682
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
682683
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
683684
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
685+
github.com/labstack/echo/v4 v4.13.3 h1:pwhpCPrTl5qry5HRdM5FwdXnhXSLSY+WE+YQSeCaafY=
686+
github.com/labstack/echo/v4 v4.13.3/go.mod h1:o90YNEeQWjDozo584l7AwhJMHN0bOC4tAfg+Xox9q5g=
687+
github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0=
688+
github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU=
684689
github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw=
685690
github.com/letsencrypt/pkcs11key/v4 v4.0.0/go.mod h1:EFUvBDay26dErnNb70Nd0/VW3tJiIbETBPTl9ATXQag=
686691
github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
@@ -917,6 +922,8 @@ github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqn
917922
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
918923
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
919924
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
925+
github.com/robert-nix/ansihtml v1.0.1 h1:VTiyQ6/+AxSJoSSLsMecnkh8i0ZqOEdiRl/odOc64fc=
926+
github.com/robert-nix/ansihtml v1.0.1/go.mod h1:CJwclxYaTPc2RfcxtanEACsYuTksh4yDXcNeHHKZINE=
920927
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
921928
github.com/rogpeppe/fastuuid v1.1.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
922929
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
@@ -1082,6 +1089,10 @@ github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX
10821089
github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
10831090
github.com/urfave/cli/v2 v2.27.6 h1:VdRdS98FNhKZ8/Az8B7MTyGQmpIr36O1EHybx/LaZ4g=
10841091
github.com/urfave/cli/v2 v2.27.6/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ=
1092+
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
1093+
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
1094+
github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
1095+
github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
10851096
github.com/vbatts/tar-split v0.11.6 h1:4SjTW5+PU11n6fZenf2IPoV8/tz3AaYHMWjf23envGs=
10861097
github.com/vbatts/tar-split v0.11.6/go.mod h1:dqKNtesIOr2j2Qv3W/cHjnvk9I8+G7oAkFDFN6TCBEI=
10871098
github.com/vishvananda/netlink v1.3.0 h1:X7l42GfcV4S6E4vHTsw48qbrV+9PVojNfIhZcwQdrZk=
@@ -1194,10 +1205,12 @@ go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
11941205
go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
11951206
go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
11961207
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
1208+
go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
1209+
go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
11971210
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
11981211
go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
1199-
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
1200-
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
1212+
go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA=
1213+
go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
12011214
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
12021215
go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
12031216
go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
@@ -1210,8 +1223,8 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
12101223
go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ=
12111224
go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
12121225
go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI=
1213-
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
1214-
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
1226+
go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY=
1227+
go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY=
12151228
gocloud.dev v0.19.0/go.mod h1:SmKwiR8YwIMMJvQBKLsC3fHNyMwXLw3PMDO+VVteJMI=
12161229
golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
12171230
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=

internal/cmd/app.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ package cmd
22

33
import (
44
"errors"
5-
"github.com/hashicorp/go-multierror"
65
"os"
76

7+
"github.com/hashicorp/go-multierror"
8+
89
"github.com/kairos-io/AuroraBoot/deployer"
910
"github.com/kairos-io/AuroraBoot/internal"
1011
sdkTypes "github.com/kairos-io/kairos-sdk/types"
@@ -18,7 +19,7 @@ func GetApp(version string) *cli.App {
1819
Version: version,
1920
Authors: []*cli.Author{{Name: "Kairos authors", Email: "members@kairos.io"}},
2021
Usage: "auroraboot",
21-
Commands: []*cli.Command{&BuildISOCmd, &BuildUKICmd, &GenKeyCmd, &SysextCmd, &NetBootCmd},
22+
Commands: []*cli.Command{&BuildISOCmd, &BuildUKICmd, &GenKeyCmd, &SysextCmd, &NetBootCmd, &WebCMD},
2223
Flags: []cli.Flag{
2324
&cli.StringSliceFlag{
2425
Name: "set",

internal/cmd/web.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package cmd
2+
3+
import (
4+
"os"
5+
6+
"github.com/kairos-io/AuroraBoot/internal/web"
7+
"github.com/urfave/cli/v2"
8+
)
9+
10+
var WebCMD = cli.Command{
11+
Name: "web",
12+
Aliases: []string{"w"},
13+
Usage: "Starts a ui",
14+
Flags: []cli.Flag{
15+
&cli.StringFlag{
16+
Name: "address",
17+
Usage: "Listen address",
18+
Value: ":8080",
19+
},
20+
&cli.StringFlag{
21+
Name: "artifact-dir",
22+
Usage: "Artifact directory",
23+
Value: "/tmp/artifacts",
24+
},
25+
},
26+
Action: func(c *cli.Context) error {
27+
os.MkdirAll(c.String("artifact-dir"), os.ModePerm)
28+
return web.App(c.String("address"), c.String("artifact-dir"))
29+
},
30+
}

0 commit comments

Comments
 (0)