diff mbox series

[14/20] CI: GitLab: Split build_world tasks

Message ID 20240611-docker-image-v1-14-51472eb70357@flygoat.com
State Changes Requested
Delegated to: Tom Rini
Headers show
Series New CI image and fixes | expand

Commit Message

Jiaxun Yang June 11, 2024, 9:04 p.m. UTC
Current build_world task runs for too long on public gitlab
runner.

Split the job as what we've done to azure pipeline.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
---
 .gitlab-ci.yml | 103 +++++++++++++++++++++++++++++++++------------------------
 1 file changed, 59 insertions(+), 44 deletions(-)

Comments

Tom Rini June 12, 2024, 4:01 p.m. UTC | #1
On Tue, Jun 11, 2024 at 10:04:13PM +0100, Jiaxun Yang wrote:

> Current build_world task runs for too long on public gitlab
> runner.
> 
> Split the job as what we've done to azure pipeline.
> 
> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> ---
>  .gitlab-ci.yml | 103 +++++++++++++++++++++++++++++++++------------------------
>  1 file changed, 59 insertions(+), 44 deletions(-)

I don't like this. The list in Azure is because of the time limits there
and in turn we:
a) Have to tweak it periodically to keep things from running too long
b) Have to tweak it to ensure that we don't miss some new SoC/etc
Jiaxun Yang June 12, 2024, 4:14 p.m. UTC | #2
在2024年6月12日六月 下午5:01,Tom Rini写道:
> On Tue, Jun 11, 2024 at 10:04:13PM +0100, Jiaxun Yang wrote:
>
>> Current build_world task runs for too long on public gitlab
>> runner.
>> 
>> Split the job as what we've done to azure pipeline.
>> 
>> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
>> ---
>>  .gitlab-ci.yml | 103 +++++++++++++++++++++++++++++++++------------------------
>>  1 file changed, 59 insertions(+), 44 deletions(-)
>
> I don't like this. The list in Azure is because of the time limits there
> and in turn we:
> a) Have to tweak it periodically to keep things from running too long
> b) Have to tweak it to ensure that we don't miss some new SoC/etc

Then it will render running CI test on gitlab.com impossible again :-(

Thanks
>
> -- 
> Tom
>
> 附件:
> * signature.asc
Tom Rini June 12, 2024, 5:07 p.m. UTC | #3
On Wed, Jun 12, 2024 at 05:14:46PM +0100, Jiaxun Yang wrote:
> 
> 
> 在2024年6月12日六月 下午5:01,Tom Rini写道:
> > On Tue, Jun 11, 2024 at 10:04:13PM +0100, Jiaxun Yang wrote:
> >
> >> Current build_world task runs for too long on public gitlab
> >> runner.
> >> 
> >> Split the job as what we've done to azure pipeline.
> >> 
> >> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> >> ---
> >>  .gitlab-ci.yml | 103 +++++++++++++++++++++++++++++++++------------------------
> >>  1 file changed, 59 insertions(+), 44 deletions(-)
> >
> > I don't like this. The list in Azure is because of the time limits there
> > and in turn we:
> > a) Have to tweak it periodically to keep things from running too long
> > b) Have to tweak it to ensure that we don't miss some new SoC/etc
> 
> Then it will render running CI test on gitlab.com impossible again :-(

Yeah, it's not something I'm the happiest with. Looking around a bit, I
see a blog post that talks about dealing with dynamic variables, in
Azure. So we could, I think, figure out some logic to have each build
stage say what platforms it covers. And then have a final step that
compares all of the platforms built vs the global list (just
tools/buildman/buildman --dry-run -v) to make sure nothing was missed.
With something like that, and assuming GitLab can do it too (it probably
can), I'm OK with having the world build be broken down to 10 groups
(maximum number of parallel jobs in Azure CI for free) since we'll know
if we miss something too.

So lets set this patch (and the doc update) aside for now, unless you
want to look at the above. I'll look at the above soon.
Simon Glass June 12, 2024, 8:24 p.m. UTC | #4
Hi Tom,

On Wed, 12 Jun 2024 at 11:07, Tom Rini <trini@konsulko.com> wrote:
>
> On Wed, Jun 12, 2024 at 05:14:46PM +0100, Jiaxun Yang wrote:
> >
> >
> > 在2024年6月12日六月 下午5:01,Tom Rini写道:
> > > On Tue, Jun 11, 2024 at 10:04:13PM +0100, Jiaxun Yang wrote:
> > >
> > >> Current build_world task runs for too long on public gitlab
> > >> runner.
> > >>
> > >> Split the job as what we've done to azure pipeline.
> > >>
> > >> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> > >> ---
> > >>  .gitlab-ci.yml | 103 +++++++++++++++++++++++++++++++++------------------------
> > >>  1 file changed, 59 insertions(+), 44 deletions(-)
> > >
> > > I don't like this. The list in Azure is because of the time limits there
> > > and in turn we:
> > > a) Have to tweak it periodically to keep things from running too long
> > > b) Have to tweak it to ensure that we don't miss some new SoC/etc
> >
> > Then it will render running CI test on gitlab.com impossible again :-(
>
> Yeah, it's not something I'm the happiest with. Looking around a bit, I
> see a blog post that talks about dealing with dynamic variables, in
> Azure. So we could, I think, figure out some logic to have each build
> stage say what platforms it covers. And then have a final step that
> compares all of the platforms built vs the global list (just
> tools/buildman/buildman --dry-run -v) to make sure nothing was missed.
> With something like that, and assuming GitLab can do it too (it probably
> can), I'm OK with having the world build be broken down to 10 groups
> (maximum number of parallel jobs in Azure CI for free) since we'll know
> if we miss something too.
>
> So lets set this patch (and the doc update) aside for now, unless you
> want to look at the above. I'll look at the above soon.

Could we hook up one of our machines as a public runner somehow?

Regards,
Simon
Tom Rini June 13, 2024, 3:32 p.m. UTC | #5
On Wed, Jun 12, 2024 at 02:24:24PM -0600, Simon Glass wrote:
> Hi Tom,
> 
> On Wed, 12 Jun 2024 at 11:07, Tom Rini <trini@konsulko.com> wrote:
> >
> > On Wed, Jun 12, 2024 at 05:14:46PM +0100, Jiaxun Yang wrote:
> > >
> > >
> > > 在2024年6月12日六月 下午5:01,Tom Rini写道:
> > > > On Tue, Jun 11, 2024 at 10:04:13PM +0100, Jiaxun Yang wrote:
> > > >
> > > >> Current build_world task runs for too long on public gitlab
> > > >> runner.
> > > >>
> > > >> Split the job as what we've done to azure pipeline.
> > > >>
> > > >> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> > > >> ---
> > > >>  .gitlab-ci.yml | 103 +++++++++++++++++++++++++++++++++------------------------
> > > >>  1 file changed, 59 insertions(+), 44 deletions(-)
> > > >
> > > > I don't like this. The list in Azure is because of the time limits there
> > > > and in turn we:
> > > > a) Have to tweak it periodically to keep things from running too long
> > > > b) Have to tweak it to ensure that we don't miss some new SoC/etc
> > >
> > > Then it will render running CI test on gitlab.com impossible again :-(
> >
> > Yeah, it's not something I'm the happiest with. Looking around a bit, I
> > see a blog post that talks about dealing with dynamic variables, in
> > Azure. So we could, I think, figure out some logic to have each build
> > stage say what platforms it covers. And then have a final step that
> > compares all of the platforms built vs the global list (just
> > tools/buildman/buildman --dry-run -v) to make sure nothing was missed.
> > With something like that, and assuming GitLab can do it too (it probably
> > can), I'm OK with having the world build be broken down to 10 groups
> > (maximum number of parallel jobs in Azure CI for free) since we'll know
> > if we miss something too.
> >
> > So lets set this patch (and the doc update) aside for now, unless you
> > want to look at the above. I'll look at the above soon.
> 
> Could we hook up one of our machines as a public runner somehow?

It's a pool of free runners, ala Azure. I don't think we can, no, and I
don't want to make all of our runners available on public CI either,
they're a bit over-whelmed as it is I think once custodians start
working.
diff mbox series

Patch

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4c17abea468a..efb84c3b119f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -91,56 +91,71 @@  stages:
       - "*.css"
     expire_in: 1 week
 
-.world_build:
+.world_build_template: &world_build_dfn
   stage: world build
   rules:
     - when: always
-
-build all 32bit ARM platforms:
-  extends: .world_build
-  script:
-    - ret=0;
-      git config --global --add safe.directory "${CI_PROJECT_DIR}";
-      ./tools/buildman/buildman -o /tmp -PEWM arm -x aarch64 || ret=$?;
-      if [[ $ret -ne 0 ]]; then
-        ./tools/buildman/buildman -o /tmp -seP;
-        exit $ret;
-      fi;
-
-build all 64bit ARM platforms:
-  extends: .world_build
-  script:
-    - virtualenv -p /usr/bin/python3 /tmp/venv
-    - . /tmp/venv/bin/activate
-    - ret=0;
-      git config --global --add safe.directory "${CI_PROJECT_DIR}";
-      ./tools/buildman/buildman -o /tmp -PEWM aarch64 || ret=$?;
-      if [[ $ret -ne 0 ]]; then
-        ./tools/buildman/buildman -o /tmp -seP;
-        exit $ret;
-      fi;
-
-build all PowerPC platforms:
-  extends: .world_build
   script:
     - ret=0;
       git config --global --add safe.directory "${CI_PROJECT_DIR}";
-      ./tools/buildman/buildman -o /tmp -P -E -W powerpc || ret=$?;
-      if [[ $ret -ne 0 ]]; then
-        ./tools/buildman/buildman -o /tmp -seP;
-        exit $ret;
-      fi;
-
-build all other platforms:
-  extends: .world_build
-  script:
-    - ret=0;
-      git config --global --add safe.directory "${CI_PROJECT_DIR}";
-      ./tools/buildman/buildman -o /tmp -PEWM -x arm,powerpc || ret=$?;
-      if [[ $ret -ne 0 ]]; then
-        ./tools/buildman/buildman -o /tmp -seP;
-        exit $ret;
-      fi;
+      if [[ "${BUILDMAN}" != "" ]]; then
+          ret=0;
+          tools/buildman/buildman -o /tmp -PEWM ${BUILDMAN} ${OVERRIDE} || ret=$?;
+          if [[ $ret -ne 0 ]]; then
+              tools/buildman/buildman -o /tmp -seP ${BUILDMAN};
+              exit $ret;
+          fi;
+      fi
+
+am33xx_at91_kirkwood_mvebu_omap:
+  variables:
+    BUILDMAN: "am33xx at91_kirkwood mvebu omap -x siemens"
+  <<: *world_build_dfn
+
+amlogic_bcm_boundary_engicam_siemens_technexion_oradex:
+  variables:
+    BUILDMAN: "amlogic bcm boundary engicam siemens technexion toradex -x mips"
+  <<: *world_build_dfn
+
+arm_nxp_minus_imx:
+  variables:
+    BUILDMAN: "freescale -x powerpc,m68k,imx,mx"
+  <<: *world_build_dfn
+
+imx:
+  variables:
+    BUILDMAN: "mx imx -x boundary,engicam,technexion,toradex"
+  <<: *world_build_dfn
+
+rk:
+  variables:
+    BUILDMAN: "rk"
+  <<: *world_build_dfn
+
+sunxi:
+  variables:
+    BUILDMAN: "sunxi"
+  <<: *world_build_dfn
+
+powerpc:
+  variables:
+    BUILDMAN: "powerpc"
+  <<: *world_build_dfn
+
+arm_catch_all:
+  variables:
+    BUILDMAN: "arm -x aarch64,am33xx,at91,bcm,ls1,kirkwood,mvebu,omap,rk,siemens,mx,sunxi,technexion,toradex"
+  <<: *world_build_dfn
+
+aarch64_catch_all:
+  variables:
+    BUILDMAN: "aarch64 -x amlogic,bcm,engicam,imx,ls1,ls2,lx216,mvebu,rk,siemens,sunxi,toradex"
+  <<: *world_build_dfn
+
+everything_but_arm_and_powerpc:
+  variables:
+    BUILDMAN: "-x arm,powerpc"
+  <<: *world_build_dfn
 
 .testsuites:
   stage: testsuites