From 6d76c36f0e35c5e07a5df5d2db5d7d1bf3e7b462 Mon Sep 17 00:00:00 2001 From: Vicente Cheng Date: Wed, 29 Nov 2023 22:15:44 +0800 Subject: [PATCH] build: use newer elemental to build iso - drop the old elemental binary - drop luet - new elemental do not support download image by luet, we need to handle the boot related files manually - add debug flag when elemental build-iso Signed-off-by: Vicente Cheng --- Dockerfile.dapper | 14 +++++++------- package/harvester-os/manifest.yaml | 11 ++++------- scripts/package-harvester-os | 9 ++++++++- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/Dockerfile.dapper b/Dockerfile.dapper index 3c0a49dca..6a92fc6e5 100644 --- a/Dockerfile.dapper +++ b/Dockerfile.dapper @@ -1,6 +1,5 @@ -FROM quay.io/costoolkit/releases-green:luet-toolchain-0.21.2 as luet -FROM quay.io/costoolkit/elemental-cli:v0.2.5 as elemental - +FROM quay.io/costoolkit/releases-teal:grub2-live-0.0.4-2 as grub2-mbr +FROM quay.io/costoolkit/releases-teal:grub2-efi-image-live-0.0.4-2 as grub2-efi FROM registry.suse.com/bci/golang:1.20 ARG http_proxy=$http_proxy @@ -28,6 +27,11 @@ RUN zypper addrepo http://download.opensuse.org/distribution/leap/15.4/repo/oss/ zypper --gpg-auto-import-keys refresh && \ zypper in -y qemu-x86 qemu-tools +RUN mkdir /grub2-mbr +COPY --from=grub2-mbr / /grub2-mbr +RUN mkdir /grub2-efi +COPY --from=grub2-efi / /grub2-efi + # set up helm ENV HELM_VERSION v3.3.1 ENV HELM_URL=https://get.helm.sh/helm-${HELM_VERSION}-linux-${ARCH}.tar.gz @@ -35,10 +39,6 @@ RUN mkdir /usr/tmp && \ curl ${HELM_URL} | tar xvzf - --strip-components=1 -C /usr/tmp/ && \ mv /usr/tmp/helm /usr/bin/helm -# luet & elemental -COPY --from=luet /usr/bin/luet /usr/bin/luet -COPY --from=elemental /usr/bin/elemental /usr/bin/elemental - # You cloud defined your own rke2 url by setup `RKE2_IMAGE_REPO` ENV DAPPER_ENV REPO TAG DRONE_TAG DRONE_BRANCH CROSS RKE2_IMAGE_REPO USE_LOCAL_IMAGES BUILD_QCOW DRONE_BUILD_EVENT ENV DAPPER_SOURCE /go/src/github.com/harvester/harvester-installer/ diff --git a/package/harvester-os/manifest.yaml b/package/harvester-os/manifest.yaml index 302eec40d..f63ef5177 100644 --- a/package/harvester-os/manifest.yaml +++ b/package/harvester-os/manifest.yaml @@ -1,11 +1,8 @@ iso: uefi: - - channel:live/grub2-efi-image + - dir:/grub2-efi image: - - channel:live/grub2 - - channel:live/grub2-efi-image + - dir:/grub2-mbr + - dir:/grub2-efi + - dir:/boot-files label: "COS_LIVE" -repositories: - - name: cOS - uri: quay.io/costoolkit/releases-teal - type: docker \ No newline at end of file diff --git a/scripts/package-harvester-os b/scripts/package-harvester-os index 3ba778a5e..d3a8b8306 100755 --- a/scripts/package-harvester-os +++ b/scripts/package-harvester-os @@ -52,13 +52,20 @@ else PROJECT_PREFIX+="-master" fi +# Create kernel, initrd folder for iso +# If we use the dir format on the manifest, we need to handle it +mkdir -p /boot-files/boot + # Copy kernel, initrd out for PXE boot KERNEL=$(docker run --rm ${HARVESTER_OS_IMAGE} readlink /boot/vmlinuz) INITRD=$(docker run --rm ${HARVESTER_OS_IMAGE} readlink /boot/initrd) docker create --cidfile=os-img-container ${HARVESTER_OS_IMAGE} docker cp $( iso/boot/grub2/harvester.cfg -elemental build-iso --config-dir "$(pwd)" "docker:${HARVESTER_OS_IMAGE}" -a x86_64 \ +elemental build-iso --debug --config-dir "$(pwd)" "docker:${HARVESTER_OS_IMAGE}" \ --local \ -n "${ISO_PREFIX}" \ -o "${ARTIFACTS_DIR}" \