Files
kcrypt/Earthfile
Itxaka 5f52d1f2f9 Store dracut artifacts in its own target
So its easier to access them from other places.
Alos stores the dracut.conf file for kcryt under the dracut dir and
renames it to its proper final name

Signed-off-by: Itxaka <itxaka.garcia@spectrocloud.com>
2023-05-03 21:52:44 +02:00

94 lines
3.3 KiB
Plaintext

VERSION 0.6
# Note the base image needs to have dracut.
# TODO: This needs to come from pre-built kernels in c3os repos, kcrypt included.
# Framework images should use our initrd
ARG BASE_IMAGE=quay.io/kairos/core-opensuse
# renovate: datasource=docker depName=golang
ARG GO_VERSION=1.20.2
ARG GOLINT_VERSION=1.52.2
build-kcrypt:
FROM golang:alpine
RUN apk add git
COPY . /work
WORKDIR /work
ARG VERSION="$(git describe --tags)"
RUN CGO_ENABLED=0 go build -o kcrypt -ldflags "-X main.Version=$VERSION"
SAVE ARTIFACT /work/kcrypt AS LOCAL kcrypt
dracut-artifacts:
FROM $BASE_IMAGE
WORKDIR /build
COPY --dir dracut/29kcrypt .
COPY dracut/10-kcrypt.conf .
SAVE ARTIFACT 29kcrypt 29kcrypt
SAVE ARTIFACT 10-kcrypt.conf 10-kcrypt.conf
build-dracut:
FROM $BASE_IMAGE
WORKDIR /work
COPY +build-kcrypt/kcrypt /usr/bin/kcrypt
COPY +dracut-artifacts/29kcrypt /usr/lib/dracut/modules.d/29kcrypt
COPY +dracut-artifacts/10-kcrypt.conf /etc/dracut.conf.d/10-kcrypt.conf
RUN kernel=$(ls /lib/modules | head -n1) && \
dracut -f "/boot/initrd-${kernel}" "${kernel}" && \
ln -sf "initrd-${kernel}" /boot/initrd
ARG INITRD=$(readlink -f /boot/initrd)
SAVE ARTIFACT $INITRD AS LOCAL initrd
image:
FROM $BASE_IMAGE
ARG IMAGE=dracut
ARG INITRD=$(readlink -f /boot/initrd)
ARG NAME=$(basename $INITRD)
COPY +build-dracut/$NAME $INITRD
COPY +build-kcrypt/kcrypt /usr/bin/kcrypt
# This is the discovery plugin that needs to be replaced!
# TODO: After install, copy any discovery plugin found to /oem - this is weak - another way is to inject the binary into the initrd, but a the moment it is not working properly.
COPY +dummy-discovery/dummy-discovery /system/discovery/kcrypt-discovery-dummy
# XXX: this is not working properly, but avoids the /oem copy.
#RUN kcrypt inject-initrd $INITRD /system/discovery/kcrypt-discovery-dummy /system/discovery/kcrypt-discovery-dummy
SAVE IMAGE $IMAGE
dummy-discovery:
FROM golang:alpine
COPY . /work
WORKDIR /work
RUN CGO_ENABLED=0 go build -o dummy-discovery ./examples/dummy-discovery
SAVE ARTIFACT /work/dummy-discovery AS LOCAL kcrypt-discovery-dummy
iso:
ARG ISO_NAME=test
FROM quay.io/kairos/osbuilder-tools
WORKDIR /build
RUN zypper in -y jq docker wget
RUN mkdir -p files-iso/boot/grub2
RUN wget https://raw.githubusercontent.com/c3os-io/c3os/master/overlay/files-iso/boot/grub2/grub.cfg -O files-iso/boot/grub2/grub.cfg
WITH DOCKER --allow-privileged --load $IMG=(+image)
RUN /entrypoint.sh --name $ISO_NAME --debug build-iso --date=false --local --overlay-iso /build/files-iso dracut:latest --output /build/
END
# See: https://github.com/rancher/elemental-cli/issues/228
RUN sha256sum $ISO_NAME.iso > $ISO_NAME.iso.sha256
SAVE ARTIFACT /build/$ISO_NAME.iso iso AS LOCAL build/$ISO_NAME.iso
SAVE ARTIFACT /build/$ISO_NAME.iso.sha256 sha256 AS LOCAL build/$ISO_NAME.iso.sha256
lint:
BUILD +golint
BUILD +yamllint
golint:
ARG GO_VERSION
FROM golang:$GO_VERSION
ARG GOLINT_VERSION
RUN wget -O- -nv https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s v$GOLINT_VERSION
WORKDIR /build
COPY . .
RUN golangci-lint run
yamllint:
FROM cytopia/yamllint
COPY . .
RUN yamllint .github/workflows/