Read-only pull mirror of github.com/coreos/fedora-coreos-config. Aurora's build fetches coreos-sulogin-force-generator from here.
Find a file
Nikita Dubrovskii 4ae82d44ac tests/upgrade: reset on transient zincati staging errors
If zincati fails to stage a deployment due to a transient network error
(e.g. HTTP/2 framing layer failure or partial file transfer), add a
check to detect and reset, similar to existing stall recovery logic.

Example failure and recovery:
  [   67.720822] zincati[776]: [ERROR zincati::update_agent::actor] failed to stage deployment: rpm-ostree deploy failed:
  [   67.723747] zincati[776]:     error: While fetching https://ostree.fedoraproject.org/objects/fc/...: [16] Error in the HTTP2 framing layer
  [   73.825777] kola-runext-test.sh[17222]:      Status: "trying to stage 36.20220505.3.2 (1 failed deployment attempt)"
  [   73.967010] kola-runext-test.sh[2423]: zincati failed to stage deployment (transient error?); restarting zincati
  [   73.975134] kola-runext-test.sh[2423]: + need_reset=true
  [   73.978838] kola-runext-test.sh[2423]: + systemctl stop zincati
  [   74.019582] kola-runext-test.sh[2423]: + rpm-ostree cancel
  [   74.833639] kola-runext-test.sh[2423]: + systemctl stop rpm-ostreed
  [   74.890051] kola-runext-test.sh[2423]: + systemctl start zincati
2026-10-28 15:53:05 +01:00
.gemini Sync repo templates ⚙ 2026-01-20 11:41:18 -05:00
.github/workflows workflows/add-override: include reason URL in PR description if one was given 2026-10-27 09:50:59 +00:00
.tekton lockfiles: bump to latest 2026-10-23 05:22:00 +00:00
ci overrides: add bootc to trivial fast tracks 2026-05-11 11:27:49 +02:00
live live: update readme with more accurate comment 2024-12-13 17:54:37 -05:00
manifests manifest/fedora: manually apply dracut patch 2026-10-06 14:54:25 +00:00
overlay.d Fix OCPBUGS-132171: Race condition with coreos-rescue-misplaced-network 2026-10-20 10:58:29 +02:00
tests tests/upgrade: reset on transient zincati staging errors 2026-10-28 15:53:05 +01:00
.cci.jenkinsfile .cci.jenkinsfile: bump resource request 2026-06-08 12:02:19 -04:00
.containerignore build-rootfs: inject disk partition layouts for image-builder 2026-06-04 19:05:25 +02:00
.gitleaks.toml tests/kola: add test for custom SSH host key with mode 640 2023-03-09 15:59:46 -05:00
.gitmodules drop fedora-bootc submodule 2025-12-12 10:13:55 -05:00
build-args.conf lockfiles: bump to latest 2026-10-23 05:22:00 +00:00
build-rootfs build-rootfs: support stream-specific lockfiles directory 2026-09-29 15:31:00 +02:00
buildroot-prep buildroot-prep: fast-track rpm-ostree-2026.3-2.fc45 2026-09-24 10:11:31 -04:00
Containerfile Containerfile: add EC mandatory labels 2026-10-08 17:30:50 +02:00
COPYING Initial commit 2018-08-20 20:18:53 -04:00
fedora-archive.repo tree: move repo files to use GPG keys in /etc/pki/rpm-gpg 2025-08-06 22:51:19 -04:00
fedora-candidate-compose.repo Switch our gpg key path locations to /usr/ 2026-08-24 17:11:29 -04:00
fedora-coreos-continuous.repo buildroot-prep: various enhancements 2025-08-28 17:35:49 -04:00
fedora-coreos-pool.repo fedora-coreos-pool.repo: make repo name consistent 2025-08-27 19:11:44 -04:00
fedora-next.repo Switch our gpg key path locations to /usr/ 2026-08-24 17:11:29 -04:00
fedora-rawhide.repo Switch our gpg key path locations to /usr/ 2026-08-24 17:11:29 -04:00
fedora-riscv-koji.repo manifest: add and use fedora-riscv-koji repo 2025-08-06 10:43:34 -04:00
fedora-riscv-staging.repo fedora-riscv.repo: update to point to Fedora's riscv koji 2025-08-06 10:43:34 -04:00
fedora-riscv.repo fedora-riscv.repo: update to point to Fedora's riscv koji 2025-08-06 10:43:34 -04:00
fedora.repo Switch our gpg key path locations to /usr/ 2026-08-24 17:11:29 -04:00
image-base.yaml drop image-default.yaml; migrate settings to image-base.yaml 2026-01-21 12:37:40 -05:00
image.yaml Move to Fedora Linux 39 2023-11-07 22:43:00 -05:00
kola-denylist.yaml Revert "overrides: denylist ext.config.fwupd.fwupd-refresh-units" 2026-10-22 02:22:04 -06:00
LICENSE Initial commit 2018-08-20 20:18:53 -04:00
manifest-lock.aarch64.json lockfiles: bump to latest 2026-10-23 05:22:00 +00:00
manifest-lock.overrides.yaml lockfiles: drop graduated overrides 🎓 2026-10-27 09:09:42 +01:00
manifest-lock.ppc64le.json lockfiles: bump to latest 2026-10-23 05:22:00 +00:00
manifest-lock.s390x.json lockfiles: bump to latest 2026-10-23 05:22:00 +00:00
manifest-lock.x86_64.json lockfiles: bump to latest 2026-10-23 05:22:00 +00:00
manifest.yaml manifest.yaml: drop setting build_with_buildah 2026-06-24 16:34:57 -04:00
platforms.yaml platforms/hetzner: Console configuration for aarch64 systems 2026-04-28 09:44:50 +02:00
README.md kola: Update kola tests to use new YAML format for kola options 2022-12-17 02:31:58 +05:30
renovate.json konflux/renovate: disable lockfile maintenance 2025-09-30 09:28:49 +02:00
versionary versionary: Add Nvidia stream 2026-10-20 09:43:21 -03:00

Fedora CoreOS Config

next-devel status

Base manifest configuration for Fedora CoreOS.

Use https://github.com/coreos/coreos-assembler to build it.

Discussions in https://discussion.fedoraproject.org/c/server/coreos. Bug tracking and feature requests at https://github.com/coreos/fedora-coreos-tracker.

About this repo

There is one branch for each stream. The default branch is testing-devel, on which all development happens. See the design and tooling docs for more information about streams.

All file changes in testing-devel are propagated to other branches (to next-devel, branched, and rawhide through config-bot, and to testing and eventually stable through usual promotion), with the following exceptions:

  • manifest.yaml: contains the stream's name, yum repos used during composes, and the releasever.
  • lockfiles (manifest-lock.* files): on testing-devel and next-devel, lockfiles are pushed by the bump-lockfile job. Production streams receive them as part of usual promotion. Overrides (manifest-lock.overrides.*) are managed independently with the help of some GitHub Actions (see sections below).

Layout

We intend for Fedora CoreOS to be used directly for a wide variety of use cases. However, we also want to support "custom" derivatives such as Fedora Silverblue, etc. Hence the configuration in this repository is split up into reusable "layers" and components on the rpm-ostree side.

To derive from this repository, the recommendation is to add it as a git submodule. Then create your own manifest.yaml which does include: fedora-coreos-config/ignition-and-ostree.yaml for example. You will also want to create an overlay.d and symlink in components in this repository's overlay.d.

Overriding packages

By default, all packages for FCOS come from the stable Fedora repos. However, it is sometimes necessary to either hold back some packages, or pull in fixes ahead of Bodhi. To add such overrides, one needs to add the packages to manifest-lock.overrides.yaml (there are also arch-specific variants of these files for the rare occasions the override should only apply to a specific arch). There is a tool to help with this, and for simple cases, an automated workflow that runs the tool and submits a PR.

Note that comments are not preserved in these files. The lockfile supports arbitrary keys under the metadata key to carry information. Some keys are semantically meaningful to humans or other tools.

Fast-tracking

Example:

packages:
  selinux-policy:
    evra: 34.10-1.fc34.noarch
    metadata:
      type: fast-track
      bodhi: https://bodhi.fedoraproject.org/updates/FEDORA-2021-f014ca8326
      reason: https://github.com/coreos/fedora-coreos-tracker/issues/850
  selinux-policy-targeted:
    evra: 34.10-1.fc34.noarch
    metadata:
      type: fast-track
      # you don't have to repeat the other keys for related packages

Whenever possible, it is important that the package be submitted as an update to Bodhi so that we don't have to carry the override for a long time.

Fast-tracked packages will automatically be removed by the remove-graduated-overrides GitHub Action in this repo once they reach the stable Fedora repos (or newer versions). They are detected by the type: fast-track key.

Pinning

Example:

packages:
  dracut:
      evr: 053-5.fc34
      metadata:
        type: pin
        reason: https://github.com/coreos/fedora-coreos-tracker/issues/842
  dracut-network:
      evr: 053-5.fc34
      metadata:
        type: pin
        reason: https://github.com/coreos/fedora-coreos-tracker/issues/842

All pinned packages must have a reason key containing more information about why the pin is necessary.

Once an override PR is merged, coreos-koji-tagger will automatically tag overridden packages into the pool.

Adding packages to the OS

Since testing-devel is directly promoted to testing, it must always be in a known state. The way we enforce this is by requiring all packages to have a corresponding entry in the lockfile.

Therefore, to add new packages to the OS, one must also add the corresponding entries in the lockfiles:

  • for packages which should follow Bodhi updates, place them in manifest-lock.$basearch.json
  • for packages which should remain pinned, place them in manifest-lock.overrides.$basearch.yaml

There will be better tooling to come to enable this, though one easy way to do this is for now:

  • add packages to the correct YAML manifest
  • run cosa fetch --update-lockfile (this will only update the lockfile for the current architecture, most likely x86_64)
  • copy the new lines to the lockfiles for other architectures (i.e. aarch64)
  • commit only the new package entries (skip the timestamped changes to avoid merge conflicts with the lockfile updates made by the bot)

Moving to a new major version (N) of Fedora

Create a rebase checklist in fedora-coreos-tracker.

CoreOS CI

Pull requests submitted to this repo are tested by CoreOS CI. You can see the pipeline executed in .cci.jenkinsfile. For more information, including interacting with CI, see the CoreOS CI documentation.

Tests layout

Tests should follow the following format:

#!/bin/bash
## kola:
##   exclusive: false
##   platforms: aws gcp
##   # See all options in https://coreos.github.io/coreos-assembler/kola/external-tests/#kolajson
#
# Short summary of what the test does, why we need it, etc.
#
# Recommended: Link to corresponding issue or PR
#
# Explain the reasons behind all the kola options:
# - distros: fcos
#   - This test only runs on FCOS due to ...
# - platforms: qemu
#   - This test should ...
# - etc.

set -euxo pipefail

. $KOLA_EXT_DATA/commonlib.sh

foo_bar() <-- Other function definitions

if ...    <-- Actual test code
          <-- Errors must be raised with `fatal()`
          <-- Does not need to end with a call to `ok()`