198 Commits

Author SHA1 Message Date
Thilo Fromm
a37257c046 ci_automation_common.sh: sign commits to adhere to DCO requirements
This change makes CI sign commits (which should work because CI uses a "regular" github user) as per our new DCO requirements.
2025-07-18 11:36:09 +02:00
Krzesimir Nowak
2e86848181 ci-automation: Update sdk-bootstrap, packages-tag and upload functions
- Tighten the patterns used for nightly tags detection.
- Compare hashes instead of names to figure out if we are on top of a
  branch (fixes the issue of no nightly tags reachable from the
  release branches). Jenkins is doing `git fetch origin "${branch}";
  git checkout FETCH_HEAD` and this was confusing the `git rev-parse
  --abbrev-ref HEAD` code (it returned `HEAD` instead of `${branch}`).
- Account for possible multiple tags in a single commit.
- Made the tagging fail in dubious situations.
- Reindent the code, modernize a bit.
2025-07-11 20:04:51 +02:00
Krzesimir Nowak
9ff81e9994 ci-automation: Make tagging code testable through env vars 2025-07-11 20:04:40 +02:00
Krzesimir Nowak
4021be833c ci-automation: Pass image version to kola 2025-03-26 15:34:46 +01:00
Mathieu Tortuyaux
6cd177734c
ci-config: do not use OpenStack gzipped image
In the test we should use the unzipped image, which is the one
documented.

This allows us to drop some modifications to our OpenStack instance.

Signed-off-by: Mathieu Tortuyaux <mtortuyaux@microsoft.com>
2024-12-20 09:55:04 +01:00
Mathieu Tortuyaux
14b2e5ca39
python: install feedparser for Kernel CVEs fetching
packaging is not used with the new version of the show-fixed-kernel-cves
script.

Signed-off-by: Mathieu Tortuyaux <mtortuyaux@microsoft.com>
2024-09-02 15:48:15 +02:00
Krzesimir Nowak
f8fc7e2e07 ci-automation: Drop azure auth flags 2024-07-02 17:12:04 +02:00
Sayan Chowdhury
7d0e4d3bae
ci-automation/release: add support for Managed idenities
Signed-off-by: Sayan Chowdhury <schowdhury@microsoft.com>
2024-06-25 16:45:53 +05:30
Kai Lueke
2d5d42e135 ci-automation/vms: Download vmlinuz file before building VM images
After making flatcar_production_pxe.vmlinuz a symlink to
flatcar_production_image.vmlinuz the signature creation didn't work
because the target could not be found.
As we do with the generic image, download the kernel from bincache, too,
before starting the VM image build.
2024-04-19 19:36:05 +09:00
Kai Lueke
8bfad0d8f7 Set up symlinks for same image artifacts to remove qemu/qemu_uefi_secure
The qemu and qemu_uefi_secure images have the same contents as the
qemu_uefi image which wastes space on the release server. A similar
case is the PXE vmlinuz which is the same as the regular one, too.

Set up symlinks for same images, and also detect this when compressing
to set up symlinks there as well. To reduce complexity, the qemu and
qemu_uefi_secure images are not supported anymore and the Jenkins or
GitHub CI will skip over them if specified. Users that build their own
images need to adapt, though.
2024-04-09 22:14:16 +09:00
Thilo Fromm
6b106f82bd build_dev_binpkgs: Ensure adevcontainer binpkgs are built
This change introduces build_dev_binpkgs, a script to build binary
packages for all dependencies of the devcontainer. This works around an
issue with build_packages, which doesn't - leading to build issues with
the devcontainer later on. This particularly happens for more complex
builds with the devcontainer.

Additionally, a call to build_dev_binpkgs has been added to the package
publishing step in ci-automation before binary packages are published.

Signed-off-by: Thilo Fromm <thilofromm@microsoft.com>
2023-12-18 19:12:21 +01:00
Mathieu Tortuyaux
588b27daf5
image_changes: support multiple LTS
When we support two LTS, the oldest one is compare to the newer one (e.g
lts-2022 is compared to lts-2023).

We now read the 'lts-info' file to find the right version to compare
(e.g lts-2022 is compared to the 'current-2022')

Signed-off-by: Mathieu Tortuyaux <mtortuyaux@microsoft.com>
2023-11-27 17:49:30 +01:00
Mathieu Tortuyaux
fa41cbb474
ci-automation: add brightbox testing
Signed-off-by: Mathieu Tortuyaux <mtortuyaux@microsoft.com>
2023-11-24 15:33:04 +01:00
Kai Lueke
f7b1d6cf1b Use OpenStack image for Brightbox
The special Brightbox image uses the OpenStack userdata in Ignition but
lacked Afterburn usage. It actually works to use the OpenStack image and
directly which also enables Afterburn, thus we can drop the special
image.
Don't build a special image for Brightbox but recommend to use OpenStack
images directly. A symlink is added to help with the download of
hardcoded user scripts.
2023-11-16 18:39:21 +01:00
Kai Lueke
af2fc621e4 ci-automation/vms: Provide OpenStack image without external compression
For Brightbox we can use the OpenStack image but the import only works
with unpacked images. After we enabled internal qcow2 compression the
.gz or .bz2 external compression doesn't provide any benefits and makes
the import more complicated.
Provide the OpenStack image without external compression in addition.
The other files are kept for now but we could also delete them if we
announce this in advance.
2023-11-16 18:39:17 +01:00
Jeremi Piotrowski
87f8270b72 ci-automation: Switch to managed identity on azure
Switch to using a managed identity instead of file based credentials for
running kola/ore (not plume). This covers our test subscription, but not our
publishing subscription.

Signed-off-by: Jeremi Piotrowski <jpiotrowski@microsoft.com>
2023-10-10 13:22:46 +02:00
Krzesimir Nowak
a15266309a ci-automation/sdk_bootstrap: Put some names into variables
Changing the name of the main branch and the name of the nightly tag
may be useful for testing, so let's have them defined in one place.
2023-10-05 10:31:38 +02:00
Krzesimir Nowak
2d5392e1c9 ci-automation: Follow-up fix for 2-phase nightly SDK build tags
We push a commit with the nightly SDK tag to the main branch if the
SDK was built from the main branch. Which is what happens when we
build the nightly intermediate SDK. The final nightly SDK is not built
from the main branch, but rather from the nightly intermediate SDK
tag. Both of them point to the exactly same commit, but the difference
is in what `git rev-parse --abbrev-ref HEAD` returns for each of
those. When the main branch is checked out, the command will return
"main". When the nightly intermediate SDK tag is checked out, the
command will return "HEAD". So when nightly final SDK is being built,
the command returns a string different than "main" and thus decides
not to push the commit with the final nightly SDK tag to the main
branch. Rework it to assume that if `git rev-parse HEAD` and `git
rev-parse origin/main` return the same commit hash (and it's the
nightly build and all that) then the commit should be pushed.

We use "origin/main" instead of just "main" just in case the main
branch was not checked out before, for some reason (may come up in
testing with different names for the main branch when testing).
2023-10-05 10:31:38 +02:00
krishjainx
77142ad8b5 Allow use qcow2 compressed format in place of additional compressed layer 2023-09-26 13:41:21 +02:00
Thilo Fromm
bc29fa9fbd tapfile_helper: fix foldable details output
This change adds a "<summary>" sub-block to the "<details>" block in
markdown test reports.

The test run details output, which is used to print debug and error
messages of test runs in case of test failures, was meant to be
fold-able, aiding readability of test reports. This is implemented using
the "<details>" feature. However, we forgot to mark a "<summary>" line
within the "<details>" block, leading to the blocks not being fold-able
but instead being visible all the time.

Signed-off-by: Thilo Fromm <thilofromm@microsoft.com>
2023-05-26 13:50:37 +02:00
Krzesimir Nowak
15d350b756 ci-automation: Properly escape parameters passed to bash
Forwarding parameters to another bash invocation through a string
interpreted as a bash script is a bit troublesome. It is not enough to
wrap a parameter like 'foo bar' in escaped double quotes (\") to avoid
it being split into two parameters by bash executing the script
string. It mostly works, but there's always a risk of having a path
where this breaks. It's rare

Wrapping into escaped quotes, be them double or single, also won't
work for passing an array of parameters, so it's even easier here to
trigger globbing or bracket expansion or another unwanted splitting of
supposedly one parameter into multiple. Globbing can be temporarily
disabled with 'set -f' or 'set -o noglob', but this still leaves all
the other special bash characters unescaped. So each parameter in the
array should be escaped before they are put into the script string.

The escaping can be done with `printf` and its '%q` formatter, so
let's do so. For single parameters it is as simple as
`foo_escaped=$(printf '%q' "${foo}")`, for arrays a loop needs to be
used.
2023-05-26 13:50:23 +02:00
Krzesimir Nowak
a6f50b3099 sdk_bootstrap: Push a branch also for two-phase SDK nightly builds
The two-phase nightly builds create an intermediate tag first, which
didn't match the main nightly tag regexp before. Because of that, the
commit was not pushed to the main branch. The following final SDK
build had a version that matched the regexp, but the last commit (with
the intermediate tag on it) wasn't in main, and thus was also not
pushed.
2023-05-26 13:50:11 +02:00
Thilo Fromm
2f07358400 scripts, CI, workflows: remove submodule handling (flatcar-3510) 2023-04-13 11:26:06 +02:00
Thilo Fromm
e160917ec1 tapfile_helper ff.: support TAP and Markdown output
This change adds markdown output support to tapfile helper.
tap_generate_report() has been refactored to use low-level output
functions to write tests; TAP and markdown output is supported and both
are generated by default. Also, it should be straightforward to add
other output formats by implementing the respective low level print
functions.

The markdown output is now used by run-kola-tests.yaml to generate step
output and, if run from a PR, add a comment with test results to the PR.

Signed-off-by: Thilo Fromm <thilofromm@microsoft.com>
2023-03-30 13:48:16 +02:00
Thilo Fromm
c6a15a41a9 run-kola-tests.yaml: use new artifacts, local web server
This change updates the github actions kola test runner workflow to use
the new, separated artifacts produced by ci.yaml.

Further, it adds a fix for the devcontainer tests. Devcontainer and bin
packages used in the devcontainer tests are now served from a local
temporary web server.

The change also adds the qemu_update test and provides the respective
update payload.

Lastly, the tests now use a local torcx_manifest.json produced by
ci.yaml, which points to a torcx tarball also served by the local
temporary web server.
2023-03-30 13:48:16 +02:00
Kai Lueke
8bd0bd1e59 ci-automation: Allow git to work on directory owned by other user
The get_git_channel function failed to work which resulted in the
Alpha release job skipping the AWS publishing for the Alpha channel
because it defaulted to the developer channel as fallback when git
rejected to work on the directory owned by the build user while running
as root user. A new version of git caused this behavior change and also
prints an error message that explains to have to set safe.directory.

Set the git config entry safe.directory for the /work path when
entering the mantle container where git runs as root while working on
the directory owned by the build user.
2023-02-14 19:51:25 +09:00
Krzesimir Nowak
50183b48b8 ci-automation: Get two files to build vms instead of a whole directory
Getting the contents of the directory in the buildcache involves using
rsync with some ssh invocation to log in as a bincache user. It's not
a thing that will work locally unless the user gets ahold of the SSH
key allowing the user to log in to buildcache as a bincache user.

Replace it by downloading two files that are actually needed for
building vms: an image file and the version file. This just uses curl
and is accessible for everyone.
2023-02-08 14:50:36 +01:00
Krzesimir Nowak
46a250bf33 ci-automation: Report file size changes
This uses the new size-change-report.sh script to print out some
information about largest files being added/removed and files with
greatest increase/decrease in file size between two versions of the
image.
2023-02-02 10:05:02 +01:00
Krzesimir Nowak
219326392c ci-automation: Try reporting the changes in initrd too
This relies on flatcar_production_image_initrd_contents.txt being
uploaded to the server. It also exports the WITHWTD environment
variable with a value 1, which will make the package-diff script to
try out the wtd contents file variant first.
2023-02-02 10:04:40 +01:00
Mathieu Tortuyaux
b8cafc1b9f
gc: pass OPENSTACK_CREDS to mantle container
Signed-off-by: Mathieu Tortuyaux <mtortuyaux@microsoft.com>
2023-01-03 09:24:16 +01:00
Kai Lueke
bc3a9aeacd qemu_update: Add update test from an old release
To ensure that we can update from very old releases, add a test with a
fixed old release, here the Stable release that introduced arm64
support to have the same test logic for both architectures.
2022-11-29 16:51:27 +01:00
Krzesimir Nowak
fbb962c7f6 ci-automation: Add an environment variable to skip build shortcuts
This will be used for the "run all tests" days in Jenkins.
2022-11-03 12:00:10 +01:00
Kai Lueke
3cb9736c33 ci-automation: Use plain AMI image for uploads
Recently we ran into sporadic corruption issues for AWS EC2 AMIs.
We use the streamOptimized VMDK format and it seems to cause problems
at the AWS side, regardless if created by qemu-img or vmdk-convert.
Switch to using the plain AMI images for uploading as workaround.
2022-10-28 17:21:39 +02:00
Kai Lueke
25dbccc14d ci-automation: Support local patches
For embargoed releases it is useful to apply patches locally to build
with them before they are public. This allows to push the same patches
to the repo during the Flatcar release at the embargo lift. The result
is the same (as long as the scripts patches did not change parts of the
setup logic that was running before they got applied), we can just build
earlier and thus do the Flatcar release directly on the embargo lift
instead of having to wait with the build because it would require the
patches to be in the repos.
2022-10-27 11:53:33 +02:00
Krzesimir Nowak
06d2aabaa2 ci-automation/vendor-testing/vmware.sh: Fix unbound variable use
This gets triggered when the test is rerun and an existing image is
reused.
2022-10-11 15:25:56 +02:00
Jeremi Piotrowski
de132c62d5
Merge pull request #521 from flatcar/jepio/gpg-import-batch
ci-automation: use --batch when importing gpg key
2022-10-06 09:52:07 +02:00
Kai Lueke
00223be1c7 ci-automation/release: Only upload SDK if a new one was built
A release includes an SDK if its SDK version is the release version.
Only then we need to upload a new SDK container image.
2022-10-04 14:24:28 +02:00
Jeremi Piotrowski
6e11ae3394 ci-automation: use --batch when importing gpg key
All invocations of gpg in ci-automation pass --batch as an argument except the
import. Be consistent by having it included everywhere. Additionally, since
ci-automation runs wrapped in a systemd service, no tty is available so batch
is needed for correctness.
2022-10-04 10:22:43 +02:00
Mathieu Tortuyaux
289cc52c5f
automation/gc: add openstack garbage collector
Signed-off-by: Mathieu Tortuyaux <mtortuyaux@microsoft.com>
2022-09-29 11:21:25 +02:00
Mathieu Tortuyaux
de8b4eae6a
ci-automation: add openstack to tested vendors
Missing link to enable the tests in the Flatcar test suite.

Signed-off-by: Mathieu Tortuyaux <mtortuyaux@microsoft.com>
2022-09-29 11:21:25 +02:00
Kai Lueke
89495373d9 ci-automation: Ensure to use latest container image
The container image was only created if it didn't exist locally. This
would result in fixes not being in a downstream job that is scheduled
to a different worker node on Jenkins that has a stale copy.
For the build automation we will now always download the latest
container tar ball based on comparing the image ID from a new artifact,
and for registry images we pull the container image to make sure that
we don't use a stale copy when we rebuild.
2022-09-29 10:04:23 +02:00
Kai Lüke
dca21df916
Merge pull request #513 from flatcar/kai/container-fallback
ci-automation: Fallback also to the mirror for container download
2022-09-27 17:49:53 +02:00
Kai Lueke
20643b260e ci-automation: Fallback also to the mirror for container download
When there is no SDK container image in the registry, the fallback
looks at bincache but bincache isn't backed up and may be cleaned of
old releases. While this won't be the regular case, the container
image registry may be unavailable (or renamed as happened now), or
people would like to rerun the image job which relies on the packages
container.
2022-09-27 15:53:33 +02:00
Krzesimir Nowak
24213a5c96 ci-automation: Download correct previous image for LTS release
qemu_update vendor test was downloading a wrong LTS image when it was
testing the old LTS image. This is because it was using a current
symlink, which for LTS channel will always point to the new LTS. Old
LTS is available under current-${YEAR} symlink. We can get the
information about year from the lts-info file.
2022-09-27 11:56:39 +02:00
Krzesimir Nowak
2606380396 ci-automation: Fix unbound variable errors
FLATCAR_VERSION and FLATCAR_SDK_VERSION are defined in the version
file, so it should be sourced before trying to use those. Here we try
to do it in a limited scope.

Also, SDK container link should use the dockerized version in a
directory name.
2022-09-27 10:55:08 +02:00
Kai Lueke
326c645647 ci-automation: Fix syntax error 2022-09-26 17:24:53 +02:00
Kai Lueke
bca6e6e41d ci-automation: Don't skip nightly build when the previous one failed
Currently we skip the nightly build if there are no changes. This
didn't work well because a new run doesn't fix any failure because the
rerun became a no-op.
Check if the main artifacts we expect from a step are found, as simple
heuristic on whether a rerun is needed.
2022-09-26 17:06:21 +02:00
Kai Lueke
18627499c1 Annotate a copied function
I found a duplicate function and verified that it's the only one via
comm -12 <(sort ci-automation/ci_automation_common.sh) <(sort sdk_lib/sdk_container_common.sh) | grep function
I'm not sure if this is due to a case where we only import one but
can't import the other, hence I'm not deleting it now.
2022-09-26 15:39:45 +02:00
Kai Lueke
3fef1eb801 ci-automation/release: Set up secret envs 2022-09-22 18:31:50 +02:00
Kai Lueke
ffee812d32 ci-automation/release: Run plume release only once
We need to run plume only once for each arch, move it out of the loop.
Also, address some smaller things that shellcheck complains about.
2022-09-22 18:31:50 +02:00