1
0
mirror of https://github.com/containers/bootc.git synced 2026-02-05 15:45:53 +01:00

116 Commits

Author SHA1 Message Date
gursewak1997
4e32026294 Update workflow to use gh-app token for assignment 2025-08-16 13:49:02 -07:00
gursewak1997
98e9e4e661 Add missing perms and fix reviewer assignment API call 2025-08-15 00:53:31 -07:00
gursewak1997
44872ff4d1 fix: Use gh pr edit to avoid JSON formatting issues 2025-08-14 13:09:58 -07:00
gursewak1997
5219fad736 add auto-reviewer workflow with built-in GITHUB_TOKEN 2025-08-14 12:38:11 -07:00
gursewak1997
f66c53ab97 Resolve GH_TOKEN conflict in auto-reviewer workflow 2025-08-13 10:39:13 -07:00
Colin Walters
09890a4df0 Merge pull request #1491 from gursewak1997/feature/auto-reviewer-rotation
Add automated PR reviewer rotation system
2025-08-08 11:52:36 -04:00
gursewak1997
efe603119e feat: add automated PR reviewer rotation system
- Auto-assign reviewers from MAINTAINERS.md on 3-week rotation
- Exclude PR author from self-assignment
- Trigger on PR open, ready-for-review, and pushes
- Preserve existing manual reviewer assignments
2025-08-07 14:12:19 -07:00
ckyrouac
0da7858e4b ci: Refactor release action to use app and create-pull-request
This uses the token generated in the GitHub app that has a limited
scope. Also refactors the commit/push steps to use the
create-pull-request action rather than manually committing and pushing.
This simplifies the token usage when committing/pushing.

Signed-off-by: ckyrouac <ckyrouac@redhat.com>
2025-08-07 08:40:00 -04:00
ckyrouac
08d2c982f2 ci: Release every 3 weeks starting from 2025-08-04
This modifies the scheduled release to happen every 3 weeks regardless
of when the previous release happened. This aligns with the team's
schedule.

Assisted-by: Claude code
Signed-off-by: ckyrouac <ckyrouac@redhat.com>
2025-08-06 10:04:45 -04:00
Colin Walters
c5044b0a09 Merge pull request #1487 from jeckersb/fix-autovendor-cli-path
Fix autovendor workflow CLI directory path
2025-08-05 14:32:56 -04:00
Micah Abbott
6bb02940cc Revert "ci: periodically run update-generated"
This reverts commit 9e0a0f887b.

Signed-off-by: Micah Abbott <miabbott@redhat.com>
2025-08-05 14:24:48 -04:00
John Eckersberg
2245c1a03e Fix autovendor workflow CLI directory path
Update the autovendor GitHub workflow to use the correct path 'crates/cli'
instead of 'cli', which was causing the job to fail with "No such file or
directory" error.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: John Eckersberg <jeckersb@redhat.com>
2025-08-05 12:50:34 -04:00
ckyrouac
4f61e710aa ci: Shorten the release interval to 19 days
Since there is some user intervention required for the scheduled
release, this adds a 2 day buffer in case the buttons weren't clicked
immediately last time.

Signed-off-by: ckyrouac <ckyrouac@redhat.com>
2025-07-30 11:44:25 -04:00
ckyrouac
f15a65a528 ci: Check if it's time for release earlier in gh action
Just a small optimization to avoid installing deps when it's not time
for a release.

Signed-off-by: ckyrouac <ckyrouac@redhat.com>
2025-07-28 15:35:10 -04:00
Colin Walters
8557d1a07d Dockerfile: Support pulling in the continuous repo
If enabled this pulls in git main of ostree which I want
for soft reboot work.

Signed-off-by: Colin Walters <walters@verbum.org>
2025-07-24 13:59:09 -04:00
ckyrouac
4fc87419c2 build: Add actions to automate release
This adds two github actions, "Create Release PR" and "release". The
first is scheduled to run every 3 weeks to automatically create a
release PR that bumps the versions. The "release" action is triggered
when the release PR is merged. It will create a draft release with the
tars attached.

Assited-by: Claude Code
Signed-off-by: ckyrouac <ckyrouac@redhat.com>
2025-07-23 11:08:45 -04:00
Colin Walters
d4c19f7d31 tests: Add a suite which runs tests under systemd
And add a single test which verifies that our internal `reboot`
code actually does what it should (via systemd-run etc.)

This took me way, way too long to do...there were so many missteps
and confusion. First of all, I kept trying to use `systemd.extra-unit`
from https://www.freedesktop.org/software/systemd/man/latest/systemd-debug-generator.html#
but that doesn't exist in stream9.

I spent way too long trying to debug the fact that switching from
`podman run <image> /sbin/init` to `podman run <image> /bin/sh -c '<stuff> && exec /sbin/init`
fails because in the latter case podman's auto-detection fails and
we need to explicitly say `--systemd=always`. In retrospect obvious...but oh well.

On the positive side, I think with some cleanup we could extend this model
and generalize it for "test running in a container with systemd" (with
a lot of cleanup really)

Signed-off-by: Colin Walters <walters@verbum.org>
2025-07-18 07:42:05 -04:00
Colin Walters
2f69a16074 Move all crates under crates/
Just organizational cleanup, a number of Rust projects
do this:
https://github.com/search?q=+%22crates%2F*%22+path%3ACargo.toml+-is%3Afork&type=code&p=5

Signed-off-by: Colin Walters <walters@verbum.org>
2025-07-17 16:27:39 -04:00
Micah Abbott
9e0a0f887b ci: periodically run update-generated
This introduces a GitHub workflow to periodically run `cargo xtask
update-generated` in order to keep the docs up-to-date with the
latest changes. It will create a PR if changes are detected.

Signed-off-by: Micah Abbott <miabbott@redhat.com>
2025-06-26 15:43:53 -04:00
Colin Walters
fc057e6a1b build-sys: Rework to have toplevel Dockerfile + Justfile
This is aligning with what I did in https://github.com/ostreedev/ostree/pull/3439

- What gets invoked in e.g. GHA should ideally most be `just` commands
  that are easy to run locally too (with sudo in GHA, without sudo locally)
- Move the "core build" to the toplevel so that one can just `podman build`
  directly too (without the Justfile) and have it do something useful
- The "always build and test in a container" helps for LLM-assisted coding
  because what they can do is inherently sandboxed

Signed-off-by: Colin Walters <walters@verbum.org>
2025-06-11 17:44:54 +02:00
ckyrouac
e0301cd45a reinstall: Only pull the image if it's not already present
This enables using a local image with system-reinstall-bootc. A couple
drive by cleanups to the integration tests are included.

Signed-off-by: ckyrouac <ckyrouac@redhat.com>
2025-06-06 11:20:51 -04:00
ckyrouac
72c3c74c9e reinstall: Initial set of system-reinstall-bootc integration tests
This adds a few basic integration tests for system-reinstall-bootc, adds
a system-reinstall option to tests-integration to run them, and executes
them as part of the github action.

Signed-off-by: ckyrouac <ckyrouac@redhat.com>
2025-06-05 10:27:48 -04:00
Colin Walters
2367f5251e ci: Update podman on fedora-container-tests too
So we can use heredocs.

Signed-off-by: Colin Walters <walters@verbum.org>
2025-05-15 13:27:23 -04:00
Colin Walters
ff952c3c3d install: Honor composefs.enabled=verity
Key off the ostree prepare-root config to require fsverity
on all objects.

As part of this:

- Add a dependency on composefs-rs just for the fsverity querying
  APIs, and as prep for further integration.
- Add `bootc internals fsck`, which verifies the expected
  fsverity state.

Signed-off-by: Colin Walters <walters@verbum.org>
2025-03-16 10:25:16 -04:00
Colin Walters
728ab1a296 ci/install-tests: Update to newer podman
For here doc support.

Signed-off-by: Colin Walters <walters@verbum.org>
2025-03-15 13:52:40 -04:00
Joseph Marrero Corchado
5229fbb1fe docs: add footer with CNCF trademark notice
Signed-off-by: Joseph Marrero Corchado <jmarrero@redhat.com>
2025-03-10 20:59:28 -04:00
Omer Tuchfeld
7b4ceb83c9 labeler: auto add system-reinstall-bootc label
Automatically mark any PR touching files in the system-reinstall-bootc
directory with the area/system-reinstall-bootc label.

Signed-off-by: Omer Tuchfeld <omer@tuchfeld.dev>
2025-02-18 09:18:44 +01:00
Colin Walters
cb99cf5c95 ci: Bump Fedora to 41
For newer ostree

Signed-off-by: Colin Walters <walters@verbum.org>
2025-02-03 12:37:38 -05:00
Colin Walters
b55a5d9bc0 deny: Sync with rpm-ostree
We should really have a more centrally-maintained `cargo-deny`
configuration. I'd argue to maintain it here in bootc to
start, but this will be a common thing for other projects
in github.com/containers and elsewhere.

Anyways, this needed updating for the new Unicode-3.0 license
in some updated unicode crates that I saw in rpm-ostree.

While we're here, quiet the duplicate crate warning in the CI
job, as it's just noise. Keep it when running locally so
we have some visibility if we care about it.

Signed-off-by: Colin Walters <walters@verbum.org>
2025-01-16 08:50:21 -05:00
John Eckersberg
9d6de63eb0 ci: labeler: use globstar where applicable
It appears the single glob '*' doesn't match recursively, so use the
globstar '**' where we want to match anything within a subtree

Signed-off-by: John Eckersberg <jeckersb@redhat.com>
2024-12-19 12:06:43 -05:00
Xiaofeng Wang
f8b7e946c7 ci: fix labeler action error
Fix "The configuration file (path: .github/labeler.yml) was not
found locally" error

Signed-off-by: Xiaofeng Wang <henrywangxf@me.com>
2024-12-10 17:44:13 +08:00
Xiaofeng Wang
e2d5dd2cfa ci: remove python checking from CI
No python code in the repo any more

Signed-off-by: Xiaofeng Wang <henrywangxf@me.com>
2024-12-10 17:38:10 +08:00
Colin Walters
6429eebc61 ci: Run the ostree-ext deploy tests
Signed-off-by: Colin Walters <walters@verbum.org>
2024-12-09 08:05:03 -05:00
Colin Walters
97692bd1c2 Make lints stricter, apply crate wide
Add `dead_code = "deny"` to our default lints; we had
a compiler warning for this in main.

Fix the warning by moving the human readable test code into
`#[cfg(test)]`.

While we're here, move the other lib.rs lints into the crate;
enforcing docs for *everything* at first I thought might be heavy
handed but actually is fine as it only applies to things that
are `pub`, of which we don't actually have that much so it
mainly forced me to add some stub docs for the modules, which
is probably a good idea.

Signed-off-by: Colin Walters <walters@verbum.org>
2024-09-18 13:10:49 -04:00
Platform Engineering Bot
f8314fb48d chore(deps): update embarkstudios/cargo-deny-action action to v2
Signed-off-by: Platform Engineering Bot <platform-engineering@redhat.com>
Signed-off-by: Colin Walters <walters@verbum.org>
2024-08-13 10:15:43 -04:00
Chris Kyrouac
091840b09b Merge pull request #691 from cgwalters/doc-experimental
docs: Add experimental section w/`bootc image`
2024-07-18 09:01:46 -04:00
Colin Walters
63bcf63868 build: Use workspace global lints
In relatively recent rust there's a nice way to globally
configure clippy lints for the whole workspace. We can
kill the `custom-lints` target because relatively
recently clippy has a lint for `todo!` and `dbg!` itself.

Signed-off-by: Colin Walters <walters@verbum.org>
2024-07-17 13:48:12 -04:00
Colin Walters
8a1959b2d2 ci: Document building the docs locally
It was slightly less than obvious.

Signed-off-by: Colin Walters <walters@verbum.org>
2024-07-16 14:56:08 -04:00
Colin Walters
b26f21788a build-sys: Add make validate-rust
The `make validate-rust` reproduces locally the same checks
we run in CI as gating by default; hook it up to the existing
`make validate`.

Signed-off-by: Colin Walters <walters@verbum.org>
2024-07-15 17:46:27 -04:00
Xiaofeng Wang
45304e386b test: delete unused files
delete workflow file because e2e runs by Packit
delete mockbuild because build bootc rpm on copr

Signed-off-by: Xiaofeng Wang <henrywangxf@me.com>
2024-07-03 22:20:23 +08:00
Platform Engineering Bot
8932ec9d0d chore(deps): update all dependencies
Signed-off-by: Platform Engineering Bot <platform-engineering@redhat.com>
2024-07-03 10:35:03 +00:00
Colin Walters
9a758e3a14 tests: Add pytest and nushell based tests
I've been trying to keep this project in "one" programming
language by writing even tests in Rust...but specifically
for our integration tests it's pretty painful not just to
compile them but have to deal with baking them into the base image.

The tmt framework is very GHA like in that it scrapes the
git source tree and copies it into the target environment, which
works really well with scripts.

Now, if you know me you know I am not a fan of dynamic programming
languages like bash and Python. I'm one of those folks that actually
tries to use Rust for things that feel like "scripts" i.e. they're
*mostly* about forking external processes (see the xtask/
crate which uses "xshell").

Some of our testing code is in Rust too. However...there's a giant
tension here because:

- Iteration speed is very important for tests and scripts
- The artifact being an architecture-dependent binary pushes us
  to inject it into container images; having the binary part
  of the bootc image under test conceptually forces us to reprovision
  for each test change, which is super expensive

Most other people when faced with the testing challenge would
just write shell scripts (or Python); that's definitely what tmt
expects people to do.

The podman project has a mix of a "bats" suite which is all
bash based, and a Go-based framework.

The thing is: bash is easy to mess up and has very little ability
to do static analysis. Go (and Python) are very verbose for forking external
processes.

I've been using https://www.nushell.sh/ for my interactive shell
for quite a while; I know just enough to get by day to day
(but honestly sometimes I still type "bash" and run a few things there
 that I know how to express in bash but not nu)

Anyways though, nushell has a lot of desirable properties for
tests (which are basically scripts):

- Architecture independent
- Running an external process requires zero ceremony; it's the
  default!
- But it *is* easy to e.g. scrape JSON from an external binary
  into a rich data structure
- A decently rich standard library

The downside is, it's a new language. And in the end, I'm
not going to say it's the only way to write tests...maybe we
do end up with some more bash. It wouldn't be the end of the world.
But...after playing with this, I definitely like the result.

OK, and after some debate we decided to add Python too, so this
demos a pytest test.

Signed-off-by: Colin Walters <walters@verbum.org>
2024-06-24 13:46:13 -04:00
Platform Engineering Bot
824f8530db chore(deps): update all dependencies
Signed-off-by: Platform Engineering Bot <platform-engineering@redhat.com>
2024-06-06 13:15:40 +00:00
Colin Walters
9be6b5a0b0 tests: Drop internal-testing-api, move to tests-integration
Previous work started moving our tests into an external binary;
this is just cleaner because it can test things how a user
would test.  Also, we started using `libtest-mimic` to
have a "real" test scaffolding that e.g. allows selecting
individual tests to run, etc.

Complete the picture here by moving the remaining bits into
the tests-integration binary.  We now run the `tests-integration`
binary in two ways in e.g. Github Actions:

- It's compiled directly on the Ubuntu runner, and orchestrates
  things itself
- It's built in our default container image (Fedora) but as an external
  `/usr/bin/bootc-integration-tests` binary

Also while we're here, drop the kola tests.

Signed-off-by: Colin Walters <walters@verbum.org>
2024-05-31 17:41:14 -04:00
Colin Walters
94ddb2f372 Merge pull request #556 from cgwalters/main
ci: Clean up fedora CI
2024-05-29 10:24:55 -04:00
Colin Walters
4e74262984 Merge pull request #552 from henrywang/update
test: some updates on test
2024-05-28 14:23:43 -04:00
Xiaofeng Wang
be7f3452d2 test: some updates on test
1. add bootc swtich test
2. add bootc install to-disk test
3. cover more distros, like rhel 9.5, fedora 40 and 41(rawhide)

Signed-off-by: Xiaofeng Wang <henrywangxf@me.com>
2024-05-24 10:09:03 +08:00
Colin Walters
3b7e799620 ci: Clean up fedora CI
- Build from the hack/Containerfile flow but using Fedora
- Run that container instead of bind mounting in our binaries

Signed-off-by: Colin Walters <walters@verbum.org>
2024-05-21 20:02:53 -04:00
Colin Walters
65136e03e5 Move install tests shell script into Rust
A few things going on here:

- Rewrite logic from shell script into Rust (using xshell, so
  it's still convenient to fork commands)
- Make the test logic take an externally-built container image
  instead of using a `-v bootc:/usr/bin/bootc` bind mount
- Build the container image using our stock hack/Containerfile
  in Github Actions instead of building for c9s in GHA
- This all hence starts to make the logic reusable outside
  of Github Actions too; the container build is a known standard thing.

Signed-off-by: Colin Walters <walters@verbum.org>
2024-05-19 17:58:17 -04:00
Liora Milbaum
cc809c584d Renovate config
Signed-off-by: Liora Milbaum <lmilbaum@redhat.com>
2024-05-17 14:35:13 +03:00