Compare commits

..

71 commits

Author SHA1 Message Date
Paul Whalen
3d9cd16f82 Bump rawhide to Fedora 46 2026-08-12 10:17:54 -04:00
Paul Whalen
e8f17b68c4 Update releng script paths for tooling repo restructure
- nightly.sh: Update fedora_messaging.sh path (scripts_new/ → no prefix)
- nightly.sh: Update build_composeinfo path (scripts/ → builds/compose/)
- twoweek-nightly.sh: Update fedora_messaging.sh path (scripts_new/ → no prefix)
- twoweek-nightly.sh: Update build_composeinfo path (scripts/ → builds/compose/)

Assisted-by: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2026-07-29 10:51:09 -04:00
Paul Whalen
5fe5764dba Update Pagure URLs to Forge for IoT compose
- fedora-iot.conf: Update comps_file, ostree, and ostree_container config_urls
  to forge.fedoraproject.org (fedora-comps, ostree, base-images, fedora-iot-bootc)
- fedora-iot.conf: Update pungi-fedora PR/issue comment links
- nightly.sh: Update releng and fedora-comps clone URLs
- twoweek-nightly.sh: Update releng clone URL

Assisted-by: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2026-07-28 16:01:37 -04:00
4186f8b817 Restore global_release, global_version, global_target
It's not entirely obvious, but these were not in fact tied to the
old livemedia phase as 087fe9f thought; they are used by modern
phases like imagebuilder and kiwi as well. Restore them, with a
less misleading comment.

Fixes: https://github.com/fedora-iot/iot-distro/issues/131
Signed-off-by: Adam Williamson <awilliam@redhat.com>
2026-04-27 23:48:51 -07:00
Paul Whalen
087fe9f286 fix: fedora-kickstarts retired
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2026-02-06 15:13:08 -05:00
Paul Whalen
96a8f98dc4 F-45: Update for branching
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2026-02-06 13:12:22 -05:00
29d8a41ea5 ref: fix path effected by releng repo refactoring
Signed-off-by: Anton Medvedev <amedvede@redhat.com>
2025-10-07 21:35:53 +02:00
Paul Whalen
d23774204c F-44: Update for branching
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2025-08-12 09:28:34 -04:00
Paul Whalen
f590607372 Update F43 to use new pungi imagebuilder configuration option
See: https://fedoraproject.org/wiki/Changes/KojiLocalImageBuilder

Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2025-08-06 16:44:55 -04:00
Paul Whalen
f968bf20e9 Stop running the container sync script, replaced by cloud-image-uploader
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2025-04-29 09:31:03 -04:00
Paul Whalen
9d606b1a54 Fix container names to reflect content in the image
This fixes the container names to reflect the content in the image.
Fedora-IoT-bootc - iot image
Fedora-base-bootc - generic base image

Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2025-04-25 17:04:40 -04:00
Paul Whalen
8be1b6f560 Add s390x and ppc64le to iot variant to produce bootc containers
The generic bootc container was added to the IoT section of the compose,
since then s390x and ppc64le have started to fail. This adds those arches
to the IoT section in variant.xml and removes the old variants.

Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2025-04-24 12:27:25 -04:00
2f94f34e05 Build bootc images in IoT variant, tweak subvariants and names
There's substantial history here, including
https://pagure.io/fedora-infra/ansible/pull-request/2295 and
the discussion in the PR for this commit -
https://pagure.io/fedora-iot/pungi-iot/pull-request/102 . This
is trying to make the metadata for these images accurate and
informative.

With this change, the variant for both images will be "IoT" and
they will both appear in the IoT directory in the tree. The IoT
image's subvariant will also be "IoT". The base image's
subvariant will be "base". The format for both images will be
"ociarchive", as it currently is. From tomorrow, the type for
both images will be "bootable-container". The filename for the
IoT image will start with "Fedora-IoT-bootc", and the filename
for the base image will start with "Fedora-base-bootc". So we
will have these basename - subvariant - type - formats:

* Fedora-IoT-bootc - IoT - bootable-container - ociarchive
* Fedora-base-bootc - base - bootable-container - ociarchive

The base image can easily be moved into the main compose and
maintain the same filename base, subvariant, type and format. It
would have a different variant in that case, but in practice we
do not use the variant for image identification purposes much
anyway.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2025-04-22 13:16:55 -07:00
Paul Whalen
69aa8633db Make Osbuild deliverables failable again due to ongoing network issues in Koji.
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2025-02-06 11:23:44 -05:00
Paul Whalen
2b7d52ea42 Rawhide is now Fedora 43
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2025-02-04 15:51:46 -05:00
Paul Whalen
726ab13a48 F42: revert Temporarily make all deliverables failable
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2025-01-13 11:33:26 -05:00
Paul Whalen
606ff924e1 F42: Temporarily make all deliverables failable
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-11-22 14:32:23 -05:00
Paul Whalen
5457ba1b6b F42: Update iot base image to use base-images mirror and tier-x
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-11-15 13:12:03 -05:00
Paul Whalen
065867da2e Revert F42: Update iot base image to use base-images mirror and tier-x
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-11-05 16:30:22 -05:00
faee0e8c9d sync-bootc-base-containers: 41 is now current
Signed-off-by: Adam Williamson <awilliam@redhat.com>
2024-11-05 07:49:29 -08:00
Paul Whalen
2dcee7e4b1 F42: Update iot base image to use base-images mirror and tier-x
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-11-04 16:36:27 -05:00
c1107d5390
pungi: update treefile to use for rawhide fedora-bootc
As discussed in https://gitlab.com/fedora/bootc/tracker/-/issues/39,
we will be maintaining all Fedora versions in the `main` branch going
forward. The `fedora-bootc.yaml` file upstream is now version-less. To
not break pungi, we need it to use the stub treefile we added that sets
the releasever to rawhide.
2024-10-23 15:31:01 -04:00
Paul Whalen
0f6c882858 Revert "F42: use subvariant with bootc containers"
This reverts commit 71f65004d8.
2024-10-09 10:40:52 -04:00
Paul Whalen
71f65004d8 F42: use subvariant with bootc containers
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-10-08 16:29:07 -04:00
Paul Whalen
950193a148 Revert "F42: update basename for IoT container"
This reverts commit 6ae099cb81.
2024-10-08 14:55:56 -04:00
Paul Whalen
6ae099cb81 F42: update basename for IoT container
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-10-08 14:10:25 -04:00
Paul Whalen
0b466a659d Revert "Build bootc images in IoT variant, tweak IoT image's subvariant"
This reverts commit 9fed822cc1.
2024-10-08 13:44:52 -04:00
9fed822cc1 Build bootc images in IoT variant, tweak IoT image's subvariant
As discussed in
https://pagure.io/fedora-infra/ansible/pull-request/2295 , this
subvariant is more usable and in line with previous practice. It
will make life a bit easier for fedora-image-uploader. This also
tweaks the config to build both ostree container images in the
IoT variant and give them explicit subvariants, instead of
building them in their own variants and relying on the variant
to be inherited as the subvariant definition too. This just
seems a bit cleaner and avoids these variants showing up in the
metadata, which reads a bit oddly.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2024-10-07 19:07:03 -07:00
Paul Whalen
702da4a01d F42: drop tier-0 from the compose
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-10-04 10:38:07 -04:00
Paul Whalen
67a5ddec24 F42: Add iot base bootc image to sync script
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-10-03 13:48:39 -04:00
Paul Whalen
43008ac60c Update variants to include the bootc-base
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-09-25 18:04:06 -04:00
Paul Whalen
d5565f5bfe F42: Add iot base bootc image
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-09-23 15:43:10 -04:00
Paul Whalen
146a5e1e4b F42: Update sync-script for f42
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-08-16 12:53:22 -04:00
Paul Whalen
bff3d8261d Rawhide is now Fedora 42
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-08-12 14:11:08 -04:00
Paul Whalen
a8288fa657 F41: fix loop in sync script
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-07-16 15:31:48 -04:00
Paul Whalen
1de421aca3 F41: Add ppc64le and s390x to bootc images
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-07-15 13:13:55 -04:00
Paul Whalen
e2585c1da4 Update bootc config names to match upstream
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-06-10 15:34:55 -04:00
Paul Whalen
dd421a451c Change simplified-provisioner to new subvariant
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-06-06 15:34:13 -04:00
Paul Whalen
17ebca480c F41: Add manifest_type to simplified-provisioner
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-06-04 15:22:58 -04:00
Paul Whalen
396bf8ee80 f41: add bootc-tier0 to tree_variants
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-05-21 09:46:46 -04:00
Paul Whalen
105c62d27b f41: fix missing closure tag
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-05-14 12:28:01 -04:00
Paul Whalen
1e4adbb93e f41: add bootc-tier0 to variants
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-05-13 12:41:35 -04:00
Paul Whalen
ec0b009a92 f41: add bootc tier0 target
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-05-10 13:50:31 -04:00
Paul Whalen
ebf28f3e6c f41: use fedora-bootc-rawhide.yaml
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-05-10 13:00:47 -04:00
Peter Robinson
bcd9757545 Improve container version detection process
Some minor improvements around container version and release
detection.

Signed-off-by: Peter Robinson <pbrobinson@fedoraproject.org>
2024-05-08 12:33:40 +01:00
Peter Robinson
4735208cee Add script to push containers to registries
Add script to push containers to registries, run the script
at the end of the compose process to push the container
manifests to the fedora container registries.

Signed-off-by: Peter Robinson <pbrobinson@fedoraproject.org>
2024-05-03 16:29:19 +01:00
Paul Whalen
800f3d993e 41: drop osbuild bootc container
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-05-02 17:39:40 -04:00
Peter Robinson
873ab7ef35 Move to base-images mirror repo
Signed-off-by: Peter Robinson <pbrobinson@fedoraproject.org>
2024-04-27 16:46:18 +01:00
Paul Whalen
0dde79bc0f F41: Use pagure bootc repo
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-04-21 17:34:21 -04:00
Paul Whalen
f7d69e8fcf F41: use upstream bootc repo
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-04-19 10:17:34 -04:00
Paul Whalen
5bdfe5d0e4 F41: add repo to bootc
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-04-17 10:41:31 -04:00
Paul Whalen
f046e86b9d F41: add bootc variant
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-04-16 09:22:53 -04:00
Paul Whalen
42a869f057 F41: Fix name and variant for base container
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-04-15 13:49:21 -04:00
Paul Whalen
97376e7155 F41: Add base bootc container
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-04-11 13:13:10 -04:00
Paul Whalen
9879308883 F41: Change simplified-provisioning to -provisioner
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-03-07 11:05:07 -05:00
Paul Whalen
6fe1714a76 F41: Change bootable-container name to -bootc
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-03-06 09:39:26 -05:00
Paul Whalen
2be18ba45d Simplified Provisioning: update customizations
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-03-05 16:23:36 -05:00
Paul Whalen
523b1f2939 F41: Add simplified provisioning
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-02-17 10:18:19 -05:00
Paul Whalen
ecca26e80a Fix names for osbuild deliverables
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-02-15 11:03:35 -05:00
Paul Whalen
db00b44a9d F-41: Update for branching
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-02-13 15:06:38 -05:00
Paul Whalen
b9b03da2d5 Add new image-type for iot-bootable-container
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-02-07 10:30:59 -05:00
Paul Whalen
9cd23e9ae7 Move treefile to yaml
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-01-31 11:43:12 -05:00
Paul Whalen
2448ed69c8 Fix release duplication in osbuild file names
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2024-01-26 12:54:34 -05:00
Paul Whalen
64d4455481 Fix syntax error in ostree section
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2023-11-21 12:02:22 -05:00
Paul Whalen
b6e1d4f5a0 Update deprecated arch based mapping for ostree
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2023-11-21 10:36:56 -05:00
Paul Whalen
5acccf3ff4 Add selinux-policy-targeted to runroot_packages
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2023-11-20 15:28:08 -05:00
Paul Whalen
8ec296f9f9 Enable unified-core mode
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2023-11-16 12:15:22 -05:00
7f32b5f35b Set correct productmd image type for osbuild installer image
In the productmd metadata, these osbuild-built installer images
have their 'type' as "dvd". This is not correct: the "dvd" type
is meant to be a traditional RPM-based installer image, like the
old Everything DVD or the current Server DVD. The correct "type"
for an ostree installer image is "dvd-ostree". (There is also,
now, "dvd-ostree-osbuild", added in
https://github.com/release-engineering/productmd/pull/170 ,
which is intended for the case where the osbuild image is an
experimental one, and there is still an image built with the
older system that is the 'official' one.)

This 'manifest_type' thing was added after the discussion in
https://pagure.io/pungi-fedora/pull-request/1190 , to let us
specify the productmd type for osbuild-built images correctly.
In this case we don't want to use "dvd-ostree-osbuild" because
from F40 onwards it seems we want the osbuild-built image to be
the official/main one, so it should have the "official" type.

The practical consequence of this at present is the F40 IoT
composes aren't getting openQA testing, because openQA relies
on this property to identify the image, and it's expecting to
see "dvd-ostree".

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2023-11-03 10:09:14 -07:00
Paul Whalen
0d93b139a6 Remove legacy installer section
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2023-11-01 11:42:58 -04:00
Paul Whalen
f7b9bd392a Skip ostree_installer stage
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2023-10-11 11:47:01 -04:00
Paul Whalen
ded903ff38 F40: Update for branching
Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
2023-08-14 13:26:22 -04:00
6 changed files with 300 additions and 133 deletions

View file

@ -1,26 +1,25 @@
# PRODUCT INFO
release_name = 'Fedora-IoT'
release_short = 'Fedora-IoT'
release_version = '39'
release_version = '46'
# Let's not build install media during this run. For the image builds
# and OSTree installer we'll use inputs from other f39 runs.
# and OSTree installer we'll use inputs from other f45 runs.
skip_phases = ["buildinstall", "createrepo", "extra_files"]
ostree_installer_overwrite = True
# GENERAL SETTINGS
comps_file = {
'scm': 'git',
'repo': 'https://pagure.io/fedora-comps.git',
'repo': 'https://forge.fedoraproject.org/releng/fedora-comps.git',
'branch': 'main',
'file': 'comps-f39.xml',
'command': 'make comps-f39.xml'
'file': 'comps-f46.xml',
'command': 'make comps-f46.xml'
}
variants_file='variants-fedora.xml'
sigkeys = ['18B8e74c']
sigkeys = ['91211FCE']
# limit tree architectures
# if undefined, all architectures from variants.xml will be included
tree_arches = ['aarch64', 'x86_64']
tree_arches = ['aarch64', 'x86_64', "ppc64le", "s390x"]
# limit tree variants
# if undefined, all variants from variants.xml will be included
tree_variants = ['IoT']
@ -28,7 +27,7 @@ hashed_directories = True
# RUNROOT settings
runroot_channel = 'compose'
runroot_tag = 'f39-build'
runroot_tag = 'f46-build'
# PKGSET
pkgset_source = 'koji' # koji, repos
@ -38,7 +37,7 @@ pkgset_source = 'koji' # koji, repos
# pkgset_repos = {}
# PKGSET - KOJI
pkgset_koji_tag = 'f39-iot'
pkgset_koji_tag = 'f46-iot'
pkgset_koji_inherit = False
filter_system_release_packages = False
@ -167,7 +166,7 @@ image_volid_layered_product_formats = []
# allow Pungi to tell it what volume ID to use. Note:
# https://fedoraproject.org/wiki/User:Adamwill/Draft_fedora_image_naming_policy
# '-Workstation-' is a temporary workaround. See
# https://pagure.io/pungi-fedora/pull-request/525
# https://forge.fedoraproject.org/releng/pungi-fedora/pulls/525
volume_id_substitutions = {
'Beta': 'B',
'Rawhide': 'rawh',
@ -184,7 +183,7 @@ volume_id_substitutions = {
'IoT': 'iot',
'Jam_KDE': 'Jam',
'MATE_Compiz': 'MATE',
# Note https://pagure.io/pungi-fedora/issue/533
# Note https://forge.fedoraproject.org/releng/pungi-fedora/issues/533
'Python-Classroom': 'Clss',
'Python_Classroom': 'Clss',
'Robotics': 'Robo',
@ -203,127 +202,105 @@ translate_paths = [
('/mnt/koji/compose/', 'https://kojipkgs.fedoraproject.org/compose/'),
]
# These will be inherited by live_media, live_images and image_build
global_ksurl = 'git+https://pagure.io/fedora-kickstarts.git?#origin/f39'
# These may be inherited by various phases for creating Koji tasks
global_release = '!RELEASE_FROM_LABEL_DATE_TYPE_RESPIN'
global_version = '39'
# live_images ignores this in favor of live_target
global_target = 'f39'
global_version = '46'
global_target = 'f46'
osbuild = {
imagebuilder_target = 'f46-image-builder'
imagebuilder = {
"^IoT$": [
{
"name": "%s" % release_name,
"distro": "fedora-39",
"image_types": ["iot-raw-image"],
"target": "f%s-candidate" % release_version,
"name": "%s-raw" % release_name,
"types": ["iot-raw-xz"],
"arches": ["x86_64", "aarch64"],
"repo": ["https://kojipkgs.fedoraproject.org/compose/39/Fedora-39-20231031.1/compose/Everything/$arch/os/",
"https://kojipkgs.fedoraproject.org/compose/updates/f39-updates/compose/Everything/$arch/os/"],
"ostree_url": "https://kojipkgs.fedoraproject.org/compose/iot/repo/",
"ostree_ref": "fedora/stable/$arch/iot",
"repos": ["https://kojipkgs.fedoraproject.org/compose/rawhide/latest-Fedora-Rawhide/compose/Everything/$arch/os/"],
"ostree": {
"url": "https://kojipkgs.fedoraproject.org/compose/iot/repo/",
"ref": "fedora/rawhide/$arch/iot",
},
"subvariant": "IoT",
"failable": ["*"],
},
{
"name": "%s-ostree" % release_name,
"distro": "fedora-39",
"image_types": ["iot-installer"],
"target": "f%s-candidate" % release_version,
"types": ["iot-installer"],
"arches": ["x86_64", "aarch64"],
"repo": ["https://kojipkgs.fedoraproject.org/compose/39/Fedora-39-20231031.1/compose/Everything/$arch/os/",
"https://kojipkgs.fedoraproject.org/compose/updates/f39-updates/compose/Everything/$arch/os/"],
"ostree_url": "https://kojipkgs.fedoraproject.org/compose/iot/repo/",
"ostree_ref": "fedora/stable/$arch/iot",
"repos": ["https://kojipkgs.fedoraproject.org/compose/rawhide/latest-Fedora-Rawhide/compose/Everything/$arch/os/"],
"ostree": {
"url": "https://kojipkgs.fedoraproject.org/compose/iot/repo/",
"ref": "fedora/rawhide/$arch/iot",
},
"subvariant": "IoT",
"manifest_type": "dvd-ostree-osbuild",
"manifest_type": "dvd-ostree",
"failable": ["*"],
},
{
"name": "%s-provisioner" % release_name,
"types": ["iot-simplified-installer"],
"arches": ["x86_64", "aarch64"],
"repos": ["https://kojipkgs.fedoraproject.org/compose/rawhide/latest-Fedora-Rawhide/compose/Everything/$arch/os/"],
"ostree": {
"url": "https://kojipkgs.fedoraproject.org/compose/iot/repo/",
"ref": "fedora/rawhide/$arch/iot",
},
"blueprint": {
"customizations": {
"installation_device": "/dev/vda1",
},
},
"subvariant": "IoT_Simplified_Provisioner",
"failable": ["*"],
"manifest_type": "dvd-ostree",
},
],
}
ostree = [
("^IoT$", {
"aarch64": {
ostree = {
"^IoT$": {
"version": "!OSTREE_VERSION_FROM_LABEL_DATE_TYPE_RESPIN",
"force_new_commit": True,
"treefile": "fedora-iot.json",
"config_url": "https://pagure.io/fedora-iot/ostree.git",
"config_branch": "f39",
"unified_core": True,
"treefile": "fedora-iot.yaml",
"config_url": "https://forge.fedoraproject.org/iot/ostree.git",
"config_branch": "main",
"repo": [
"IoT",
"https://kojipkgs.fedoraproject.org/compose/39/Fedora-39-20231031.1/compose/Everything/$basearch/os/",
"https://kojipkgs.fedoraproject.org/compose/updates/f39-updates/compose/Everything/$basearch/os/"
"https://kojipkgs.fedoraproject.org/compose/rawhide/latest-Fedora-Rawhide/compose/Everything/$basearch/os/"
]
"tag_ref": False,
"ostree_repo": "/mnt/koji/compose/iot/repo/",
"ostree_ref": "fedora/stable/${basearch}/iot",
"update_summary": True,
},
"x86_64": {
"version": "!OSTREE_VERSION_FROM_LABEL_DATE_TYPE_RESPIN",
"force_new_commit": True,
"treefile": "fedora-iot.json",
"config_url": "https://pagure.io/fedora-iot/ostree.git",
"config_branch": "f39",
"repo": [
"IoT",
"https://kojipkgs.fedoraproject.org/compose/39/Fedora-39-20231031.1/compose/Everything/$basearch/os/",
"https://kojipkgs.fedoraproject.org/compose/updates/f39-updates/compose/Everything/$basearch/os/"
]
"tag_ref": False,
"ostree_repo": "/mnt/koji/compose/iot/repo/",
"ostree_ref": "fedora/stable/${basearch}/iot",
"ostree_ref": "fedora/rawhide/${basearch}/iot",
"runroot_packages": ["selinux-policy-targeted"],
"arches": ["x86_64", "aarch64"],
"update_summary": True,
}
})
]
}
ostree_installer = [
("^IoT$", {
"aarch64": {
"repo": [
"IoT",
"https://kojipkgs.fedoraproject.org/compose/39/Fedora-39-20231031.1/compose/Everything/$arch/os/",
"https://kojipkgs.fedoraproject.org/compose/updates/f39-updates/compose/Everything/$arch/os/"
],
"release": None,
"rootfs_size": "4",
"add_template": ["ostree-based-installer/lorax-configure-repo.tmpl",
"ostree-based-installer/lorax-embed-repo.tmpl"],
"add_template_var": [
"ostree_install_repo=https://kojipkgs.fedoraproject.org/compose/iot/repo/",
"ostree_update_repo=https://ostree.fedoraproject.org/iot",
"ostree_osname=fedora-iot",
"ostree_oskey=fedora-39-primary",
"ostree_contenturl=mirrorlist=https://ostree.fedoraproject.org/iot/mirrorlist",
"ostree_install_ref=fedora/stable/aarch64/iot",
"ostree_update_ref=fedora/stable/aarch64/iot",
],
'template_repo': 'https://pagure.io/fedora-lorax-templates.git',
'template_branch': 'f39',
ostree_container = {
"^IoT$": [
{
"version": "!OSTREE_VERSION_FROM_LABEL_DATE_TYPE_RESPIN",
"config_url": "https://forge.fedoraproject.org/iot/base-images.git",
"config_branch": "main",
"treefile": "fedora-rawhide.yaml",
"repo": ["https://kojipkgs.fedoraproject.org/compose/rawhide/latest-Fedora-Rawhide/compose/Everything/$basearch/os/"],
"arches": ["x86_64", "aarch64", "ppc64le", "s390x"],
"failable": ['*'],
"subvariant": "base",
"name": "Fedora-base-bootc",
},
"x86_64": {
"repo": [
"IoT",
"https://kojipkgs.fedoraproject.org/compose/39/Fedora-39-20231031.1/compose/Everything/$arch/os/",
"https://kojipkgs.fedoraproject.org/compose/updates/f39-updates/compose/Everything/$arch/os/"
],
"release": None,
"rootfs_size": "4",
"add_template": ["ostree-based-installer/lorax-configure-repo.tmpl",
"ostree-based-installer/lorax-embed-repo.tmpl"],
"add_template_var": [
"ostree_install_repo=https://kojipkgs.fedoraproject.org/compose/iot/repo/",
"ostree_update_repo=https://ostree.fedoraproject.org/iot",
"ostree_osname=fedora-iot",
"ostree_oskey=fedora-39-primary",
"ostree_contenturl=mirrorlist=https://ostree.fedoraproject.org/iot/mirrorlist",
"ostree_install_ref=fedora/stable/x86_64/iot",
"ostree_update_ref=fedora/stable/x86_64/iot",
],
'template_repo': 'https://pagure.io/fedora-lorax-templates.git',
'template_branch': 'f39',
}
})
]
{
"version": "!OSTREE_VERSION_FROM_LABEL_DATE_TYPE_RESPIN",
"config_url": "https://forge.fedoraproject.org/iot/fedora-iot-bootc.git",
"config_branch": "main",
"treefile": "fedora-iot-rawhide.yaml",
"repo": ["https://kojipkgs.fedoraproject.org/compose/rawhide/latest-Fedora-Rawhide/compose/Everything/$basearch/os/"],
"arches": ["x86_64", "aarch64"],
"failable": ['*'],
"name": "Fedora-IoT-bootc",
},
]
}
koji_profile = 'compose_koji'

View file

@ -9,9 +9,9 @@ SKIP_PHASES="--skip-phase=productimg"
DEST=$(pwd)
DATE=$(date "+%Y%m%d")
SHORT="Fedora-IoT"
RELEASE="39"
RELEASE_TITLE="39"
COMPSFILE="comps-f39.xml"
RELEASE="46"
RELEASE_TITLE="46"
COMPSFILE="comps-f46.xml"
TMPDIR=`mktemp -d /tmp/$RELEASE.$DATE.XXXX`
TOMAIL="iot@lists.fedoraproject.org"
FROM="Fedora IoT Report <rawhide@fedoraproject.org>"
@ -30,20 +30,20 @@ if [ -d releng ]; then
git pull --rebase
popd
else
git clone https://pagure.io/releng.git
git clone https://forge.fedoraproject.org/releng/tooling.git releng
fi
# Set up our fedmsg function, using the releng repo definition
#FEDMSG_MODNAME="compose"
#FEDMSG_CERTPREFIX="releng"
. ./releng/scripts/fedmsg-functions.sh
. ./releng/infrastructure/messaging/fedora_messaging.sh
# Announce that we are starting, even though we don't know the compose_id yet..
#fedmsg_json_start=$(printf '{"log": "start", "branch": "%s", "arch": "%s", "short": "%s"}' "$RELEASE" "$ARCH" "$SHORT")
#send_fedmsg "${fedmsg_json_start}" ${RELEASE} start
#pushd $TMPDIR
#git clone https://pagure.io/fedora-comps.git && {
#git clone https://forge.fedoraproject.org/releng/fedora-comps.git && {
# pushd fedora-comps
# make "${COMPSFILE}"
# cp "${COMPSFILE}" $DEST/
@ -67,7 +67,7 @@ fi
NEWCOMPOSE_ID=$(cat $TARGET_DIR/latest-$SHORT-$RELEASE_TITLE/COMPOSE_ID)
SHORTCOMPOSE_ID=$(echo $NEWCOMPOSE_ID|sed -e 's|Fedora-.*-||g')
./releng/scripts/build_composeinfo "$TARGET_DIR/$NEWCOMPOSE_ID/" --name "$NEWCOMPOSE_ID"
./releng/builds/compose/build_composeinfo.py "$TARGET_DIR/$NEWCOMPOSE_ID/" --name "$NEWCOMPOSE_ID"
# Set this to use later for a few items include depcheck
DESTDIR=$TARGET_DIR/$NEWCOMPOSE_ID

193
sync-bootc-base-containers.sh Executable file
View file

@ -0,0 +1,193 @@
#!/bin/bash
set -x
#
# Sync latest docker image
#
# Docs in the f_help function
f_ctrl_c() {
printf "\n*** Exiting ***\n"
exit $?
}
# trap int (ctrl-c)
trap f_ctrl_c SIGINT
f_help() {
cat <<EOF
NAME
${0}
SYNOPSIS
${0} FEDORA_RELEASE IMAGE_URL [-s]
OPTIONS
-s - Sync the stage registries instead of production
DESCRIPTION
This is a stop-gap solution to identify parent inheritance of container
images until the container release automation[0] is in place and we have
fully automated rebuilds[1] in OSBS.
This information should be used such that the images can be rebuilt and
released in the appropriate order using flr-koji.
[0] - https://pagure.io/releng-automation
[1] - https://osbs.readthedocs.io/en/latest/multiarch.html#chain-rebuilds
EXAMPLE
${0} 26
EOF
}
arch_to_goarch() {
local a=$1; shift
# See https://github.com/coreos/stream-metadata-go/blob/c5fe1b98ac1b1e6ab62a606b7580dc1f30703f83/arch/arch.go#L14
case "$a" in
aarch64) echo arm64 ;;
x86_64) echo amd64 ;;
ppc64le) echo ppc64le ;;
s390x) echo s390x ;;
*) echo $a ;;
esac
}
# This is the release of Fedora that is currently stable, it will define if we
# need to move the fedora:latest tag
current_stable="44"
# Define what is rawhide so we know to push that tag
current_rawhide="46"
# Sanity checking
if ! [[ "${1}" =~ ^-?[0-9]+$ ]];
then
printf "ERROR: FEDORA_RELEASE missing or invalid\n"
f_help
exit 1
fi
# Determine if we want stage or not (yes, I know this should be getops but I
# don't want this script to survive so we're doing quick and dirty.
#
# If ${stage} is a non-zero length string, then perform staging
stage=""
if [[ "${3}" == "-s" ]]; then
printf "INFO: PERFORMING STAGE SYNC\n"
stage="true"
fi
BASENAMES=("Fedora-IoT-bootc" "Fedora-IoT-bootc-base")
format="oci-archive"
vers=${1}
compose=${2}
compdate=`echo ${compose} | cut -c 4-`
# Obtain the latest build
#
# Need fXX-updates-canddiate to get actual latest nightly
# Can't currently query koji for runroot tasks as they're not tagged
#
# base_build_nvr=$(koji -q latest-build --type=image f${1}-updates-candidate ${basename} | awk '{print $1}')
if [[ ${1} -eq "$current_stable" ]]; then
tagname="latest"
fi
if [[ ${1} -eq "$current_rawhide" ]]; then
tagname="rawhide"
fi
if [[ -z "$stage" ]]; then
registries=("registry.fedoraproject.org" "candidate-registry.fedoraproject.org" "quay.io/fedora")
else
registries=("registry.stg.fedoraproject.org" "candidate-registry.stg.fedoraproject.org")
fi
# Copy a local image to all necessary remote registries
copy_image() {
local src=$1; shift
local name=$1; shift
for registry in ${registries[@]}; do
skopeo copy $src docker://${registry}/${name}
done
}
# From already uploaded architecture-specific images, generate a manifest listed image
# on all registries
generate_manifest_list() {
local name=$1; shift
local version=$1; shift
for registry in "${registries[@]}"
do
printf "Push manifest to ${registry}\n"
if [ -n "$tagname" ]
then
printf "tag is set: ${tagname}\n"
buildah rmi "${registry}/${name}:${tagname}" || true
buildah manifest create "${registry}/${name}:${tagname}"
for arch in "${ARCHES[@]}"; do
buildah manifest add --arch=$(arch_to_goarch ${arch}) "${registry}/${name}:${tagname}" "docker://${registry}/${name}:${version}-${arch}"
done
buildah manifest push "${registry}/${name}:${tagname}" "docker://${registry}/${name}:${tagname}" --all
fi
buildah rmi "${registry}/${name}:${version}" || true
buildah manifest create "${registry}/${name}:${version}"
for arch in "${ARCHES[@]}"; do
buildah manifest add --arch=$(arch_to_goarch ${arch}) "${registry}/${name}:${version}" "docker://${registry}/${name}:${version}-${arch}"
done
buildah manifest push "${registry}/${name}:${version}" "docker://${registry}/${name}:${version}" --all
done
}
find_and_copy_images() {
local nvr=$1
local registry_name=$2
local release=$3
local name
if [[ ${registry_name} = "fedora-bootc" ]] || [[ ${registry_name} = "fedora-iot" ]]; then
name=${basename}
else
printf "Unexpected image type! If we added a new one, it needs mapping here"
exit 1
fi
# Check that all architectures completed in the build else exit
for arch in "${ARCHES[@]}"; do
if [ ! -f "/mnt/koji/compose/iot/Fedora-IoT-${release}-${compdate}/compose/${compose_type}/${arch}/images/${basename}-${release}.${compdate}.ociarchive" ]; then
echo "One of the expected images are missing, exiting."
exit 1
fi
done
work_dir=$(mktemp -d)
pushd ${work_dir} &> /dev/null
# Import the image
for arch in "${ARCHES[@]}"; do
local filename
filename="/mnt/koji/compose/iot/Fedora-IoT-${release}-${compdate}/compose/${compose_type}/${arch}/images/${basename}-${release}.${compdate}.ociarchive"
copy_image ${format}:${filename} ${registry_name}:${release}-${arch}
done
popd &> /dev/null
generate_manifest_list ${registry_name} ${release}
printf "Removing temporary directory\n"
rm -rf $work_dir
}
#
# Version should not be higher than rawhide
# Either there is a mistake or script is out of date
#
if [[ ${1} -gt "$current_rawhide" ]]; then
printf "ERROR: VERSION HIGHER THAN RAWHIDE"
exit 1
fi
printf "Syncing compose contailers: ${vers} : ${compose}\n"
# For fedora-bootc and fedora-iot
for basename in "${BASENAMES[@]}"; do
if [[ ${basename} = "Fedora-IoT-bootc" ]]; then
registry_name="fedora-bootc"
compose_type="bootc"
ARCHES=("aarch64" "x86_64" "ppc64le" "s390x")
elif [[ ${basename} = "Fedora-IoT-bootc-base" ]]; then
registry_name="fedora-iot"
compose_type="bootc-base"
ARCHES=("aarch64" "x86_64")
fi
base_build_nvr=${basename}-${vers}-${compdate}
if [[ -n ${base_build_nvr} ]]; then
find_and_copy_images ${base_build_nvr} ${registry_name} ${vers} ${compose}
fi
done

View file

@ -12,14 +12,14 @@ DEST=$(pwd)
DATE=$(date "+%Y%m%d")
# the Pungi 'shortname', which we will include in fedmsgs for disambiguation
SHORT="Fedora-IoT"
RELEASE="39"
RELEASE_TITLE="39"
COMPSFILE="comps-f39.xml"
RELEASE="46"
RELEASE_TITLE="46"
COMPSFILE="comps-f46.xml"
TMPDIR=`mktemp -d /tmp/$RELEASE.$DATE.XXXX`
TOMAIL="iot@lists.fedoraproject.org"
FROM="Fedora IoT Report <branched@fedoraproject.org>"
RSYNCPREFIX="sudo -u ftpsync"
RSYNCTARGET="/pub/alt/iot/39/"
RSYNCTARGET="/pub/alt/iot/46/"
OLDCOMPOSE_ID=$(cat $TARGET_DIR/latest-$SHORT-$RELEASE_TITLE/COMPOSE_ID)
NEWCOMPOSE_ID=$(cat $TARGET_DIR/latest-$SHORT-$RELEASE_TITLE/COMPOSE_ID)

View file

@ -11,14 +11,14 @@ DEST=$(pwd)
DATE=$(date "+%Y%m%d")
# the Pungi 'shortname', which we will include in fedmsgs for disambiguation
SHORT="Fedora-IoT"
RELEASE="39"
RELEASE_TITLE="39"
COMPSFILE="comps-f39.xml"
RELEASE="46"
RELEASE_TITLE="46"
COMPSFILE="comps-f46.xml"
TMPDIR=`mktemp -d /tmp/$RELEASE.$DATE.XXXX`
TOMAIL="iot@lists.fedoraproject.org"
FROM="Fedora IoT Report <rawhide@fedoraproject.org>"
RSYNCPREFIX="sudo -u ftpsync"
RSYNCTARGET="/pub/alt/iot/branched/"
RSYNCTARGET="/pub/alt/iot/rawhide/"
OLDCOMPOSE_ID=$(cat $TARGET_DIR/latest-$SHORT-$RELEASE_TITLE/COMPOSE_ID)
# assume a releng dir is a git checkout of the releng repo
@ -28,13 +28,13 @@ if [ -d releng ]; then
git pull --rebase
popd
else
git clone https://pagure.io/releng.git
git clone https://forge.fedoraproject.org/releng/tooling.git releng
fi
# Set up our fedmsg function, using the releng repo definition
fedmsg_json_start=$(printf '{"log": "start", "branch": "%s", "arch": "%s", "short": "%s"}' "$RELEASE" "$ARCH" "$SHORT")
FEDMSG_MODNAME="compose"
FEDMSG_CERTPREFIX="releng"
. ./releng/scripts/fedmsg-functions.sh
. ./releng/infrastructure/messaging/fedora_messaging.sh
# Announce that we are starting...
send_fedmsg "${fedmsg_json_start}" ${RELEASE} start
CMD="pungi-koji --notification-script=/usr/bin/pungi-fedmsg-notification --notification-script=pungi-wait-for-signed-ostree-handler --config=$CONFIG --old-composes=$TARGET_DIR $OLD_COMPOSES_DIR $NIGHTLY --label=$LABEL"
@ -49,13 +49,10 @@ if [ "$?" != "0" ]; then
fi
ostree summary --update --repo=/mnt/koji/compose/iot/repo/
# Exit now we're post release
exit 1
NEWCOMPOSE_ID=$(cat $TARGET_DIR/latest-$SHORT-$RELEASE_TITLE/COMPOSE_ID)
SHORTCOMPOSE_ID=$(echo $NEWCOMPOSE_ID|sed -e 's|Fedora-.*-||g')
./releng/scripts/build_composeinfo "$TARGET_DIR/$NEWCOMPOSE_ID/" --name "$NEWCOMPOSE_ID"
./releng/builds/compose/build_composeinfo.py "$TARGET_DIR/$NEWCOMPOSE_ID/" --name "$NEWCOMPOSE_ID"
DESTDIR=$TARGET_DIR/$NEWCOMPOSE_ID
# Public URL the synced compose will wind up at, we put it in fedmsgs
@ -70,10 +67,8 @@ send_fedmsg "${fedmsg_json_start}" ${RELEASE} rsync.start
for dir in IoT metadata ;
do
$RSYNCPREFIX rsync -avhH --delete-after $DESTDIR/compose/$dir/ "$RSYNCTARGET/$dir/" ;
$RSYNCPREFIX ./releng/scripts/build_composeinfo "$RSYNCTARGET/" --name $NEWCOMPOSE_ID
$RSYNCPREFIX ./releng/builds/compose/build_composeinfo.py "$RSYNCTARGET/" --name $NEWCOMPOSE_ID
done
# Tell interested persons that the rsync is done.
send_fedmsg "${fedmsg_json_done}" ${RELEASE} rsync.complete
# Tell everyone by fedmsg about the compose
send_fedmsg "${fedmsg_json_done}" ${RELEASE} complete
SUBJECT='Fedora '$RELEASE' compose report: '$SHORTCOMPOSE_ID' changes'

View file

@ -4,7 +4,9 @@
<variant id="IoT" name="IoT" type="variant" is_empty="true">
<arches>
<arch>aarch64</arch>
<arch>x86_64</arch>
<arch>x86_64</arch>
<arch>ppc64le</arch>
<arch>s390x</arch>
</arches>
</variant>
</variants>