Commit graph

95 commits

Author SHA1 Message Date
Michael Vogt
d485bc3a44 ibcli: add new --extra-artifacts option with sbom support
This commit adds an option --extra-artifacts that can be
used to generate extra artifacts during the build or manifest
generation. Initially supported is `sbom` (but `manifest` is
planned too).

To use it run `--extra-artifacts=sbom` and it will generate
files like `centos-9-qcow2-x86_64.image-os.spdx.json` in
the output directory next to the generate runable artifact.

Closes: https://github.com/osbuild/image-builder-cli/issues/46
2025-01-19 21:57:14 +00:00
Michael Vogt
db7cad2239 main: tweak TestBuildIntegrationErrors
We do not need to pass a blueprint in this test.
2025-01-19 21:57:14 +00:00
Michael Vogt
bdb32554ff test: add new test_container_builds_image_librepo test
This commit adds a (smoke) integration test for librepo based
manifests. It needs a flanking test that also ensures that
--use-librepo really generates librepo sources.
2025-01-17 13:29:01 +00:00
Michael Vogt
687f69bb76 main: make "--use-librepo" the default
This commit switches the default to librepo. We do not have many
users yet so this is a great place to test the new librepo
functionality. It also is much more stable for fedora/centos
systems that often have flaky mirrors.

This also bumps the minimum required version of osbuild.
2025-01-17 13:29:01 +00:00
Michael Vogt
d75bb4fa0a manifestgen: make depsolve return the full dnfjson.DepsolveResult
This commit changes the signature of depsolve in `manifestgen`
to return the full `dnfjson.DepsolveResult`. This gives us
access to the sbom and also is a preparation for images PR#1142
where we will need this anyway.
2025-01-17 13:29:01 +00:00
Michael Vogt
44f27108b9 ibcli: introduce/use manifestOptions struct
This commit adds a new manifestOptions struct that is passed
to generateManifest. to cleanup the signature of generateManifest().

This can then also be used to carry a new e.g. `--rpmmd/--cachedir`
option.
2025-01-17 13:29:01 +00:00
Michael Vogt
f8ffa8a258 main: add experimental --use-librepo to support librepo downloads
This commit switches to the librepo enabled `images` library via:
```
go mod -replace github.com/osbuild/iamges=github.com/mvo5/images@librepo-sources-osbuild1974
```
which in turn needs osbuild PR#1974.

With that it then adds a new `--use-librepo` switch that will
enable librepo based downloading so that people can play with
the new backend.
2025-01-17 13:29:01 +00:00
Michael Vogt
78f62e21e2 go.mod: move to latest snapshot 2025-01-17 13:29:01 +00:00
Simon de Vlieger
2f13ed2ec7 spec: min osbuild version
Depend on a minimum osbuild version.

Signed-off-by: Simon de Vlieger <supakeen@redhat.com>
2025-01-17 08:58:07 +00:00
Simon de Vlieger
d36e7ba0aa spec: require osbuild extras
Signed-off-by: Simon de Vlieger <supakeen@redhat.com>
2025-01-17 08:58:07 +00:00
Simon de Vlieger
d6c4bba36d spec: require osbuild-depsolve-dnf
Signed-off-by: Simon de Vlieger <supakeen@redhat.com>
2025-01-17 08:58:07 +00:00
Simon de Vlieger
5b2581f15e spec: require osbuild
We can't build images without having osbuild installed.

Signed-off-by: Simon de Vlieger <supakeen@redhat.com>
2025-01-17 08:58:07 +00:00
Simon de Vlieger
ff62775628 cmd: exactly 1 arg
Since we only accept one image type (for now) we only need to accept
exactly one argument.

Signed-off-by: Simon de Vlieger <supakeen@redhat.com>
2025-01-17 08:57:36 +00:00
Simon de Vlieger
0c255f2bdb cmd: fix usage
We don't pass `[blueprint]` positionally anymore.

Signed-off-by: Simon de Vlieger <supakeen@redhat.com>
2025-01-17 08:57:36 +00:00
dependabot[bot]
bf6645554f build(deps): bump actions/setup-go from 4 to 5
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 4 to 5.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-17 08:03:08 +00:00
Florian Schüller
4799e233c2 pre-commit: re-enable golangci-lint
Followup of #54
2025-01-16 14:16:31 +00:00
Simon de Vlieger
3fb26dbffe doc: update README
Use the new `--blueprint` in the README.

Signed-off-by: Simon de Vlieger <supakeen@redhat.com>
2025-01-16 12:31:13 +00:00
Simon de Vlieger
c1c60a3c77 cmd: --blueprint
Moves the blueprint argument to a named argument; freeing up space to
later be able to pass in multiple image types. This also slightly
simplifies the case where we're building without a blueprint available.

Signed-off-by: Simon de Vlieger <supakeen@redhat.com>
2025-01-16 12:31:13 +00:00
Florian Schüller
ffb22eb837 spellcheck: ignore release_artifacts directory
Pyspelling does not seem to read `.gitignore` file,
so we'll manually exclude it for now.
2025-01-15 15:58:00 +00:00
Simon de Vlieger
8ba39144ce ci: expand spellcheck
Signed-off-by: Simon de Vlieger <supakeen@redhat.com>
2025-01-14 10:11:41 +00:00
Michael Vogt
44f8f90310 README: add blueprint example
This commit adds an example for how to pass the blueprint and what
content the blueprint should have.
2025-01-13 13:46:14 +00:00
Michael Vogt
8f94516779 main: add ostree integration
This commit adds integration for the ostree options. It is modelled
loosely after weldr-client/composer-cli and the
```
start-ostree --{ref,parent,url}
```
and uses
```
--ostree-{ref,parent,url}
```

A simple smoke test is provided that uses fedora-iot. Ideas welcome
for an easier way :)
2025-01-10 14:37:47 +00:00
Florian Schüller
00e18fe1cd Makefile/packit: avoid duplicate implementation of "version" 2025-01-10 13:50:34 +00:00
Michael Vogt
4f1816c1b7 manifestgen: pass missing repoConfig to preManifest.Serialize()
When depsolve is run it returns a list of packageSpecs and the
matching repository config. This repo config is different/distinct
from the repository config that is passed into depsolve via the
package sets or the repositories that are loaded via the
reporegistry and needs to be passed into `manifest.Serialize()`.

The key different is that the depsovle `repoConfig` contains
the repo.Id that match the packageSpec.RepoId. With those two
matching IDs we can use librepo (see osbuild PR#1974) to infere
what mirror to use for what package.

This commit now passes the correct repoConfig into
preManifest.Serialize() now.

No test (sorry!) as this is really hard to test in isolation, there
is nothing observable today from repoConfig and it is impossible
to add a "witness" pipelien that could check that the right argument
is passed in `pipeline.serializeStart()`. So until we refactor
images you will have to take my word for this (sorry again).
2025-01-10 13:49:28 +00:00
Florian Schüller
30166b07fc Makefile: fix packer version by using git tag
For releases this does not change anything, as the version
in the spec file is the same as the git tag. For
intermediate/tainted versions packer seems to patch the spec
file to the version given in `.packit.yaml`
(which is the latest git-tag), then the filename and version
would be inconsistent.
2025-01-10 11:55:52 +00:00
Michael Vogt
0563b845be pre-commit: drop golangci-lint for now
The package crashes during check with:
```
golangci-lint............................................................Failed
- hook id: golangci-lint
- exit code: 3
level=warning msg="[runner] Can't run linter goanalysis_metalinter: buildir: failed to load package gpgme: could not load export data: no export data for \"github.com/proglottis/gpgme\""
level=error msg="Running error: can't run linter goanalysis_metalinter\nbuildir: failed to load package gpgme: could not load export data: no export data for \"github.com/proglottis/gpgme\""
```

which is not helpful
2025-01-10 08:30:28 +00:00
Michael Vogt
fb56109048 cmd: drop TestListImagesOverrideDatadir
With the new build-in repos this test is no longer relevant. We
need to look into a different way to test overrides but just
providing an empty datadir will no longer work so drop that.
2025-01-10 08:30:28 +00:00
Michael Vogt
d35c95a9bc lint: fix whitespace/spelling in README 2025-01-10 08:30:28 +00:00
Michael Vogt
ffc676e3d0 main: help golang-ci to find the "main" symbol in the tests 2025-01-10 08:30:28 +00:00
Michael Vogt
c1454864c4 pre-commit: bump golangci-lint to v1.63.1 to fix crash when importing slices 2025-01-10 08:30:28 +00:00
Michael Vogt
25043b2e70 workflow: switch to composite action to fix go/pytest
The go/pytest tests were broken because the reusable workflow
is not quite the right construct. We need the "composite action".
2025-01-10 08:30:28 +00:00
Michael Vogt
573f56a6ec workflow: rename .yml -> .yaml 2025-01-10 08:30:28 +00:00
Michael Vogt
692a487fe9 test: fix integration test 2025-01-10 08:30:28 +00:00
Michael Vogt
80cadaf291 repos: lookup <buildin>, /{etc,usr/share}/image-builder/repositories
This commit switches the default repositories to use the build-in
ones from images PR#1112. It is still possible to override using
`/etc/image-builder` and `/usr/share/image-builder` or `--datadir`.

This is implicitly tested via the container test that no longer
includes the files from osbuild-composer in the container.
2025-01-09 16:17:50 +00:00
Michael Vogt
6d9e91eb3c go.sum: update to latest images lib to get embeded repos 2025-01-09 16:17:50 +00:00
schutzbot
c1b1658929 Post release version bump
[skip ci]
2025-01-08 08:29:09 +00:00
Michael Vogt
d727d9aa76 manifestgen: port to the new images manifest seed
This moves to the new images Manifest() API from PR#1107.
2025-01-08 06:53:12 +00:00
Michael Vogt
59e6ce298a go.mod: update to images@v0.108.0 2025-01-08 06:53:12 +00:00
Florian Schüller
c408577b2d pre-commit: introduce make lint
Also make the linters part of the github actions.
2025-01-07 12:29:58 +00:00
Florian Schüller
734c132500 prepare all syntax for linters and spellchecks 2025-01-07 12:29:58 +00:00
schutzbot
b932d218e3 Post release version bump
[skip ci]
2024-12-25 08:28:26 +00:00
Simon Steinbeiss
51e4171caf actions: Add pr-best-practices workflow
This commit adds the pr-best-practices check, which prevents pull
requests without descriptions being merged and which allows developers
to quickly create Jira Tasks based on the /jira-epic command in pull
request descriptions or comments.
2024-12-20 15:41:37 +00:00
schutzbot
69b6ed5857 Post release version bump
[skip ci]
2024-12-20 14:30:01 +00:00
dependabot[bot]
02cb63b8fd build(deps): bump docker/login-action from 2 to 3
Bumps [docker/login-action](https://github.com/docker/login-action) from 2 to 3.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-20 14:27:26 +00:00
schuellerf
6f26427ddf Post release version bump
[skip ci]
2024-12-20 14:05:26 +00:00
Florian Schüller
cad909e77a github/workflows/release.yml: enable creating release artifacts 2024-12-20 13:59:49 +00:00
Florian Schüller
be1cfec923 github/workflows/create-tag: initial version
Helper to create a tag for a new release.
2024-12-20 13:30:45 +00:00
Florian Schüller
99af073fa3 image-builder-cli.spec: fix building centos stream 10
Using the same approach as in osbuild-composer.
2024-12-20 12:33:48 +00:00
Florian Schüller
cdff269270 github/workflows: introduce release action
Using staging branch for now, due to the new
release_artifacts.
2024-12-20 08:08:59 +00:00
dependabot[bot]
c45b5e978f build(deps): bump the go-deps group with 2 updates
Bumps the go-deps group with 2 updates: [github.com/osbuild/images](https://github.com/osbuild/images) and [github.com/stretchr/testify](https://github.com/stretchr/testify).


Updates `github.com/osbuild/images` from 0.98.0 to 0.106.0
- [Release notes](https://github.com/osbuild/images/releases)
- [Commits](https://github.com/osbuild/images/compare/v0.98.0...v0.106.0)

Updates `github.com/stretchr/testify` from 1.9.0 to 1.10.0
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.9.0...v1.10.0)

---
updated-dependencies:
- dependency-name: github.com/osbuild/images
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-deps
- dependency-name: github.com/stretchr/testify
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-deps
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-20 05:21:56 +00:00