Flatcar Container Linux Release: Alpha, Beta, Stable

by Admin 53 views
Flatcar Container Linux Release: Alpha 4515.0.0, Beta 4459.1.1, Stable 4459.2.0

Hey folks! Get ready for the latest updates on Flatcar Container Linux! We're excited to announce the planned release of new versions, packed with improvements and fixes. Let's dive into the details of the upcoming releases for Alpha, Beta, and Stable channels. This article will walk you through the Flatcar Container Linux release process, helping you understand what goes on behind the scenes.

1. Preparation

A. Go/No-Go Checklist and HackMD Document Creation

First things first, before any release, we gotta get our ducks in a row. A Go/No-Go checklist is created using a HackMD document based on a template. This document is super important, as it serves as our central hub for tracking tests and documenting release notes. The link to this document is crucial for everyone involved, so they know where to find the latest updates and progress. Making sure we're all on the same page is vital before we move on to the next steps.

B. Merging Planned Changes and Bug Fixes

Next up, we ensure that all planned changes are merged and any major bugs that could cause problems are squashed. We always take a peek at the last nightly build to make sure everything's running smoothly and that we're not missing any issues. This step ensures that the upcoming release is stable and as bug-free as possible. It is necessary to provide users with the best experience.

C. Kernel PR Merging

We need to confirm that the kernel pull requests (PRs) are merged for all channels that are planned for release. This step ensures that the kernel version is up to date in the new release, offering stability and security.

2. Build

A. Branching from the Main Branch

Before starting the build process, we need to create a branch from the main branch. This is usually only done for new major releases. Doing this ensures that we are building from the latest code.

B. Tagging Build Branches

After creating the branch, the next step involves tagging all the build branches. Tagging a specific commit with a version number is essential, as it helps us identify each build and its associated code. It is useful for tracking and versioning, and it helps maintain the integrity of our builds.

C. Starting Jenkins Builds

Then, we kick off the Jenkins builds. Jenkins is a very popular automation server that helps us to automate the build process, which reduces the manual effort and potential for errors. After the builds are complete, the links are posted in this issue as a comment. This gives visibility to all stakeholders, so they can keep an eye on the progress of the builds and get direct access to the artifacts.

3. Release

i. The Go/No-Go Meeting

A. Test Status in HackMD

We capture the test status in the HackMD document. This means the latest test results are updated in the document to ensure that everyone can check whether the new release is fit for purpose. It is critical for maintaining quality and providing a reliable release.

B. All Tests Are Green

We make sure all tests are green before moving forward. This is a must-have condition for our releases. Any test failures are thoroughly investigated and resolved before the release moves on. This ensures a stable and reliable release.

C. Payload Signing and Uploading

We ensure the payload is signed and uploaded. This can be done as soon as images are available on bincache.flatcar-linux.net. Signing and uploading the payload is a very important step to ensure the integrity and security of the release.

D. Release Notes and Announcements

We add release notes and announcements to the Go/No Go document. This is done from the container/image_changes job by selecting 'Timestamps: None'. These notes give you detailed information about the changes and updates in the release, keeping everyone informed about what is new.

E. Quality Assurance (QA)

QA checks the differences in the image file list, packages, and image size in the container/image_changes job output. This step confirms the accuracy and completeness of the release, helping to find potential issues early. This can help improve the reliability and integrity of the release.

F. Matrix Go/No Go Meeting

We conduct a Matrix Go/No Go meeting, including a review of the release notes. This meeting is where the team makes the final call on whether to proceed with the release. It's a review, to make sure everything looks good and is ready for public release. It's also a chance to review the release notes to confirm their accuracy and completeness.

ii. Artifacts Go Public

A. Running the Container/Release Job

We run the container/release job. This job is responsible for packaging and preparing all the artifacts for release. It helps automate the release process and reduce manual effort.

B. Creating Release Notes on GitHub

We create the Release Notes on the scripts repo for the respective tags on GitHub as GitHub Releases. This ensures that the users are up-to-date with the changes, which is crucial for transparency and to allow users to understand the changes in the new version.

C. Image Upload with copy-to-origin.sh

Images are uploaded using copy-to-origin.sh. This script uploads the images to the content delivery network (CDN), making them available for everyone. This ensures that users can download and install the images.

D. Updating Symlink with set-symlink.sh

We update the