Commit graph

1059 commits

Author SHA1 Message Date
Ondřej Budai
62b3cd68d7 makefile: change the indentation in release target
c886e1be changed the indentation of the NEWS file. This commit changes also
the indentation in the news template produced by `make release`.

Also - in front of the Location was changed to — to please David.
2020-05-28 00:31:30 +02:00
Ondřej Budai
7e12a55455 news: Add missing bcl from the version 12 2020-05-28 00:31:30 +02:00
Tom Gundersen
d9ae1f9204 rpmmd/FetchMedata: fix checksum map
This is currently only used in tests. We broke backwards compatibility
when we split the repo name and the repo id. The tests expect this to be
indexed by name, not index.

This should probably be reworked or dropped, for now revert to the old
behavior.

Signed-off-by: Tom Gundersen <teg@jklm.no>
2020-05-28 00:23:54 +02:00
Jacob Kozol
04e3d0ba7b osbuild: update submodule to 9cbedc049671bf2a2eb50caa2759d91acbf7c7f5 2020-05-28 00:23:54 +02:00
Jacob Kozol
2faf8b3861 test/cases: update distro tests
The distro tests will continue to use the internal repos. But, the
manifest should use the new urls format and have the url inside a
map.
2020-05-28 00:23:54 +02:00
Tom Gundersen
b2cd76ef69 rpmmd/RHSMSecrets: don't store as global variable
Read in when instantiating the rpmmd object, and cache it there instead.

Signed-off-by: Tom Gundersen <teg@jklm.no>
2020-05-28 00:23:54 +02:00
Tom Gundersen
a4ebf1cd28 rpmmd/repository: reinstate metadata_expire
This is saved on disk, so needs to be read in and passed on.

Signed-off-by: Tom Gundersen <teg@jklm.no>
2020-05-28 00:23:54 +02:00
Tom Gundersen
116a7605dd rpmmd: make the on-disk format match the use
The 'id' field in the json files is exposed as 'name' in the weldr API,
and that is now its only use. Rename it to match.

Signed-off-by: Tom Gundersen <teg@jklm.no>
2020-05-28 00:23:54 +02:00
Tom Gundersen
48079b3a4d rpmmd/RepoConf: rename Id to Name
This is how it is used in the rest of the code, as a name to represent
the repository in the weldr API. Rename to match its use, and avoid
confusion with the ID passed to dnf-json, which is not the same.

Signed-off-by: Tom Gundersen <teg@jklm.no>
2020-05-28 00:23:54 +02:00
Tom Gundersen
00483101c6 rpmmd/Depsolve: rely on the RepoID being the offset into the array
We don't have to go via a map, and also don't have to rely on the ID's
in the passed in repos are the same, by instead relying on RepoID being
the offset into the passed in repos array, as set in the previous patch.

Signed-off-by: Tom Gundersen <teg@jklm.no>
2020-05-28 00:23:54 +02:00
Tom Gundersen
3edada6664 rpmmd/toDNFRepoConfig: use an increasing counter for the ID
The ID needs only be unique in the calling function, so replace the UUID
with an increasing counter.

Signed-off-by: Tom Gundersen <teg@jklm.no>
2020-05-28 00:23:54 +02:00
Jacob Kozol
5938276d3b osbuild: update files source for rhsm
osbuild manifest's urls should now contain a url and any secrets. The
secrets should contain a name.
2020-05-28 00:23:54 +02:00
Jacob Kozol
387e8c40aa repos: switch rhel-8 repos from nightlies to cdn
The rhel-8 repositories json file is updated to use the cdn instead of
the nightly vpn. Systems running RHEL 8 must have a subscription now.
2020-05-28 00:23:54 +02:00
Jacob Kozol
d19ffb4eb9 rpmmd: add ssl fields to RepoConfig
rpmmd now contains three repo config structs. RepoConfig is for use
throughout osbuild-composer. repository is for reading from our
internal json repository files before creating a RepoConfig.
dnfRepoConfig is is for use within rpmmd and it matches what dnf-json
expects from a repo.

Repos now contain support for rhsm. In order to connect to rhel's
cdn, dnf must pass an sslcacert, sslcakey, and sslclientcert. When a
repo is used for fetching metadata or depsolving it is checked for
rhsm secrets. If secrets are needed they are retrieved from the host
system. Packages requiring rhsm are marked as requiring
"org.osbuild.rhsm" secrets.
2020-05-28 00:23:54 +02:00
Jacob Kozol
8750dc467b dnf-json: add ssl certs to repo
If a repo passed to dnf-json contains an sslcacert, sslclientkey, or
sslclientcert then dnf-json will include those values in that repo in
the dnf base.
2020-05-28 00:23:54 +02:00
Major Hayden
18fe05f686 CI: Use RHEL 8 CDN subscribed instance
Replace RHEL 8.2 nightly images with a RHEL 8 CDN subscribed instance so
we can test with the exact content a customer would have.

Signed-off-by: Major Hayden <major@redhat.com>
2020-05-28 00:22:25 +02:00
Lars Karlitski
5299e7e242 image-types/rhel8: add kvm, azure, and vmware
These are fairly bare-bones right now, but include them for
completeness.
2020-05-27 22:47:14 +02:00
Lars Karlitski
02c913cf92 image-types/rhel8: streamline requirements
We don't need to specify these images again, but only explain some
non-obvious choices about deviation from the requirements.
2020-05-27 22:47:14 +02:00
Lars Karlitski
b2fc0a384c image-types: remove owners 2020-05-27 22:47:14 +02:00
Tom Gundersen
e66368b099 distro: drop fedora-30
We never shipped into fedora-30 and it is now EOL.

Signed-off-by: Tom Gundersen <teg@jklm.no>
2020-05-27 16:20:35 +02:00
Tom Gundersen
e2c14b9fe6 distro: drop legacy image types
We do not properly test, and do not have properly defined use-cases for
the ext4-filesystem, partitioned-disk, nor tar image types. Drop them to
focus on delivering the things we car properly test.

Signed-off-by: Tom Gundersen <teg@jklm.no>
2020-05-27 16:20:35 +02:00
Lars Karlitski
e06076ed8c worker: add JobArtifact() and DeleteJobArtifacts()
This allows removing the `artifactsDir` from `weldr.API`. It makes more
sense to deal with that directory in one place only.
2020-05-27 16:16:05 +02:00
Major Hayden
b452a31eed Remove CacheDirectory for remote worker
Setting the cache directory to `/var/cache` causes problems on the
remote worker startup and it needs to be removed.

Signed-off-by: Major Hayden <major@redhat.com>
2020-05-26 15:46:29 -05:00
Major Hayden
0921643fa3 Add health check at /status
There are times where it would be good to monitor that osbuild-composer
is up and running. Add a very simple status check that always returns
200/OK. This can be expanded later to verify that other parts of
osbuild-composer are working properly.

Signed-off-by: Major Hayden <major@redhat.com>
2020-05-26 15:34:16 -05:00
Lars Karlitski
e503b0a4d4 worker: pass a temporary store to osbuild
When fdd753615 added `--output-directory` to the invocation of osbuild,
it also removed `--store`.

This was a mistake: osbuild's default store is `.osbuild`, which is not
what we want. Restore the old behavior of passing a temporary directory.
2020-05-26 22:16:52 +02:00
Lars Karlitski
b065d8c304 worker: handle error in defer
There's not much to do when removing the temporary directory fails.
Print a message so that people have the chance to notice.
2020-05-26 22:16:52 +02:00
Lars Karlitski
a1cf3984dc worker: introduce job artifact directory
The `jobs/:job_id/builds/:build_id/image` route was awkward: the
`:jobid` was actually weldr's compose id and `:build_id` was always `0`.

Change it to `jobs/:job_id/artifacts/:name`, where `:job_id` is now a
job id, and `:name` is the name of the artifact to upload. In the
future, it could support uploading more than one artifact.

This allows removing outputs from `store`, which is now back to being a
pure JSON-store. Take care that `weldr` returns (and deletes) images
from the new (or for backwards compatibility, the old) location.

The `org.osbuild.local` target continues to exist as a marker for the
worker to know whether it should upload artifacts.
2020-05-26 10:42:20 +02:00
Tom Gundersen
8f7a9b3439 weldr/compose: add support for ostree-specific options
Similarly to how some image types accept a size-argument, some image
types require  ostree-specific options. For now this is only used by
Fedora IoT on Fedora 32.

composer-cli nor cockpit-composer currently has the ability to pass in
these options, but the change is backwards compatible and existing image
types are unaffected. If the options are omitted for image types that
require them, sensible defaults are chosen.

Signed-off-by: Tom Gundersen <teg@jklm.no>
2020-05-25 22:37:29 +02:00
Tom Gundersen
b0cfec767a distro/f32: add iot-commit image type
This produces a Fedora IoT commit tarball, based on
https://github.com/gicmo/ostree-osbuild-demo and the fedora 32 specific
configuration found at
https://pagure.io/fedora-iot/ostree/c/465c8a2c1d1c0cf4b762477af87fb1d82c8ee002?branch=master

The usbguard package is excluded due to some SELinux failure that
remains to be resolved.

Signed-off-by: Tom Gundersen <teg@jklm.no>
2020-05-25 22:37:29 +02:00
Tom Gundersen
77ea9d67bf distro/f32: pass ImageOptions to assemblers
Prepare for assemblers needing more image-type specific options.

This is not a functional change.

Signed-off-by: Tom Gundersen <teg@jklm.no>
2020-05-25 22:37:29 +02:00
Tom Gundersen
0b3702cb19 distro/Manifest: generalize the size argument
When generating an osbuild manifest for an image type, we take a
customizations struct, which specifies the image-type-independent
customizations to apply. We also take the size argument, which is
specific to the image build and not part of the blueprint.

Introduce a new argument ImageOptions, which for now just wraps the size
argument. These options are specific to the image build/type, and
therefore does not belong with the other customizations.

For now this is a non-functional change, but follow-up commits will
introduce more types of image options.

Signed-off-by: Tom Gundersen <teg@jklm.no>
2020-05-25 22:37:29 +02:00
Tom Gundersen
a544fa7eb6 osbuild: add rpm-ostree stage
This adds the wrapper object and a simple test for the rpm-ostree stage.

See the osbuild documentation for details.

Signed-off-by: Tom Gundersen <teg@jklm.no>
2020-05-25 22:37:29 +02:00
Tom Gundersen
1c9cb20b77 osbuild: add ostree.commit assembler
This adds the wrapper object and a simple test for the ostree.commit
assembler.

See the osbuild documentation for details.

Signed-off-by: Tom Gundersen <teg@jklm.no>
2020-05-25 22:37:29 +02:00
Tom Gundersen
fd7320aaa1 osbuild/fstab: add filesystem label support
Exactly one of the UUID or the label must be set. The helpers are kept
the same and only supports the UUID for now, but these should likely be
dropped in favor of open-coding the structs anyway.

We do not enforce that the UUID or label is set, but osbuild will.

Signed-off-by: Tom Gundersen <teg@jklm.no>
2020-05-25 22:37:29 +02:00
Lars Karlitski
8e0dd790b7 weldr: messages → msgs in status route
composer-cli expects `msgs`, not `messages`, and throws an exception if
it doesn't exist:

    https://github.com/weldr/lorax/blob/master/src/composer/cli/status.py#L52

It is not used anywhere else, so this is a safe change.
2020-05-25 16:20:47 +02:00
Alexander Todorov
7c0d384fde tests: split compose sanity tests and add more. Refs #356, #615
`quiet` parameter for runComposerCLIPlainText is not actually used
anywhere so I've removed it
2020-05-25 12:13:26 +03:00
Alexander Todorov
8ab1712796 tests: update name of test func, Refs #356
composer-cli sources list is already covered in the existing test
2020-05-25 12:13:26 +03:00
Alexander Todorov
d8de74a7d1 tests: add runComposerCLIPlainText(). Refs #356
see this comment from @teg:
https://github.com/osbuild/osbuild-composer/issues/356#issuecomment-630766947

Most of the calls within these tests should be converted to
use the plain text version. However some functions need the
JSON b/c they parse it and return a response, e.g. startCompose(),
getComposeStatus().
2020-05-25 12:13:26 +03:00
Major Hayden
eca999be4a
Add sudo to dnf list command
Bringing over the fix from ansible-osbuild
2020-05-22 14:03:46 -05:00
Major Hayden
ac11ea00f0 Remove RPM builds in GitHub Workflows
We are now building RPMs via mock in Jenkins, so we don't need these RPM
build jobs in GitHub Workflows.

Signed-off-by: Major Hayden <major@redhat.com>
2020-05-22 07:44:44 -05:00
Tom Gundersen
cc231e0ed1 distro/rhel-8: merge all the RHEL-8 minor releases into one
As it turns out, the default expectation is not to distinguish between
these. We will now produce whatever is the most recent minor release by
default, and image tests will still be pinned at a given snapshot to be
reproducible.

Signed-off-by: Tom Gundersen <teg@jklm.no>
2020-05-21 17:57:28 +02:00
Major Hayden
1e29ab291e CI: Add mock builds for RHEL 8.3
Now that mock building seems to be stable, let's start building RPMs for
RHEL 8.3 so we can onboard it for base/image testing soon.

Signed-off-by: Major Hayden <major@redhat.com>
2020-05-21 08:56:53 -05:00
Major Hayden
d92a742f28 Build in a mock chroot first
Build the RPMs in a mock using a simple script so that ansible-osbuild
can focus fully on deployment rather than compiling RPMs.

Signed-off-by: Major Hayden <major@redhat.com>
2020-05-20 23:11:16 +02:00
Brian C. Lane
3c312b9bbd github: Fix go test coverage report
The go test coverage report does not cover other packages unless you
list them with the -coverpkg= argument. This results in an incomplete
coverage report with oddly missing lines.

This commit lists all of the packages so that they will all be included
when running the tests and gathering the results.
2020-05-20 22:58:29 +02:00
Major Hayden
62f61d34c2 CI: Skip AWS test if bucket missing
The osbuild CI uses the osbuild-composer CI testing playbooks but
there's no need to run the EC2 import for osbuild's CI. Add a check in
the Ansible playbook to look for the AWS_BUCKET environment variable and
skip the EC2 import if the bucker variable is missing.

Signed-off-by: Major Hayden <major@redhat.com>
2020-05-20 14:01:00 -05:00
Major Hayden
63c59b2ca1 CI: Run EC2 tests for all instances
Now that EC2 image testing is working well for Fedora 32, enable it for
all of the distros. Also, make it less special and allow it to run with
the other image tests.

Remove the `ami-boot` test from the list of regular image test cases
since it will be thoroughly tested via an import into AWS.

Signed-off-by: Major Hayden <major@redhat.com>
2020-05-20 12:01:38 -05:00
Lars Karlitski
e4df938152 schutzbot: remove all timeouts except the global one
When we ran into these timeouts, they were always false negatives. It is
hard to find right values for them.

If someone does introduce a bug that hangs one of the tests, we still
have the global timeout.

Fixes #648
2020-05-20 07:21:13 -05:00
Lars Karlitski
b0daa82fad distribution: set permissions on api sockets
This fixes permission for the weldr sockets: allow users in group
`weldr` to access them, but nobody else. Also add this group to the
sysusers file.

Fixes #646
2020-05-20 01:55:26 +02:00
Major Hayden
1d16dc4d73 Remove AWS snapshot import timeout
Importing an image into an EBS snapshot can sometimes take a long time.
The customer experience for a timeout is not great.

Allow the import to continue running for as long as needed without
timing out. This allows a customer to monitor the process of their
import until it has a success or failure status.

Fixes osbuild/osbuild-composer#632.

Signed-off-by: Major Hayden <major@redhat.com>
2020-05-19 22:34:04 +02:00
Ondřej Budai
eadd9be306 store: remove the last traces of result.json
GetImageBuildResult() method is not called anywhere, so we can drop it. As
it was the only reader of result.json file, we can also drop all the code
which wrote to that file.
2020-05-19 22:20:20 +02:00