tiagobento opened a new pull request, #6691:
URL: https://github.com/apache/incubator-kie-drools/pull/6691

   Part of https://github.com/apache/incubator-kie-issues/issues/2285
   
   ---
   
   Please check the [open PRs on my fork simulating this new CI system running 
for the latest 100 
commits](https://github.com/tiagobento/incubator-kie-drools/pulls) in 
`apache/incubator-kie-drools`. They're not order, but are numbered.
   
   The [test PR 
#55](https://github.com/tiagobento/incubator-kie-drools/actions/runs/24679561788/job/72172880646?pr=76)
 failed but the root cause (issue 
https://github.com/apache/incubator-kie-drools/issues/6669) was fixed by PR 
https://github.com/apache/incubator-kie-drools/pull/6687
   
   I disabled the flaky PersistenceTest#testTraitsSerialization in this PR, and 
changed `drools-test-coverage-jars-with-invoker`  module to respect the 
`skipITs` variable.
   
   I removed the Jenkins CI (which was always broken anyway) and the release 
scripts already, as that's the next step in the 10.3.x+ stream we'll be 
tackling.
   
   I kept the old PR checks and CI systems in place so that we can validate 
this new one over the next few weeks.
   
   ---
   
   # How the new CI system works
   
   1. Determine which Maven modules changed based on the changed files in a PR.
   2. Extract the modules dependency graph directly from Maven's reactor via 
the Dependency Graph Extractor Maven extension (with some extra logic to 
include BOMs in the dependency graph)
   3. Traverse the extracted dependency graph to determine which modules are 
not affected by the changes on the PR, which modules are affected, and which 
modules are not even necessary to be built. 
   4. Build unaffected modules (upstream) so that building affected modules 
succeed.
   5. Build affected modules (affected) running all their tests and checks.
   6. Check build and test results and report it in a GitHub Actions summary.
   
   ### Notes
   - The entrypoint for the new CI is `.github/workflows/ci.yaml`
   - Except for a few commands, the whole build scope determination (upstream 
and affected packages) is easy to be developed and tested locally.
   
   By avoiding full builds on PR checks when possible, this new CI is more 
efficient than any previous CI we had. 
   
   # Example ([simulated PR 
#100](https://github.com/tiagobento/incubator-kie-drools/pull/118))
   
   ### [incubator-kie-issues#2091] Modify the `kogito-maven-plugin` to be a 
wrapper of the codegen library (#6452)
   
   The new CI took [`30m 
4s`](https://github.com/tiagobento/incubator-kie-drools/actions/runs/24669023706?pr=118)
 instead of [`41m 
3s`](https://github.com/apache/incubator-kie-drools/actions/runs/17727971595?pr=6452)
   
   This was achieved by splitting the build in:
   - Changed modules (1)
   - Upstream modules (138)
   - Affected modules (73)
   - Skipped modules (43)
   
   Here's the dependency graph extracted during that PR's checks: 
   
   ```mermaid
   flowchart TD
       a(["drools-test-coverage-jars"])
       b(["drools-test-coverage"])
       c(["test-integration-ruleunits"])
       d(["drools-base"])
       e[["drools-bom"]]
       f(["drools-canonical-model"])
       g(["drools-commands"])
       h(["drools-compiler"])
       i(["drools-core"])
       j(["drools-decisiontables"])
       k(["drools-drl"])
       l(["drools-drl-ast"])
       m(["drools-drl-extensions"])
       n(["drools-drl-parser"])
       o(["drools-drlonyaml-model"])
       p(["drools-drlonyaml-parent"])
       q(["drools-drlonyaml-schemagen"])
       r(["drools-drlonyaml-todrl"])
       s(["drools-ecj"])
       t(["drools-engine-classic"])
       u(["drools-impact-analysis"])
       v(["drools-impact-analysis-graph"])
       w(["drools-impact-analysis-graph-common"])
       x(["drools-impact-analysis-model"])
       y(["drools-io"])
       z(["drools-kiesession"])
       aa(["drools-legacy-test-util"])
       ab(["drools-model"])
       ac(["drools-model-compiler"])
       ad(["drools-model-prototype"])
       ae(["drools-mvel"])
       af(["drools-mvel-compiler"])
       ag(["drools-mvel-parser"])
       ah(["drools-quarkus-examples"])
       ai(["drools-quarkus-extension"])
       aj(["drools-quarkus-integration-test-multimodule"])
       ak(["drools-quarkus-integration-test-multimodule-dep"])
       al(["drools-reliability"])
       am(["drools-reliability-core"])
       an(["drools-reliability-infinispan"])
       ao(["drools-ruleunits"])
       ap(["drools-ruleunits-api"])
       aq(["drools-scenario-simulation"])
       ar(["drools-scenario-simulation-api"])
       as(["drools-serialization-protobuf"])
       at(["drools-templates"])
       au(["drools-tms"])
       av(["drools-util"])
       aw(["drools-verifier"])
       ax(["drools-verifier-api"])
       ay(["drools-verifier-core"])
       az(["drools-verifier-drl"])
       ba(["drools-verifier-test-jar"])
       bb(["drools-wiring"])
       bc(["drools-wiring-api"])
       bd(["drools-wiring-dynamic"])
       be(["drools-wiring-static"])
       bf(["drools-xml-support"])
       bg(["build-parent"])
       bh(["root"])
       bi(["efesto"])
       bj(["efesto-common-api"])
       bk(["efesto-common-core"])
       bl(["efesto-common-utils"])
       bm(["efesto-compilation-manager"])
       bn(["efesto-compilation-manager-api"])
       bo(["efesto-compilation-manager-core"])
       bp(["efesto-core"])
       bq(["efesto-runtime-manager"])
       br(["efesto-runtime-manager-api"])
       bs(["efesto-runtime-manager-core"])
       bt(["kie-api"])
       bu(["kie-ci"])
       bv[["kie-core-bom"]]
       bw(["kie-dmn"])
       bx(["kie-dmn-api"])
       by(["kie-dmn-backend"])
       bz[["kie-dmn-bom"]]
       ca(["kie-dmn-core-jsr223-jq"])
       cb(["kie-dmn-efesto-api"])
       cc(["kie-dmn-feel"])
       cd(["kie-dmn-model"])
       ce(["kie-dmn-pmml-tests-parent"])
       cf(["kie-dmn-ruleset2dmn-parent"])
       cg(["kie-dmn-test-resources"])
       ch(["kie-dmn-xsd-resources"])
       ci(["kie-drl"])
       cj(["kie-drl-api"])
       ck(["kie-drl-implementations"])
       cl(["kie-drl-kiesession-local"])
       cm(["kie-drl-kiesession-local-runtime"])
       cn(["kie-drl-map-input"])
       co(["kie-drl-map-input-runtime"])
       cp(["kie-drl-runtime-common"])
       cq[["kie-efesto-bom"]]
       cr(["kie-internal"])
       cs(["kie-memory-compiler"])
       ct(["kie-pmml-api"])
       cu[["kie-pmml-bom"]]
       cv(["kie-pmml-commons"])
       cw(["kie-pmml-compiler"])
       cx(["kie-pmml-compiler-api"])
       cy(["kie-pmml-compiler-commons"])
       cz(["kie-pmml-compiler-core"])
       da(["kie-pmml-evaluator"])
       db(["kie-pmml-evaluator-api"])
       dc(["kie-pmml-evaluator-core"])
       dd(["kie-pmml-evaluator-utils"])
       de(["kie-pmml-models"])
       df(["kie-pmml-models-clustering"])
       dg(["kie-pmml-models-clustering-compiler"])
       dh(["kie-pmml-models-clustering-evaluator"])
       di(["kie-pmml-models-clustering-model"])
       dj(["kie-pmml-models-drools"])
       dk(["kie-pmml-models-drools-scorecard"])
       dl(["kie-pmml-models-drools-tree"])
       dm(["kie-pmml-models-mining"])
       dn(["kie-pmml-models-mining-evaluator"])
       do(["kie-pmml-models-mining-model"])
       dp(["kie-pmml-models-regression"])
       dq(["kie-pmml-models-regression-compiler"])
       dr(["kie-pmml-models-regression-evaluator"])
       ds(["kie-pmml-models-regression-model"])
       dt(["kie-pmml-models-scorecard"])
       du(["kie-pmml-models-scorecard-compiler"])
       dv(["kie-pmml-models-scorecard-evaluator"])
       dw(["kie-pmml-models-scorecard-model"])
       dx(["kie-pmml-models-tests"])
       dy(["kie-pmml-models-tree"])
       dz(["kie-pmml-models-tree-compiler"])
       ea(["kie-pmml-models-tree-evaluator"])
       eb(["kie-pmml-models-tree-model"])
       ec(["kie-pmml-trusty"])
       ed(["kie-test-util"])
       ee(["kie-util"])
       ef(["kie-util-maven-integration"])
       eg(["kie-util-maven-support"])
       eh(["kie-util-xml"])
       er{{"drools-codegen-common"}}
       ei["drools-test-coverage-jars-with-invoker"]
       ej["test-suite"]
       ek["test-compiler-integration"]
       el["test-integration-nomvel"]
       em["test-integration-notms"]
       en["test-integration-noxml"]
       eo["test-integration-ruleunits-jar"]
       ep["test-integration-ruleunits-tests"]
       eq["drools-alphanetwork-compiler"]
       es["drools-drlonyaml-integration-tests"]
       et["drools-engine"]
       eu["drools-impact-analysis-graph-graphviz"]
       ev["drools-impact-analysis-graph-json"]
       ew["drools-impact-analysis-itests"]
       ex["drools-impact-analysis-parser"]
       ey["drools-model-codegen"]
       ez["drools-quarkus"]
       fa["drools-quarkus-deployment"]
       fb["drools-quarkus-examples-multiunit"]
       fc["drools-quarkus-examples-reactive"]
       fd["drools-quarkus-integration-test"]
       fe["drools-quarkus-integration-test-hotreload"]
       ff["drools-quarkus-integration-test-kmodule"]
       fg["drools-quarkus-integration-test-multimodule-main"]
       fh["drools-quarkus-quickstart-test"]
       fi["drools-quarkus-ruleunit-integration-test"]
       fj["drools-quarkus-ruleunits"]
       fk["drools-quarkus-ruleunits-deployment"]
       fl["drools-quarkus-util-deployment"]
       fm["drools-reliability-h2mvstore"]
       fn["drools-reliability-tests"]
       fo["drools-ruleunits-dsl"]
       fp["drools-ruleunits-engine"]
       fq["drools-ruleunits-impl"]
       fr["drools-scenario-simulation-backend"]
       fs["drools-scenario-simulation-integrationtest"]
       ft["kie-archetypes"]
       fu["kie-dmn-core"]
       fv["kie-dmn-core-jsr223"]
       fw["kie-dmn-efesto-compilation"]
       fx["kie-dmn-efesto-runtime"]
       fy["kie-dmn-legacy-tests"]
       fz["kie-dmn-openapi"]
       ga["kie-dmn-pmml-tests"]
       gb["kie-dmn-pmml-tests-trusty"]
       gc["kie-dmn-ruleset2dmn"]
       gd["kie-dmn-ruleset2dmn-cli"]
       ge["kie-dmn-signavio"]
       gf["kie-dmn-trisotech"]
       gg["kie-dmn-validation"]
       gh["kie-dmn-validation-bootstrap"]
       gi["kie-dmn-xls2dmn-cli"]
       gj["kie-drl-compilation-common"]
       gk["kie-drl-tests"]
       gl["kie-drl-tests-without-index-file"]
       gm["kie-drools-dmn-archetype"]
       gn["kie-drools-exec-model-archetype"]
       go["kie-drools-exec-model-ruleunit-archetype"]
       gp["kie-drools-yaml-archetype"]
       gq["kie-maven-plugin"]
       gr["kie-pmml-dependencies"]
       gs["kie-pmml-models-drools-common"]
       gt["kie-pmml-models-drools-scorecard-compiler"]
       gu["kie-pmml-models-drools-scorecard-evaluator"]
       gv["kie-pmml-models-drools-scorecard-model"]
       gw["kie-pmml-models-drools-scorecard-tests"]
       gx["kie-pmml-models-drools-tree-compiler"]
       gy["kie-pmml-models-drools-tree-evaluator"]
       gz["kie-pmml-models-drools-tree-model"]
       ha["kie-pmml-models-drools-tree-tests"]
       hb["kie-pmml-models-mining-compiler"]
       hc["kie-pmml-models-mining-tests"]
       a --> ei
       a --> ej
       b --> a
       b --> c
       b --> en
       c --> eo
       d --> i
       e --> bz
       f --> ac
       g --> aa
       g --> bf
       h --> ac
       h --> ae
       h --> am
       h --> bf
       h --> cc
       i --> m
       i --> n
       i --> z
       i --> af
       i --> dc
       j --> ey
       k --> l
       k --> m
       l --> n
       m --> h
       m --> r
       n --> h
       n --> o
       o --> r
       p --> q
       q --> o
       r --> es
       r --> fd
       r --> ff
       r --> gq
       s --> h
       t --> ek
       u --> v
       u --> x
       v --> w
       w --> eu
       w --> ev
       x --> w
       x --> ex
       y --> n
       z --> g
       z --> h
       z --> au
       aa --> as
       ab --> f
       ab --> ag
       ab --> er
       ac --> ad
       ac --> cp
       ad --> ey
       ae --> t
       ae --> aa
       ae --> at
       ae --> az
       af --> ey
       ag --> af
       ah --> fb
       ah --> fc
       ai --> ah
       ai --> aj
       ai --> ez
       ai --> fj
       ai --> fl
       aj --> ak
       ak --> fg
       al --> am
       am --> an
       am --> fm
       an --> fn
       ao --> ap
       ap --> fq
       aq --> ar
       ar --> fr
       as --> bu
       at --> j
       au --> ae
       av --> y
       av --> cs
       av --> er
       aw --> ax
       ax --> ay
       ax --> az
       ay --> ej
       az --> ej
       ba --> az
       bb --> bc
       bc --> d
       bc --> bd
       bc --> be
       bd --> z
       be --> i
       bf --> j
       bf --> t
       bf --> bu
       bf --> dn
       bg --> b
       bg --> k
       bg --> p
       bg --> u
       bg --> ab
       bg --> ai
       bg --> al
       bg --> ao
       bg --> aq
       bg --> av
       bg --> aw
       bg --> bb
       bg --> bi
       bg --> bt
       bg --> bw
       bg --> ci
       bg --> ec
       bg --> ed
       bg --> ee
       bh --> bv
       bi --> bp
       bj --> bk
       bj --> bl
       bj --> bn
       bj --> br
       bj --> cb
       bj --> cj
       bk --> bo
       bk --> bs
       bl --> cz
       bm --> bn
       bn --> bo
       bn --> ct
       bo --> cv
       bo --> gj
       bp --> bj
       bp --> bm
       bp --> bq
       bq --> br
       br --> bs
       br --> ct
       bs --> cp
       bs --> dc
       bt --> y
       bt --> cr
       bt --> ct
       bt --> eg
       bu --> ej
       bu --> fu
       bv --> e
       bv --> cq
       bv --> cu
       bw --> ca
       bw --> cb
       bw --> cd
       bw --> ce
       bw --> cf
       bw --> cg
       bw --> ch
       bw --> gh
       bx --> by
       bx --> cc
       by --> fu
       bz --> bg
       ca --> fv
       cb --> fw
       cb --> fx
       cc --> fu
       cd --> bx
       ce --> ga
       cf --> gc
       cg --> fu
       ch --> by
       ch --> cc
       ci --> cj
       ci --> ck
       ci --> cp
       cj --> cm
       cj --> co
       cj --> gj
       ck --> cl
       ck --> cn
       cl --> cm
       cm --> gk
       cn --> co
       co --> fs
       co --> gb
       co --> gk
       co --> gw
       co --> ha
       cp --> cm
       cp --> co
       cq --> bg
       cr --> l
       cr --> ap
       cr --> bc
       cr --> bx
       cs --> s
       cs --> bc
       cs --> bj
       ct --> cv
       cu --> bg
       cv --> cx
       cv --> db
       cv --> di
       cv --> do
       cv --> ds
       cv --> dw
       cv --> eb
       cw --> cx
       cx --> cy
       cy --> cz
       cy --> dg
       cy --> dq
       cy --> du
       cy --> dz
       cy --> gs
       cz --> dd
       cz --> fu
       da --> db
       db --> dc
       dc --> dd
       dc --> dh
       dc --> dn
       dc --> dr
       dc --> dv
       dc --> ea
       dc --> gs
       dd --> dx
       dd --> gr
       de --> df
       de --> dj
       de --> dm
       de --> dp
       de --> dt
       de --> dx
       de --> dy
       df --> di
       dg --> gr
       dh --> gr
       di --> dg
       di --> dh
       dj --> dk
       dj --> dl
       dj --> gs
       dk --> gv
       dl --> gz
       dm --> do
       dn --> gr
       dn --> hc
       do --> dn
       do --> hb
       dp --> ds
       dq --> fu
       dq --> hb
       dr --> fu
       dr --> gr
       dr --> hc
       ds --> dq
       ds --> dr
       dt --> dw
       du --> hb
       dv --> gr
       dv --> hc
       dw --> du
       dw --> dv
       dx --> gw
       dx --> ha
       dx --> hc
       dy --> eb
       dz --> fu
       dz --> hb
       ea --> fu
       ea --> gr
       ea --> hc
       eb --> dz
       eb --> ea
       ec --> ct
       ec --> cw
       ec --> da
       ec --> de
       ed --> h
       ed --> cx
       ed --> db
       ee --> eg
       ee --> eh
       ef --> bu
       eg --> h
       eg --> ef
       eh --> i
       eh --> by
       ej --> ek
       ej --> el
       ej --> em
       eo --> ep
       eq --> ek
       eq --> fu
       er --> ey
       et --> ek
       et --> el
       et --> en
       et --> es
       et --> ex
       et --> fm
       et --> gq
       eu --> ew
       ex --> eu
       ex --> ev
       ey --> ej
       ey --> eq
       ey --> et
       ey --> ez
       ey --> fl
       ey --> fq
       ey --> gh
       ey --> gs
       ez --> fa
       fa --> fd
       fa --> fe
       fa --> ff
       fa --> fg
       fj --> fk
       fk --> fb
       fk --> fc
       fk --> fh
       fk --> fi
       fl --> fa
       fl --> fk
       fm --> fn
       fo --> fp
       fp --> eo
       fp --> fj
       fp --> gq
       fq --> ew
       fq --> fo
       fq --> gj
       fr --> fs
       fr --> ft
       ft --> gm
       ft --> gn
       ft --> go
       ft --> gp
       fu --> fv
       fu --> fx
       fu --> fz
       fu --> ge
       fu --> gg
       fw --> fr
       fx --> fr
       ga --> gb
       gc --> gd
       gg --> fw
       gg --> fy
       gg --> ga
       gg --> gc
       gg --> gf
       gg --> gi
       gg --> gq
       gh --> gg
       gj --> fs
       gj --> gb
       gj --> gk
       gj --> gw
       gj --> ha
       gk --> gl
       gq --> ei
       gq --> ft
       gr --> fs
       gr --> gb
       gr --> gq
       gs --> gv
       gs --> gz
       gs --> hb
       gt --> gu
       gu --> fs
       gu --> gb
       gu --> gw
       gv --> gt
       gx --> gy
       gy --> fs
       gy --> gb
       gy --> ha
       gz --> gx
       hb --> gr
       hb --> hc
       classDef upstream fill:#4a90d9,color:#fff,stroke:#2c6fad
       classDef affected fill:#f5a623,color:#fff,stroke:#c0820a
       classDef changed  fill:#d0021b,color:#fff,stroke:#8a0112,stroke-width:2px
       classDef bom      fill:#9b59b6,color:#fff,stroke:#6c3483
       class 
a,b,c,d,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bw,bx,by,ca,cb,cc,cd,ce,cf,cg,ch,ci,cj,ck,cl,cm,cn,co,cp,cr,cs,ct,cv,cw,cx,cy,cz,da,db,dc,dd,de,df,dg,dh,di,dj,dk,dl,dm,dn,do,dp,dq,dr,ds,dt,du,dv,dw,dx,dy,dz,ea,eb,ec,ed,ee,ef,eg,eh
 upstream
       class 
ei,ej,ek,el,em,en,eo,ep,eq,es,et,eu,ev,ew,ex,ey,ez,fa,fb,fc,fd,fe,ff,fg,fh,fi,fj,fk,fl,fm,fn,fo,fp,fq,fr,fs,ft,fu,fv,fw,fx,fy,fz,ga,gb,gc,gd,ge,gf,gg,gh,gi,gj,gk,gl,gm,gn,go,gp,gq,gr,gs,gt,gu,gv,gw,gx,gy,gz,ha,hb,hc
 affected
       class er changed
       class e,bv,bz,cq,cu bom
   ```
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to