From 0529ae79d1351cd7f8339d92cb94318b83e70a4c Mon Sep 17 00:00:00 2001 From: Dusty Mabe Date: Mon, 6 Nov 2023 20:23:43 -0500 Subject: [PATCH] tests: add metal output to fedora-coreos-container manifest Also switch the qcow2 output to be a "qemu" platform image. This change takes advantage of the recent org.osbuild.kernel-cmdline.bls-append stage addition to modify kernel arguments in later pipelines. To get a qemu image output: - osbuild --output-directory out/ --export qemu test/data/manifests/fedora-coreos-container.json To get a metal image output: - osbuild --output-directory out/ --export metal test/data/manifests/fedora-coreos-container.json --- test/cases/ostree-images | 7 +- .../manifests/fedora-coreos-container.json | 149 ++++++++++++++++-- .../fedora-coreos-container.mpp.yaml | 97 ++++++++++-- 3 files changed, 233 insertions(+), 20 deletions(-) diff --git a/test/cases/ostree-images b/test/cases/ostree-images index 3337ee4e..0e218c9b 100755 --- a/test/cases/ostree-images +++ b/test/cases/ostree-images @@ -95,8 +95,11 @@ def run_tests(args, tmpdir): "fedora-coreos-container": { "manifest": "fedora-coreos-container.json", "exports": { - "qcow2": { - "artifact": "disk.qcow2" + "qemu": { + "artifact": "qemu.qcow2" + }, + "metal": { + "artifact": "metal.raw" } }, } diff --git a/test/data/manifests/fedora-coreos-container.json b/test/data/manifests/fedora-coreos-container.json index 7636ce4a..9f4a0778 100644 --- a/test/data/manifests/fedora-coreos-container.json +++ b/test/data/manifests/fedora-coreos-container.json @@ -442,7 +442,7 @@ ] }, { - "name": "image-tree", + "name": "tree", "build": "name:build", "source-epoch": 1659397331, "stages": [ @@ -492,9 +492,6 @@ ], "kernel_opts": [ "rw", - "console=tty0", - "console=ttyS0", - "ignition.platform.id=qemu", "$ignition_firstboot" ] }, @@ -541,7 +538,7 @@ ] }, { - "name": "image", + "name": "raw-image", "build": "name:build", "stages": [ { @@ -654,7 +651,7 @@ "type": "org.osbuild.tree", "origin": "org.osbuild.pipeline", "references": [ - "name:image-tree" + "name:tree" ] } }, @@ -735,7 +732,141 @@ ] }, { - "name": "qcow2", + "name": "raw-metal-image", + "build": "name:build", + "stages": [ + { + "type": "org.osbuild.copy", + "inputs": { + "tree": { + "type": "org.osbuild.tree", + "origin": "org.osbuild.pipeline", + "references": [ + "name:raw-image" + ] + } + }, + "options": { + "paths": [ + { + "from": "input://tree/disk.img", + "to": "tree:///disk.img" + } + ] + } + }, + { + "type": "org.osbuild.kernel-cmdline.bls-append", + "options": { + "bootpath": "mount:///", + "kernel_opts": [ + "ignition.platform.id=metal" + ] + }, + "devices": { + "boot": { + "type": "org.osbuild.loopback", + "options": { + "filename": "disk.img", + "start": 264192, + "size": 786432 + } + } + }, + "mounts": [ + { + "name": "boot", + "type": "org.osbuild.ext4", + "source": "boot", + "target": "/" + } + ] + } + ] + }, + { + "name": "raw-qemu-image", + "build": "name:build", + "stages": [ + { + "type": "org.osbuild.copy", + "inputs": { + "tree": { + "type": "org.osbuild.tree", + "origin": "org.osbuild.pipeline", + "references": [ + "name:raw-image" + ] + } + }, + "options": { + "paths": [ + { + "from": "input://tree/disk.img", + "to": "tree:///disk.img" + } + ] + } + }, + { + "type": "org.osbuild.kernel-cmdline.bls-append", + "options": { + "bootpath": "mount:///", + "kernel_opts": [ + "console=tty0", + "console=ttyS0,115200n8", + "ignition.platform.id=qemu" + ] + }, + "devices": { + "boot": { + "type": "org.osbuild.loopback", + "options": { + "filename": "disk.img", + "start": 264192, + "size": 786432 + } + } + }, + "mounts": [ + { + "name": "boot", + "type": "org.osbuild.ext4", + "source": "boot", + "target": "/" + } + ] + } + ] + }, + { + "name": "metal", + "build": "name:build", + "stages": [ + { + "type": "org.osbuild.copy", + "inputs": { + "tree": { + "type": "org.osbuild.tree", + "origin": "org.osbuild.pipeline", + "references": [ + "name:raw-metal-image" + ] + } + }, + "options": { + "paths": [ + { + "from": "input://tree/disk.img", + "to": "tree:///metal.raw" + } + ] + } + } + ] + }, + { + "name": "qemu", "build": "name:build", "stages": [ { @@ -745,14 +876,14 @@ "type": "org.osbuild.files", "origin": "org.osbuild.pipeline", "references": { - "name:image": { + "name:raw-qemu-image": { "file": "disk.img" } } } }, "options": { - "filename": "disk.qcow2", + "filename": "qemu.qcow2", "format": { "type": "qcow2", "compat": "1.1" diff --git a/test/data/manifests/fedora-coreos-container.mpp.yaml b/test/data/manifests/fedora-coreos-container.mpp.yaml index 13b338b8..d55f70e8 100644 --- a/test/data/manifests/fedora-coreos-container.mpp.yaml +++ b/test/data/manifests/fedora-coreos-container.mpp.yaml @@ -33,7 +33,7 @@ pipelines: id: build runner: mpp-format-string: org.osbuild.fedora{release} - - name: image-tree + - name: tree build: name:build source-epoch: 1659397331 stages: @@ -63,9 +63,6 @@ pipelines: - /boot/efi kernel_opts: - rw - - console=tty0 - - console=ttyS0 - - ignition.platform.id=qemu - '$ignition_firstboot' inputs: images: @@ -93,7 +90,7 @@ pipelines: write_defaults: false greenboot: false ignition: true - - name: image + - name: raw-image build: name:build stages: - type: org.osbuild.truncate @@ -157,7 +154,7 @@ pipelines: type: org.osbuild.tree origin: org.osbuild.pipeline references: - - name:image-tree + - name:tree options: paths: - from: input://tree/ @@ -217,7 +214,89 @@ pipelines: number: mpp-format-int: '{image.layout[''boot''].index}' path: /grub2 - - name: qcow2 + - name: raw-metal-image + build: name:build + stages: + - type: org.osbuild.copy + inputs: + tree: + type: org.osbuild.tree + origin: org.osbuild.pipeline + references: + - name:raw-image + options: + paths: + - from: input://tree/disk.img + to: tree:///disk.img + - type: org.osbuild.kernel-cmdline.bls-append + options: + bootpath: mount:/// + kernel_opts: + - ignition.platform.id=metal + devices: + boot: + type: org.osbuild.loopback + options: + filename: disk.img + start: + mpp-format-int: '{image.layout[''boot''].start}' + size: + mpp-format-int: '{image.layout[''boot''].size}' + mounts: + - name: boot + type: org.osbuild.ext4 + source: boot + target: / + - name: raw-qemu-image + build: name:build + stages: + - type: org.osbuild.copy + inputs: + tree: + type: org.osbuild.tree + origin: org.osbuild.pipeline + references: + - name:raw-image + options: + paths: + - from: input://tree/disk.img + to: tree:///disk.img + - type: org.osbuild.kernel-cmdline.bls-append + options: + bootpath: mount:/// + kernel_opts: + - console=tty0 + - console=ttyS0,115200n8 + - ignition.platform.id=qemu + devices: + boot: + type: org.osbuild.loopback + options: + filename: disk.img + start: + mpp-format-int: '{image.layout[''boot''].start}' + size: + mpp-format-int: '{image.layout[''boot''].size}' + mounts: + - name: boot + type: org.osbuild.ext4 + source: boot + target: / + - name: metal + build: name:build + stages: + - type: org.osbuild.copy + inputs: + tree: + type: org.osbuild.tree + origin: org.osbuild.pipeline + references: + - name:raw-metal-image + options: + paths: + - from: input://tree/disk.img + to: tree:///metal.raw + - name: qemu build: name:build stages: - type: org.osbuild.qemu @@ -226,10 +305,10 @@ pipelines: type: org.osbuild.files origin: org.osbuild.pipeline references: - name:image: + name:raw-qemu-image: file: disk.img options: - filename: disk.qcow2 + filename: qemu.qcow2 format: type: qcow2 compat: '1.1'