On Mon, 29 Jan 2024 at 03:04, <pet...@redhat.com> wrote: > > From: Fabiano Rosas <faro...@suse.de> > > The migration tests have support for being passed two QEMU binaries to > test migration compatibility. > > Add a CI job that builds the lastest release of QEMU and another job > that uses that version plus an already present build of the current > version and run the migration tests with the two, both as source and > destination. I.e.: > > old QEMU (n-1) -> current QEMU (development tree) > current QEMU (development tree) -> old QEMU (n-1) > > The purpose of this CI job is to ensure the code we're about to merge > will not cause a migration compatibility problem when migrating the > next release (which will contain that code) to/from the previous > release. > > The version of migration-test used will be the one matching the older > QEMU. That way we can avoid special-casing new tests that wouldn't be > compatible with the older QEMU. > > Note: for user forks, the version tags need to be pushed to gitlab > otherwise it won't be able to checkout a different version. > > Signed-off-by: Fabiano Rosas <faro...@suse.de> > Link: https://lore.kernel.org/r/20240118164951.30350-3-faro...@suse.de > Signed-off-by: Peter Xu <pet...@redhat.com> > --- > .gitlab-ci.d/buildtest.yml | 60 ++++++++++++++++++++++++++++++++++++++ > 1 file changed, 60 insertions(+) > > diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml > index e1c7801598..f0b0edc634 100644 > --- a/.gitlab-ci.d/buildtest.yml > +++ b/.gitlab-ci.d/buildtest.yml > @@ -167,6 +167,66 @@ build-system-centos: > x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu > MAKE_CHECK_ARGS: check-build > > +# Previous QEMU release. Used for cross-version migration tests. > +build-previous-qemu: > + extends: .native_build_job_template > + artifacts: > + when: on_success > + expire_in: 2 days > + paths: > + - build-previous > + exclude: > + - build-previous/**/*.p > + - build-previous/**/*.a.p > + - build-previous/**/*.fa.p > + - build-previous/**/*.c.o > + - build-previous/**/*.c.o.d > + - build-previous/**/*.fa > + needs: > + job: amd64-opensuse-leap-container > + variables: > + IMAGE: opensuse-leap > + TARGETS: x86_64-softmmu aarch64-softmmu > + before_script: > + - export QEMU_PREV_VERSION="$(sed 's/\([0-9.]*\)\.[0-9]*/v\1.0/' > VERSION)" > + - git checkout $QEMU_PREV_VERSION > + after_script: > + - mv build build-previous
There seems to be a problem with this new CI job. Running a CI run in my local repository it fails: https://gitlab.com/pm215/qemu/-/jobs/6075873685 $ export QEMU_PREV_VERSION="$(sed 's/\([0-9.]*\)\.[0-9]*/v .0/' VERSION)" $ git checkout $QEMU_PREV_VERSION error: pathspec 'v8.2.0' did not match any file(s) known to git Running after_script Running after script... $ mv build build-previous mv: cannot stat 'build': No such file or directory WARNING: after_script failed, but job will continue unaffected: exit code 1 Saving cache for failed job I don't think you can assume that private forks doing submaintainer CI runs necessarily have the full set of tags that the main repo does. I suspect the sed run will also do the wrong thing when run on the commit that updates the version, because then it will replace "9.0.0" with "9.0.0". thanks -- PMM