|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] automation: test.yaml: Introduce templates to reduce the overhead
On Mon, 24 Oct 2022, Michal Orzel wrote:
> Hi Stefano,
>
> On 21/10/2022 23:42, Stefano Stabellini wrote:
> >
> >
> > On Wed, 19 Oct 2022, Michal Orzel wrote:
> >> At the moment, we define lots of test jobs in test.yaml, that make use
> >> of the same configuration sections like variables, tags, artifacts.
> >> Introduce templates (hidden jobs whose names start with a dot) to
> >> reduce the overhead and simplify the file (more than 100 lines saved).
> >> This way, the actual jobs can only specify sections that are unique
> >> to them.
> >>
> >> Most of the test jobs specify the same set of prerequisite jobs under needs
> >> property with just one additional being unique to the job itself. Introduce
> >> YAML anchors for that purpose, because when using extends, the needs
> >> property
> >> is not being merged (the parent property overwrites the child one).
> >
> > I like the patch. Replying here on top because the diff below is not
> > very helpful.
> >
> > When you say that "extends" overwrites the properties, do you mean that
> > "needs" in qemu-smoke-dom0-arm64-gcc overwrites "needs" in .qemu-arm64,
> > when qemu-smoke-dom0-arm64-gcc includes .qemu-arm64?
> Yes, exactly. The behavior depends on the property. For example, the variables
> section is merged but needs end up being overwritten. This is because the
> extends
> does not merge the keys (variables uses key: value, whereas needs does not).
>
> >
> >
> > If there is no way to solve the overwrite problem then it is OK to use
> > YAML achors but is it possible to define the anchors outside of
> > .qemu-arm64/.qemu-arm32 ? It would make things a lot clearer in the
> > code. Maybe under a top level "definitions" key? The point is that
> > .qemu-arm64 and .qemu-arm32 should use the anchor rather than define the
> > anchor.
> It is possible to define anchors outside qemu-arm64/arm32. I decided to
> define them in these jobs because for me it looked cleaner (less lines of
> code).
> But I'm ok to carve them out if that is what you prefer. This would
> require dropping the needs property from the extend jobs, as they cannot make
> use
> of the anchors (overwrite issue), and using the anchors from real jobs (just
> like I did in this patch).
Yes that makes sense
> So we would have:
>
> .arm64-test-needs: &arm64-test-needs
> - alpine-3.12-arm64-rootfs-export
> - kernel-5.19-arm64-export
> - qemu-system-aarch64-6.0.0-arm64-export
>
> .qemu-arm64:
> extends: .test-jobs-common
> variables:
> CONTAINER: debian:unstable-arm64v8
> LOGFILE: qemu-smoke-arm64.log
> artifacts:
> paths:
> - smoke.serial
> - '*.log'
> when: always
> tags:
> - arm64
>
> qemu-smoke-dom0-arm64-gcc:
> extends: .qemu-arm64
> script:
> - ./automation/scripts/qemu-smoke-dom0-arm64.sh 2>&1 | tee ${LOGFILE}
> needs:
> - *arm64-test-needs
> - alpine-3.12-gcc-arm64
This looks better, thanks!
> >
> > I wouldn't call it qemu-arm64-needs because it has things
> > like alpine-3.12-arm64-rootfs-export and kernel-5.19-arm64-export that
> > are not required by qemu-system-aarch64-6.0.0-arm64-export. If anything
> > qemu-system-aarch64-6.0.0-arm64-export needs CONTAINER:
> > debian:unstable-arm64v8.
> >
> > So I would call the anchor something like "arm64-test-needs". Same
> > comment for the arm32 anchor.
> Ok, this naming sounds good to me.
>
> >
> >
> >> Signed-off-by: Michal Orzel <michal.orzel@xxxxxxx>
> >> ---
> >> This patch is based on the CI next branch where we already have several
> >> patches (already acked) to be merged into staging after the release:
> >> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.com%2Fxen-project%2Fpeople%2Fsstabellini%2Fxen%2F-%2Ftree%2Fnext&data=05%7C01%7Cmichal.orzel%40amd.com%7Ca83af11b062b431b4f0908dab3ad2162%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C638019853419768862%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=TZxie442G%2Bm6SP%2FemyPuv8dwCDXAv1Wxwe22yGQZaB4%3D&reserved=0
> >>
> >> Tested pipeline:
> >> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.com%2Fxen-project%2Fpeople%2Fmorzel%2Fxen-orzelmichal%2F-%2Fpipelines%2F671114820&data=05%7C01%7Cmichal.orzel%40amd.com%7Ca83af11b062b431b4f0908dab3ad2162%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C638019853419768862%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=tMwGAZUKyvDp%2BxmVdxUD1kg3uMagWdO2P1DjF5O3b2M%3D&reserved=0
> >> ---
> >> automation/gitlab-ci/test.yaml | 266 ++++++++++-----------------------
> >> 1 file changed, 80 insertions(+), 186 deletions(-)
> >>
> >> diff --git a/automation/gitlab-ci/test.yaml
> >> b/automation/gitlab-ci/test.yaml
> >> index 92e0a1f7c510..fc0884b12082 100644
> >> --- a/automation/gitlab-ci/test.yaml
> >> +++ b/automation/gitlab-ci/test.yaml
> >> @@ -7,32 +7,12 @@
> >> - /^coverity-tested\/.*/
> >> - /^stable-.*/
> >>
> >> -# Test jobs
> >> -build-each-commit-gcc:
> >> - extends: .test-jobs-common
> >> - variables:
> >> - CONTAINER: debian:stretch
> >> - XEN_TARGET_ARCH: x86_64
> >> - CC: gcc
> >> - script:
> >> - - BASE=${BASE_SHA:-${CI_COMMIT_BEFORE_SHA}}
> >> TIP=${TIP_SHA:-${CI_COMMIT_SHA}}
> >> ./automation/gitlab-ci/build-each-commit.sh 2>&1 | tee
> >> ../build-each-commit-gcc.log
> >> - - mv ../build-each-commit-gcc.log .
> >> - artifacts:
> >> - paths:
> >> - - '*.log'
> >> - when: always
> >> - needs: []
> >> - tags:
> >> - - x86_64
> >> -
> >> -qemu-smoke-dom0-arm64-gcc:
> >> +.qemu-arm64:
> >> extends: .test-jobs-common
> >> variables:
> >> CONTAINER: debian:unstable-arm64v8
> >> - script:
> >> - - ./automation/scripts/qemu-smoke-dom0-arm64.sh 2>&1 | tee
> >> qemu-smoke-arm64.log
> >> - needs:
> >> - - alpine-3.12-gcc-arm64
> >> + LOGFILE: qemu-smoke-arm64.log
> >> + needs: &qemu-arm64-needs
> >> - alpine-3.12-arm64-rootfs-export
> >> - kernel-5.19-arm64-export
> >> - qemu-system-aarch64-6.0.0-arm64-export
> >
> > LOGFILE should be listed among the artifacts (and maybe we can remove
> > *.log if it has become redundant?)
> *.log is not redundant because we have 4 logs to be stored, e.g.:
> - smoke.serial
> - config.log
> - build.log
> - qemu-smoke-arm64.log aka LOGFILE
>
> So we can either have this:
> artifacts:
> paths:
> - smoke.serial
> - '*.log'
>
> or this:
> artifacts:
> paths:
> - smoke.serial
> - ${LOGFILE}
> - '*.log'
>
> I would prefer the former (just as it is now) but if you prefer the latter,
> it is ok.
I agree with the former
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |