.../eclair_analysis/ECLAIR/action.settings | 2 +- automation/eclair_analysis/ECLAIR/analysis.ecl | 12 ++++++++++-- automation/gitlab-ci/analyze.yaml | 2 ++ automation/gitlab-ci/build.yaml | 4 ++++ automation/gitlab-ci/test.yaml | 18 ++++++++++++------ 5 files changed, 29 insertions(+), 9 deletions(-)
The scheduled analyses are intended to maintain an overall vision
of the MISRA complaince of the entire project. For this reason,
the file exclusions in "out_of_scope.ecl" should not be applied.
This patch amends ECLAIR settings to prevent exempting files for
scheduled analyses and prevents scheduled pipelines from triggering
non-analysis jobs.
Signed-off-by: Simone Ballarin <simone.ballarin@bugseng.com>
---
.../eclair_analysis/ECLAIR/action.settings | 2 +-
automation/eclair_analysis/ECLAIR/analysis.ecl | 12 ++++++++++--
automation/gitlab-ci/analyze.yaml | 2 ++
automation/gitlab-ci/build.yaml | 4 ++++
automation/gitlab-ci/test.yaml | 18 ++++++++++++------
5 files changed, 29 insertions(+), 9 deletions(-)
diff --git a/automation/eclair_analysis/ECLAIR/action.settings b/automation/eclair_analysis/ECLAIR/action.settings
index f96368ffc7..3cba1a3afb 100644
--- a/automation/eclair_analysis/ECLAIR/action.settings
+++ b/automation/eclair_analysis/ECLAIR/action.settings
@@ -134,7 +134,7 @@ push)
badgeLabel="ECLAIR ${ANALYSIS_KIND} ${ref}${variantHeadline} #${jobId}"
;;
auto_pull_request)
- git remote remove autoPRRemote || true
+ git remote remove autoPRRemote 2>/dev/null || true
git remote add autoPRRemote "${autoPRRemoteUrl}"
git fetch -q autoPRRemote
subDir="${ref}"
diff --git a/automation/eclair_analysis/ECLAIR/analysis.ecl b/automation/eclair_analysis/ECLAIR/analysis.ecl
index fe418d6da1..2507a8e787 100644
--- a/automation/eclair_analysis/ECLAIR/analysis.ecl
+++ b/automation/eclair_analysis/ECLAIR/analysis.ecl
@@ -2,7 +2,13 @@
-project_name=getenv("ECLAIR_PROJECT_NAME")
-project_root=getenv("ECLAIR_PROJECT_ROOT")
--setq=data_dir,getenv("ECLAIR_DATA_DIR")
+setq(data_dir,getenv("ECLAIR_DATA_DIR"))
+setq(analysis_kind,getenv("ANALYSIS_KIND"))
+setq(scheduled_analysis,nil)
+
+strings_map("scheduled-analysis",500,"","^.*scheduled$",0,setq(scheduled_analysis,t))
+strings_map("scheduled-analysis",500,"","^.*$",0)
+map_strings("scheduled-analysis",analysis_kind)
-verbose
@@ -15,7 +21,9 @@
-eval_file=toolchain.ecl
-eval_file=public_APIs.ecl
--eval_file=out_of_scope.ecl
+if(scheduled_analysis,
+ eval_file("out_of_scope.ecl")
+)
-eval_file=deviations.ecl
-eval_file=call_properties.ecl
-eval_file=tagging.ecl
diff --git a/automation/gitlab-ci/analyze.yaml b/automation/gitlab-ci/analyze.yaml
index bd9a68de31..6631db53fa 100644
--- a/automation/gitlab-ci/analyze.yaml
+++ b/automation/gitlab-ci/analyze.yaml
@@ -28,6 +28,8 @@
extends: .eclair-analysis
allow_failure: true
rules:
+ - if: $CI_PIPELINE_SOURCE == "schedule"
+ when: never
- if: $WTOKEN && $CI_PROJECT_PATH =~ /^xen-project\/people\/.*$/
when: manual
- !reference [.eclair-analysis, rules]
diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
index 32af30cced..6b2ac97248 100644
--- a/automation/gitlab-ci/build.yaml
+++ b/automation/gitlab-ci/build.yaml
@@ -1,6 +1,10 @@
.build-tmpl: &build
stage: build
image: registry.gitlab.com/xen-project/xen/${CONTAINER}
+ rules:
+ - if: $CI_PIPELINE_SOURCE == "schedule"
+ when: never
+ - when: always
script:
- ./automation/scripts/build 2>&1 | tee build.log
artifacts:
diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index 61e642cce0..47fc8cb3eb 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -1,6 +1,10 @@
.test-jobs-common:
stage: test
image: registry.gitlab.com/xen-project/xen/${CONTAINER}
+ rules:
+ - if: $CI_PIPELINE_SOURCE == "schedule"
+ when: never
+ - when: always
.arm64-test-needs: &arm64-test-needs
- alpine-3.18-arm64-rootfs-export
@@ -90,9 +94,10 @@
- '*.log'
- '*.dtb'
when: always
- only:
- variables:
- - $XILINX_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true"
+ rules:
+ - if: $XILINX_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true"
+ when: always
+ - !reference [.test-jobs-common, rules]
tags:
- xilinx
@@ -110,9 +115,10 @@
- smoke.serial
- '*.log'
when: always
- only:
- variables:
- - $QUBES_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true"
+ rules:
+ - if: $QUBES_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true"
+ when: always
+ - !reference [.test-jobs-common, rules]
tags:
- qubes-hw2
--
2.34.1
On Mon, 20 Nov 2023, Simone Ballarin wrote: > The scheduled analyses are intended to maintain an overall vision > of the MISRA complaince of the entire project. For this reason, > the file exclusions in "out_of_scope.ecl" should not be applied. > > This patch amends ECLAIR settings to prevent exempting files for > scheduled analyses and prevents scheduled pipelines from triggering > non-analysis jobs. The last sentence... > Signed-off-by: Simone Ballarin <simone.ballarin@bugseng.com> > --- > .../eclair_analysis/ECLAIR/action.settings | 2 +- > automation/eclair_analysis/ECLAIR/analysis.ecl | 12 ++++++++++-- > automation/gitlab-ci/analyze.yaml | 2 ++ > automation/gitlab-ci/build.yaml | 4 ++++ > automation/gitlab-ci/test.yaml | 18 ++++++++++++------ > 5 files changed, 29 insertions(+), 9 deletions(-) > > diff --git a/automation/eclair_analysis/ECLAIR/action.settings b/automation/eclair_analysis/ECLAIR/action.settings > index f96368ffc7..3cba1a3afb 100644 > --- a/automation/eclair_analysis/ECLAIR/action.settings > +++ b/automation/eclair_analysis/ECLAIR/action.settings > @@ -134,7 +134,7 @@ push) > badgeLabel="ECLAIR ${ANALYSIS_KIND} ${ref}${variantHeadline} #${jobId}" > ;; > auto_pull_request) > - git remote remove autoPRRemote || true > + git remote remove autoPRRemote 2>/dev/null || true > git remote add autoPRRemote "${autoPRRemoteUrl}" > git fetch -q autoPRRemote > subDir="${ref}" > diff --git a/automation/eclair_analysis/ECLAIR/analysis.ecl b/automation/eclair_analysis/ECLAIR/analysis.ecl > index fe418d6da1..2507a8e787 100644 > --- a/automation/eclair_analysis/ECLAIR/analysis.ecl > +++ b/automation/eclair_analysis/ECLAIR/analysis.ecl > @@ -2,7 +2,13 @@ > -project_name=getenv("ECLAIR_PROJECT_NAME") > -project_root=getenv("ECLAIR_PROJECT_ROOT") > > --setq=data_dir,getenv("ECLAIR_DATA_DIR") > +setq(data_dir,getenv("ECLAIR_DATA_DIR")) > +setq(analysis_kind,getenv("ANALYSIS_KIND")) > +setq(scheduled_analysis,nil) > + > +strings_map("scheduled-analysis",500,"","^.*scheduled$",0,setq(scheduled_analysis,t)) > +strings_map("scheduled-analysis",500,"","^.*$",0) > +map_strings("scheduled-analysis",analysis_kind) > > -verbose > > @@ -15,7 +21,9 @@ > > -eval_file=toolchain.ecl > -eval_file=public_APIs.ecl > --eval_file=out_of_scope.ecl > +if(scheduled_analysis, > + eval_file("out_of_scope.ecl") > +) > -eval_file=deviations.ecl > -eval_file=call_properties.ecl > -eval_file=tagging.ecl > diff --git a/automation/gitlab-ci/analyze.yaml b/automation/gitlab-ci/analyze.yaml > index bd9a68de31..6631db53fa 100644 > --- a/automation/gitlab-ci/analyze.yaml > +++ b/automation/gitlab-ci/analyze.yaml > @@ -28,6 +28,8 @@ > extends: .eclair-analysis > allow_failure: true > rules: > + - if: $CI_PIPELINE_SOURCE == "schedule" > + when: never > - if: $WTOKEN && $CI_PROJECT_PATH =~ /^xen-project\/people\/.*$/ > when: manual > - !reference [.eclair-analysis, rules] > diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml > index 32af30cced..6b2ac97248 100644 > --- a/automation/gitlab-ci/build.yaml > +++ b/automation/gitlab-ci/build.yaml > @@ -1,6 +1,10 @@ > .build-tmpl: &build > stage: build > image: registry.gitlab.com/xen-project/xen/${CONTAINER} > + rules: > + - if: $CI_PIPELINE_SOURCE == "schedule" > + when: never > + - when: always ...does it mean that we are going to stop all the build jobs... > script: > - ./automation/scripts/build 2>&1 | tee build.log > artifacts: > diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml > index 61e642cce0..47fc8cb3eb 100644 > --- a/automation/gitlab-ci/test.yaml > +++ b/automation/gitlab-ci/test.yaml > @@ -1,6 +1,10 @@ > .test-jobs-common: > stage: test > image: registry.gitlab.com/xen-project/xen/${CONTAINER} > + rules: > + - if: $CI_PIPELINE_SOURCE == "schedule" > + when: never > + - when: always ...and also stop all the test jobs? So basically the only thing left is .eclair-analysis:on-schedule ? > .arm64-test-needs: &arm64-test-needs > - alpine-3.18-arm64-rootfs-export > @@ -90,9 +94,10 @@ > - '*.log' > - '*.dtb' > when: always > - only: > - variables: > - - $XILINX_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true" > + rules: > + - if: $XILINX_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true" > + when: always > + - !reference [.test-jobs-common, rules] > tags: > - xilinx > > @@ -110,9 +115,10 @@ > - smoke.serial > - '*.log' > when: always > - only: > - variables: > - - $QUBES_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true" > + rules: > + - if: $QUBES_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true" > + when: always > + - !reference [.test-jobs-common, rules] > tags: > - qubes-hw2 > > -- > 2.34.1 >
On 22/11/23 02:35, Stefano Stabellini wrote: > On Mon, 20 Nov 2023, Simone Ballarin wrote: >> The scheduled analyses are intended to maintain an overall vision >> of the MISRA complaince of the entire project. For this reason, >> the file exclusions in "out_of_scope.ecl" should not be applied. >> >> This patch amends ECLAIR settings to prevent exempting files for >> scheduled analyses and prevents scheduled pipelines from triggering >> non-analysis jobs. > > The last sentence... > > >> Signed-off-by: Simone Ballarin <simone.ballarin@bugseng.com> >> --- >> .../eclair_analysis/ECLAIR/action.settings | 2 +- >> automation/eclair_analysis/ECLAIR/analysis.ecl | 12 ++++++++++-- >> automation/gitlab-ci/analyze.yaml | 2 ++ >> automation/gitlab-ci/build.yaml | 4 ++++ >> automation/gitlab-ci/test.yaml | 18 ++++++++++++------ >> 5 files changed, 29 insertions(+), 9 deletions(-) >> >> diff --git a/automation/eclair_analysis/ECLAIR/action.settings b/automation/eclair_analysis/ECLAIR/action.settings >> index f96368ffc7..3cba1a3afb 100644 >> --- a/automation/eclair_analysis/ECLAIR/action.settings >> +++ b/automation/eclair_analysis/ECLAIR/action.settings >> @@ -134,7 +134,7 @@ push) >> badgeLabel="ECLAIR ${ANALYSIS_KIND} ${ref}${variantHeadline} #${jobId}" >> ;; >> auto_pull_request) >> - git remote remove autoPRRemote || true >> + git remote remove autoPRRemote 2>/dev/null || true >> git remote add autoPRRemote "${autoPRRemoteUrl}" >> git fetch -q autoPRRemote >> subDir="${ref}" >> diff --git a/automation/eclair_analysis/ECLAIR/analysis.ecl b/automation/eclair_analysis/ECLAIR/analysis.ecl >> index fe418d6da1..2507a8e787 100644 >> --- a/automation/eclair_analysis/ECLAIR/analysis.ecl >> +++ b/automation/eclair_analysis/ECLAIR/analysis.ecl >> @@ -2,7 +2,13 @@ >> -project_name=getenv("ECLAIR_PROJECT_NAME") >> -project_root=getenv("ECLAIR_PROJECT_ROOT") >> >> --setq=data_dir,getenv("ECLAIR_DATA_DIR") >> +setq(data_dir,getenv("ECLAIR_DATA_DIR")) >> +setq(analysis_kind,getenv("ANALYSIS_KIND")) >> +setq(scheduled_analysis,nil) >> + >> +strings_map("scheduled-analysis",500,"","^.*scheduled$",0,setq(scheduled_analysis,t)) >> +strings_map("scheduled-analysis",500,"","^.*$",0) >> +map_strings("scheduled-analysis",analysis_kind) >> >> -verbose >> >> @@ -15,7 +21,9 @@ >> >> -eval_file=toolchain.ecl >> -eval_file=public_APIs.ecl >> --eval_file=out_of_scope.ecl >> +if(scheduled_analysis, >> + eval_file("out_of_scope.ecl") >> +) >> -eval_file=deviations.ecl >> -eval_file=call_properties.ecl >> -eval_file=tagging.ecl >> diff --git a/automation/gitlab-ci/analyze.yaml b/automation/gitlab-ci/analyze.yaml >> index bd9a68de31..6631db53fa 100644 >> --- a/automation/gitlab-ci/analyze.yaml >> +++ b/automation/gitlab-ci/analyze.yaml >> @@ -28,6 +28,8 @@ >> extends: .eclair-analysis >> allow_failure: true >> rules: >> + - if: $CI_PIPELINE_SOURCE == "schedule" >> + when: never >> - if: $WTOKEN && $CI_PROJECT_PATH =~ /^xen-project\/people\/.*$/ >> when: manual >> - !reference [.eclair-analysis, rules] >> diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml >> index 32af30cced..6b2ac97248 100644 >> --- a/automation/gitlab-ci/build.yaml >> +++ b/automation/gitlab-ci/build.yaml >> @@ -1,6 +1,10 @@ >> .build-tmpl: &build >> stage: build >> image: registry.gitlab.com/xen-project/xen/${CONTAINER} >> + rules: >> + - if: $CI_PIPELINE_SOURCE == "schedule" >> + when: never >> + - when: always > > ...does it mean that we are going to stop all the build jobs... > > >> script: >> - ./automation/scripts/build 2>&1 | tee build.log >> artifacts: >> diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml >> index 61e642cce0..47fc8cb3eb 100644 >> --- a/automation/gitlab-ci/test.yaml >> +++ b/automation/gitlab-ci/test.yaml >> @@ -1,6 +1,10 @@ >> .test-jobs-common: >> stage: test >> image: registry.gitlab.com/xen-project/xen/${CONTAINER} >> + rules: >> + - if: $CI_PIPELINE_SOURCE == "schedule" >> + when: never >> + - when: always > > ...and also stop all the test jobs? > > So basically the only thing left is .eclair-analysis:on-schedule ? Yes, you're right. I don't know if this is the indented behavior, but without these changes all jobs run implicitly. If test and build stages are supposed to run on scheduled pipelines, I suggest making it explicit by reversing the guard. > > >> .arm64-test-needs: &arm64-test-needs >> - alpine-3.18-arm64-rootfs-export >> @@ -90,9 +94,10 @@ >> - '*.log' >> - '*.dtb' >> when: always >> - only: >> - variables: >> - - $XILINX_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true" >> + rules: >> + - if: $XILINX_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true" >> + when: always >> + - !reference [.test-jobs-common, rules] >> tags: >> - xilinx >> >> @@ -110,9 +115,10 @@ >> - smoke.serial >> - '*.log' >> when: always >> - only: >> - variables: >> - - $QUBES_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true" >> + rules: >> + - if: $QUBES_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true" >> + when: always >> + - !reference [.test-jobs-common, rules] >> tags: >> - qubes-hw2 >> >> -- >> 2.34.1 >> > -- Simone Ballarin, M.Sc. Field Application Engineer, BUGSENG (https://bugseng.com)
On Wed, 22 Nov 2023, Simone Ballarin wrote: > > > diff --git a/automation/gitlab-ci/build.yaml > > > b/automation/gitlab-ci/build.yaml > > > index 32af30cced..6b2ac97248 100644 > > > --- a/automation/gitlab-ci/build.yaml > > > +++ b/automation/gitlab-ci/build.yaml > > > @@ -1,6 +1,10 @@ > > > .build-tmpl: &build > > > stage: build > > > image: registry.gitlab.com/xen-project/xen/${CONTAINER} > > > + rules: > > > + - if: $CI_PIPELINE_SOURCE == "schedule" > > > + when: never > > > + - when: always > > > > ...does it mean that we are going to stop all the build jobs... > > > > > > > script: > > > - ./automation/scripts/build 2>&1 | tee build.log > > > artifacts: > > > diff --git a/automation/gitlab-ci/test.yaml > > > b/automation/gitlab-ci/test.yaml > > > index 61e642cce0..47fc8cb3eb 100644 > > > --- a/automation/gitlab-ci/test.yaml > > > +++ b/automation/gitlab-ci/test.yaml > > > @@ -1,6 +1,10 @@ > > > .test-jobs-common: > > > stage: test > > > image: registry.gitlab.com/xen-project/xen/${CONTAINER} > > > + rules: > > > + - if: $CI_PIPELINE_SOURCE == "schedule" > > > + when: never > > > + - when: always > > > > ...and also stop all the test jobs? > > > > So basically the only thing left is .eclair-analysis:on-schedule ? > > Yes, you're right. I don't know if this is the indented behavior, > but without these changes all jobs run implicitly. > > If test and build stages are supposed to run on scheduled pipelines, > I suggest making it explicit by reversing the guard. Yes I think it is OK to run build and test jobs on scheduled pipelines, it is not worth optimized them out. I would reduce this patch to the below. Would that work? If so, please resend with only the below, and you can add my Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> diff --git a/automation/eclair_analysis/ECLAIR/action.settings b/automation/eclair_analysis/ECLAIR/action.settings index f96368ffc7..3cba1a3afb 100644 --- a/automation/eclair_analysis/ECLAIR/action.settings +++ b/automation/eclair_analysis/ECLAIR/action.settings @@ -134,7 +134,7 @@ push) badgeLabel="ECLAIR ${ANALYSIS_KIND} ${ref}${variantHeadline} #${jobId}" ;; auto_pull_request) - git remote remove autoPRRemote || true + git remote remove autoPRRemote 2>/dev/null || true git remote add autoPRRemote "${autoPRRemoteUrl}" git fetch -q autoPRRemote subDir="${ref}" diff --git a/automation/eclair_analysis/ECLAIR/analysis.ecl b/automation/eclair_analysis/ECLAIR/analysis.ecl index fe418d6da1..2507a8e787 100644 --- a/automation/eclair_analysis/ECLAIR/analysis.ecl +++ b/automation/eclair_analysis/ECLAIR/analysis.ecl @@ -2,7 +2,13 @@ -project_name=getenv("ECLAIR_PROJECT_NAME") -project_root=getenv("ECLAIR_PROJECT_ROOT") --setq=data_dir,getenv("ECLAIR_DATA_DIR") +setq(data_dir,getenv("ECLAIR_DATA_DIR")) +setq(analysis_kind,getenv("ANALYSIS_KIND")) +setq(scheduled_analysis,nil) + +strings_map("scheduled-analysis",500,"","^.*scheduled$",0,setq(scheduled_analysis,t)) +strings_map("scheduled-analysis",500,"","^.*$",0) +map_strings("scheduled-analysis",analysis_kind) -verbose @@ -15,7 +21,9 @@ -eval_file=toolchain.ecl -eval_file=public_APIs.ecl --eval_file=out_of_scope.ecl +if(scheduled_analysis, + eval_file("out_of_scope.ecl") +) -eval_file=deviations.ecl -eval_file=call_properties.ecl -eval_file=tagging.ecl diff --git a/automation/gitlab-ci/analyze.yaml b/automation/gitlab-ci/analyze.yaml index bd9a68de31..6631db53fa 100644 --- a/automation/gitlab-ci/analyze.yaml +++ b/automation/gitlab-ci/analyze.yaml @@ -28,6 +28,8 @@ extends: .eclair-analysis allow_failure: true rules: + - if: $CI_PIPELINE_SOURCE == "schedule" + when: never - if: $WTOKEN && $CI_PROJECT_PATH =~ /^xen-project\/people\/.*$/ when: manual - !reference [.eclair-analysis, rules]
© 2016 - 2024 Red Hat, Inc.