Commit graph

2009 commits

Author SHA1 Message Date
sanne
a825b87c35 distribution: Add OCP template for clouddot 2021-04-28 14:07:23 +02:00
Xiaofeng Wang
a2514dbc1c test: Add installer test on BIOS VM 2021-04-27 22:31:19 +08:00
Alexander Todorov
d12565882a tests: Define who's responsible for what on the team
because we're expecting to onboard other people as well and we need
to start keeping track of this.
2021-04-27 15:52:59 +03:00
Alexander Todorov
132c082464 tests: Document examples of good/bad BZs for qa_ack+ 2021-04-27 15:52:59 +03:00
Alexander Todorov
ef0105945a tests: Revert a lorax patch
BZ 1843704 has been fixed and shipped in 8.3. We shouldn't need this
patch anymore!
2021-04-22 15:03:42 +03:00
Tomas Hozza
f570cf51b7 tools/image-info: don't convert raw images
After change to image-info [1], which shows the format version for qcow2
images, the `image-format` changed from string to a dictionary. However
the `open_image()` function still compares it with string. This causes
`raw` images to be converted by the script again to `raw` format. This
change fixes the issue, so that `raw` images are not converted, but used
as they are.

[1] 5937b9adca

Signed-off-by: Tomas Hozza <thozza@redhat.com>
2021-04-21 17:57:48 +02:00
Alexander Todorov
140ae9f75d Add traling newline to test manifest. Closes #1201
The rest were fixed in 59d2f505c before this file was added.
2021-04-19 18:11:58 +03:00
Xiaofeng Wang
bd07936367 test: Install and run ostree commit on UEFI VM
Update ostree-ng.sh to install and run ostree commit on UEFI VM
ostree.sh keeps on BIOS VM. Both of BIOS and UEFI are covered.
check_ostree.yaml ansible playbook has to be updated to support
both BISO and UEFI
2021-04-19 21:13:16 +08:00
Ondřej Budai
cf73edd2d2 mockbuild: use s3cmd put instead of sync to speed up the RPM upload
s3cmd sync actually downloads metadata for all objects in a s3 bucket.
We have built a lot of RPMs, thus this takes 5 minutes on AWS and 25 minutes
on my laptop (!!!).

Let's use recursive put instead. This doesn't delete any files on the remote
side. As we upload RPMs only once, this also shouldn't fail on "the
object already exists". Using this method, we should be able to upload the
RPMs in seconds.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-04-15 14:39:09 +02:00
Xiaofeng Wang
32dd9cb614 test: Simply .ks and add edge repo setup in .ks
1. Make .ks as simple as possible. only keep must-have options
2. Add edge repo setup in .ks instead of after installation
2021-04-14 16:08:55 +08:00
Ondřej Budai
260fdb053f ci: add GitLab CI
This commit adds an experimental GitLab-based CI. See the PR for more
information.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-04-14 09:18:06 +02:00
Ondřej Budai
e7b3063f7e test: properly kill journalctl
sudo journalctl -af -n 1 -u "${WORKER_UNIT}" &
WORKER_JOURNAL_PID=$!

In this snippet, WORKER_JOURNAL_PID is set to the PID of the sudo process.
Sudo doesn't propagate any signals - therefore the child process of sudo
(journalctl in this case) isn't killed when a signal is sent to the parent.

Use pkill -P instead which kills all processes where sudo is the parent.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-04-14 09:18:06 +02:00
Ondřej Budai
8f91e236f8 ci/deploy: add fallback variable for GitLab
GitLab CI doesn't use GIT_COMMIT, therefore it's needed to have a fallback
to CI_COMMIT_SHA.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-04-14 09:18:06 +02:00
Ondřej Budai
d28c41b844 test: subscribe only RHEL instances
GitLab CI passes secrets to all jobs. Thus, we need to make sure that
only RHEL is being subscribed.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-04-14 09:18:06 +02:00
Ondřej Budai
5fd2ad2337 mockbuild: allow inserting an extra path segment
GitLab CI builds its own rpms and thus it must be use a different path.
This commit modifies mockbuild.sh and deploy.sh to be able to add an
extra path segment into the path so GitLab can use a different path.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-04-14 09:18:06 +02:00
Xiaofeng Wang
df74343eb8 test: Update test to align with customer scenario
According to Ben's suggestion, test has been updated to aligin with
customer scenario.
1. Setup ostree prod repo, building installer and edge upgrade
will be from prod repo
2. Containers for building installer and edge upgrade will be
running as stage repo
3. Before edge system update, prod repo will pull update content
from stage repo, make static-delta and summary
2021-04-12 18:37:42 +08:00
Tomas Hozza
b7ceec4867 distro: remove unused field from distribution struct
The `distribution` struct defined in multiple distributions contained
unused `imageTypes` field. Remove it to simplify code.

Signed-off-by: Tomas Hozza <thozza@redhat.com>
2021-04-10 19:53:07 +01:00
Ondřej Budai
973b4b2714 distro/rhel84: build qcow2 images with compat=0.10
By default, `qemu-img convert` creates qcow2 images usable in qemu 1.1 and
newer. RHEL 8 guest images are meant to be bootable on RHEL 6 though.
Unfortunately, RHEL 6 has qemu 0.12, therefore these images cannot be used
there.

To fix this, we need to use the new qcow2_compat option in qemu assembler
to override the default compat version and make qcow2 images that can be used
in qemu 0.10 and newer.

For this, we need osbuild 28 that isn't yet available in of any of
downstreams, therefore we need to pin it everywhere.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-04-10 19:18:13 +01:00
Christian Kellner
5937b9adca image-info: show format version for qcow2
Change the "image-format" from a string to a dict, with a "type":
$value entry, where $value contains the previous plain string
data.
Additionally, include the qcow2 format version, if the given
image is indeed a qcow2.
Adapt all manifest test accordingly (partly done by Ondřej)

Python 3 script used for conversion of manifest tests:
import os
import json

for name in os.listdir(os.getcwd()):
    if not name.endswith(".json"):
        continue
    print(name)
    with open(name, "r") as old:
        data = json.load(old)
        info = data.get("image-info", {})
        format = info.get("image-format")
        if not format:
            continue
        info["image-format"] = {
            "type": format
        }
        if format != "qcow2":
            continue
        info["image-format"]["compat"] = "1.1"
        with open(name + ".new", "w") as new:
            json.dump(data, new, indent=2)
            new.write("\n")
            new.flush()
    os.rename(name+".new", name)

test: use the new image-info format in all test manifests

The previous commit converted only qcow2 and openstack manifests but this change
is actually needed for all manifests produced by the qemu assembler.

Co-Developed-by: Ondřej Budai <ondrej@budai.cz>
2021-04-10 10:06:11 +02:00
Xiaofeng Wang
41fdfbd168 test: Add --ref for non-default ref
Because test uses 'test/rhel/8/x86_64/edge', building rhel-edge
image should include --ref arg
2021-04-08 16:26:00 +08:00
Xiaofeng Wang
3a0d1bb2de test: Remove selinux work around and Schutzfile osbuild pinning
Since selinux fix has been release in osbuild 27.1 and it's in
nightly compose. It's time to remove selinux work around and Schutzfile
osbuild pinning
2021-04-07 19:57:06 +01:00
Xiaofeng Wang
87921f0319 test: Replace API calling with composer-cli
composer-cli-28.14.58 is in nightly compose of RHEL 8.4, it's time
to replace API calling with composer-cli
2021-04-07 11:43:36 +02:00
Ondřej Budai
54a458af5c test: replace genisoimage with mkisofs
genisoimage might be removed from RHEL 9. The users are advised to switch
to mkisofs tools from the xorriso package. It should be a drop-in replacement.

The same change was recently done by libguestfs:

efb8a766ca
2216ab2e32

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-04-02 14:21:29 +02:00
Martin Sehnoutka
6ed4c59010 github: mention the guides in the pull request template
The template mentioned only "adequate" documentation which can be
interpreted in many ways. Mention the news/unreleased directory and the
guides explicitly and include links for convenience.
2021-04-02 14:13:40 +02:00
Ondřej Budai
f977a3703b schutzbot: do not run the nightly test for the EL9 integration test
This was probably forgotten in the original commit that add EL9 tests.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-04-02 09:51:16 +02:00
Ondřej Budai
22957bf963 schutzbot: disable nightly testing on main
See the added comment.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2021-04-02 09:51:16 +02:00
Tomas Hozza
c91f3b11f6 Rename all occurrences of "Compute Node" to "Compute Engine"
This is an error, there is no such thing as "Compute Node" in GCP.

Signed-off-by: Tomas Hozza <thozza@redhat.com>
2021-04-01 20:12:39 +02:00
Tomas Hozza
e799f752be GCP: clean up resources after canceled image import
Add method to fetch Cloudbuild job log.

Add method to parse Cloudbuild job log for created resources. Parsing is
specific to the Image import Cloudbuild job and its logs format. Add
unit tests for the parsing function.

Add method to clean up all resources (instances, disks, storage objects)
after a Cloudbuild job.

Modify the worker osbuild job implementation and also the GCP upload CLI
tool to use the new cleanup method CloudbuildBuildCleanup().

Keep the StorageImageImportCleanup() method, because it is still used by
the cloud-cleaner tool. There is no way for the cloud-cleaner to figure
out the Cloudbuild job ID to be able to call CloudbuildBuildCleanup()
instead.

Add methods to delete Compute instance and disk.

Add method to get Compute instance information. This is useful for
checking if the instance has been already deleted, or whether it still
exists.

Signed-off-by: Tomas Hozza <thozza@redhat.com>
2021-04-01 20:12:39 +02:00
Tomas Hozza
6d51d285cf GCP: accept context from the caller in all methods
Modify all relevant methods in the internal GCP library to accept
context from the caller.

Modify all places which call the internal GCP library methods to pass
the context.

Signed-off-by: Tomas Hozza <thozza@redhat.com>
2021-04-01 20:12:39 +02:00
Alexander Todorov
4c3a30f035 tests: Don't execute image tests on PRs. Closes #962
- image_tests.sh is already being executed from the osbuild
  repository by installing osbuild-composer-tests & calling the
  script directly
- in this repo we've got distro_test.go::TestDistro_Manifest() and
  distro_test_common.TestDistro_Manifest() which compare the static
  manifests stored in this repository with the ones generated
  dynamically by the code base. This is executed via `go test` and
  runs against all available json files.

The above two items cover the part where we want to make sure that
the resulting content is what we expect.

Additionally the existing integration tests cover the part where
we build images, upload them to a cloud vendor and boot a new VM
from the image.
2021-03-31 09:34:41 +03:00
Xiaofeng Wang
0bbc83b6dc test: Update test to cover two more scenarios:
1. Test --url arg following by URL without tailling slash
2. Test ref begining with /
3. But we still have "regular" ref and --url arg test
2021-03-30 00:22:04 +01:00
Achilleas Koutsou
2b5187814a docs/news: add news item for fix 2021-03-30 00:22:04 +01:00
Achilleas Koutsou
c1355c2d06 weldr: validate external ostree ref
Validates the ref only when supplied through the API (i.e., doesn't
validate built-in defaults).
Regex matches ostree internal and cockpit-composer UI validation.
Added test case to compose API test.
2021-03-30 00:22:04 +01:00
Achilleas Koutsou
b0ca1a6919 weldr: add tests for ostreeResolveRef()
Both valid and invalid test cases using a mock http handler.

An old test is also adjusted to conform to the new URL parsing.
2021-03-30 00:22:04 +01:00
Achilleas Koutsou
91e5b6bf9b weldr: improve ostree ref and URL handling
Replacing repeated calls to u.Parse() with path.Join() on the URL's
path. This method handles certain edge cases differently:
- location not ending in / (http://example.org/repo):
    - with the old method, the subsequent parsing of "refs/heads/" would
      overwrite the path segment of the original URL, resulting in
      http://example.org/refs/heads
    - with the new method, "refs/heads" is appended to the location and
      a / is added between the two parts if necessary.
- ref begins with / (location: http://example.org/repo/, ref: /ref):
    - with the old method, the final parsing of ref would overwrite the
      path segment of the URL, resulting in http://example.org/ref
    - with the new method, the ref is appended and a / is added between
      parts where necessary (same as above).
- ref is a full URL
(location: http://example.org/repo/, ref: http://example.com):
    - with the old method, u.Parse(ref) would completely overwrite the
      existing URL in u.
    - with the new method, the ref is added as a sanitised URL path
      resulting in http://example.org/refs/heads/http:/example.com.

The last one will probably result in an error in either case, but it's
probably less incorrect to coerce the ref argument into a path.

The response status code of the GET request is checked as well to
provide an appropriate error message if it is not 200 (OK).

If the data in the response is not a valid hex string, the error message
from the DecodeString() method isn't returned directly and it is
replaced by a more useful message. The original error message is
discarded.
2021-03-30 00:22:04 +01:00
Brian C. Lane
1c9ad19a42 tests: Use nicer test strings for json_test.go
Using %v doesn't include the field names, making it harder to debug the
giant block of text that a failed test prints. Use %#v instead.
2021-03-30 00:19:30 +01:00
Brian C. Lane
9e1e5bf326 tests: Add Packages to results of '*FromV0' functions in json_test.go 2021-03-30 00:19:30 +01:00
Brian C. Lane
a0a06b1786 store: Add Packages to json.go
This adds support for Packages to the store's json structures so that
they will be preserved across restarts of the osbuild-composer service.
Reading the old format will result in an empty []rpmmd.PackageSpec so
this does not require a composeV1 structure.
2021-03-30 00:19:30 +01:00
Brian C. Lane
ca9bb52f7e osbuild-store-dump: Use bp1 with iot image type
Previously it was not using the correct blueprint with the iot image
type. Switch to using bp1 which is the correct blueprint.
2021-03-30 00:19:30 +01:00
Brian C. Lane
ad3e43dc90 osbuild-store-dump: Add Packages support
The compose now saves the list of packages used to create the manifest.
2021-03-30 00:19:30 +01:00
Brian C. Lane
d808376998 tests: This adds tests for Compose.Packages
This adjusts current tests to account for the new struct member, and
tests osbuild-composer with empty results (eg. existing system will not
have this stored) and with the sets populated by test data.
2021-03-30 00:19:30 +01:00
Brian C. Lane
580dda5cd9 weldr: Save dependencies in the Store and return them in the compose/info result
This adds the compose's dependency list which was previously missing
from the osbuild-composer implementation of the WELDR API.

The dependencies used for the compose are saved, at compose time, in the
store. They are returned as part of the compose/info results, the 'deps'
field.
2021-03-30 00:19:30 +01:00
Brian C. Lane
72c2488d7c store: Store and return compose dependencies
This adds a list of the depsolved packages to the store's Compose
struct. It is indexed by compose UUID and contains a list of
PackageSpecs that were used to construct the compose. This can assist in
auditing of the composes, or be used to duplicate the compose.
2021-03-30 00:19:30 +01:00
Brian C. Lane
f9bfd17928 weldr: Return dependencies for /api/v1/modules/info
Previously the API handler was only checking for a match to
/api/v0/modules/info, this adds a test for v1 and a test to make sure it
works the same.
2021-03-28 03:08:07 +01:00
Jozef Mikovic
dc31fb3f21 repositories: use snapshots for rhel90 repos 2021-03-26 14:05:20 +00:00
Jozef Mikovic
165ecafeb2 test: use DISTRO_CODE to select tests case
Using DISTRO_CODE simplifies test case selection and allows to test
different distro than the one test is running on.
This is used to run tests for RHEL 9.0 on F33 or RHEL 8.4
2021-03-26 14:05:20 +00:00
Jozef Mikovic
af1a2b5cd4 distro/rhel90: add unit tests 2021-03-26 14:05:20 +00:00
Jozef Mikovic
295bc09592 osbuild: add support for resolv-conf stage 2021-03-26 14:05:20 +00:00
Jozef Mikovic
3e566398ec news: add entry about rhel90 support 2021-03-26 14:05:20 +00:00
Jozef Mikovic
a9e8ea2a21 distro/rhel90: add RHEL9 support
osbuild-composer can now build rhel 9.0 images.
Added support is limited to qcow2 image type.
2021-03-26 14:05:20 +00:00