Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add some automation for doing periodic mass rebuilds of Fedora packages #864

Open
wants to merge 43 commits into
base: main
Choose a base branch
from

Conversation

tstellar
Copy link
Collaborator

These mass rebuilds will help test the snapshot builds and catch regressions in real-world projects. The GitHub workflows are currently configured to start a new mass rebuild once per month and then when the rebuild is complete, it will create any issue reporting any regressions since the last build.

The goal is to keep the rebuilder as simple as possible, so it will only rebuild packages that successfully built in the last rebuild, and it makes no attempt to work around packages that hard code gcc as their compiler. As a result, some of the 'passing' builds may actually use gcc instead of clang, but this is an acceptable trade-off to keep the rebuild process simple.

These mass rebuilds will help test the snapshot builds and catch
regressions in real-world projects.  The GitHub workflows are
currently configured to start a new mass rebuild once per month
and then when the rebuild is complete, it will create any issue
reporting any regressions since the last build.

The goal is to keep the rebuilder as simple as possible, so it will
only rebuild packages that successfully built in the last rebuild, and
it makes no attempt to work around packages that hard code gcc as their
compiler.  As a result, some of the 'passing' builds may actually use
gcc instead of clang, but this is an acceptable trade-off to keep
the rebuild process simple.
Copy link
Collaborator

@kwk kwk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have some comments and probably need to look at this PR again to fully grasp it.

.github/workflows/rebuilder.py Outdated Show resolved Hide resolved
Comment on lines 121 to 122
# latest is a bit a successful build, but this doesn't mean it failed.
# It could be in progress.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment looks unfinished.

.github/workflows/rebuilder.py Outdated Show resolved Hide resolved
return project_name
except:
continue
print("FAIL")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest to use import logging and logging.warn("Fail") instead. This makes debugging the logs much easier. Also, please log more things so we know better where the script currently is.

Copy link
Collaborator

@kwk kwk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tstellar I know that the CI system is buggy at the moment but I encourage you to add tests to your script. At least some doc tests which should be carried out as regular tests in our setup. I know this is hard for functions that involve copr and alike.

owner: context.repo.owner,
repo: context.repo.repo,
title: "Mass Rebuild Report",
labels: ['mass-rebuild'],
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please create mass-rebuild label first.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if p["name"] not in pkgs:
continue
if not latest_succeeded:
pkgs.discard(p["name"])
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if we should have a small list of important packages that should never get removed even if they failed last time, e.g. qemu.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was planning to add tmt tests for important packages, like qemu, so that they get tested every day, not just periodically with the mass rebuild, but I agree, I think it does make sense to ensure they always get tested by this script too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants