[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [XEN PATCH 3/4] automation: Add ECLAIR pipelines
On Tue, 25 Jul 2023, Simone Ballarin wrote: > Add two pipelines that analyze an ARM64 and a X86_64 build with the > ECLAIR static analyzer on the guidelines contained in Set1. > > The analysis configuration is stored in automation/eclair_analysis. > > All commits on the xen-project/xen:staging branch will be analyzed > and their artifacts will be stored indefinitely; the integration will > report differential information with respect to the previous analysis. > > All commits on other branches or repositories will be analyzed and > only the last ten artifacts will be kept; the integration will report > differential information with respect to the analysis done on the common > ancestor with xen-project/xen:staging (if available). > > Currently the pipeline variable ENABLE_ECLAIR_BOT is set to "n". > Doing so disables the generation of comments with the analysis summary > on the commit threads. The variable can be set to "y" if the a masked > variable named ECLAIR_BOT_TOKEN is set with the impersonation token of > an account with enough privileges to write on all repositories. > > Additionaly any repository should be able to read a masked variable > named WTOKEN with the token provided by BUGSENG. > > The analysis fails if it contains violations of guidelines tagged as > clean:added. The list of clean guidelines are maintained in > automation/eclair_analysis/ECLAIR/tagging.ecl. > > Signed-off-by: Simone Ballarin <simone.ballarin@xxxxxxxxxxx> This patch looks good to me, just one question before I give my acked-by. > -- > Changes in v3: > - split definitions of the ECLAIR pipelines in a separate patch; > - if the WTOKEN variable is missing now the analysis fails immediately. > > Changes in v2: > - add ECLAIR configuration files (before they were fetched from a separate > repository); > - now the pipeline fails if there are new violations of guidelines tagged > with clean:added. > --- > .gitlab-ci.yml | 2 ++ > automation/gitlab-ci/analyze.yaml | 38 +++++++++++++++++++++++++++++++ > automation/gitlab-ci/build.yaml | 1 + > automation/scripts/eclair | 34 +++++++++++++++++++++++++++ > 4 files changed, 75 insertions(+) > create mode 100644 automation/gitlab-ci/analyze.yaml > create mode 100755 automation/scripts/eclair > > diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml > index c8bd7519d5..ee5430b8b7 100644 > --- a/.gitlab-ci.yml > +++ b/.gitlab-ci.yml > @@ -1,7 +1,9 @@ > stages: > + - analyze > - build > - test > > include: > + - 'automation/gitlab-ci/analyze.yaml' > - 'automation/gitlab-ci/build.yaml' > - 'automation/gitlab-ci/test.yaml' > diff --git a/automation/gitlab-ci/analyze.yaml > b/automation/gitlab-ci/analyze.yaml > new file mode 100644 > index 0000000000..3d8166572b > --- /dev/null > +++ b/automation/gitlab-ci/analyze.yaml > @@ -0,0 +1,38 @@ > +.eclair-analysis: > + stage: analyze > + tags: > + - eclair-analysis > + variables: > + ECLAIR_OUTPUT_DIR: "ECLAIR_out" > + ANALYSIS_KIND: "normal" > + ENABLE_ECLAIR_BOT: "n" > + AUTO_PR_BRANCH: "staging" > + AUTO_PR_REPOSITORY: "xen-project/xen" > + artifacts: > + when: always > + paths: > + - "${ECLAIR_OUTPUT_DIR}/*.log" > + - "${ECLAIR_OUTPUT_DIR}/*.txt" > + - '*.log' > + reports: > + codequality: gl-code-quality-report.json How do I access "gl-code-quality-report.json" or otherwise any other meaningful ECLAIR output? If I browse the job artifacts I see all the various logs but no gl-code-quality-report.json. Scrolling up from the bottom of the job console output I see: Browse analysis: https://saas.eclairit.com:3787/fs/var/local/eclair/xen-project.ecdf/xen-project/people/sstabellini/xen/ECLAIR_normal/ppp2/ARM64/4732041018/index.html And if I click on the link, I can access a web interface with the results. Is that the intended way to access the job output? If so, would it be possible to print out the message "Browse analysis:..." as the very last message to make it easier to spot? After it at the moment I can see: >From https://gitlab.com:443/xen-project/xen * [new branch] 4.10.0-shim-comet -> autoPRRemote/4.10.0-shim-comet [...] The long list of branch names hides the "Browse analysis" link. BTW I really like the graphics output, e.g.: https://saas.eclairit.com:3787/fs/var/local/eclair/xen-project.ecdf/xen-project/people/sstabellini/xen/ECLAIR_normal/ppp2/ARM64/4732041018/PROJECT.ecd;/by_service.html#service/first_file&kind Very nice and clear! > +eclair-x86_64: > + extends: .eclair-analysis > + variables: > + LOGFILE: "eclair-x86_64.log" > + VARIANT: "X86_64" > + RULESET: "Set1" > + script: > + - ./automation/scripts/eclair 2>&1 | tee "${LOGFILE}" > + allow_failure: true > + > +eclair-ARM64: > + extends: .eclair-analysis > + variables: > + LOGFILE: "eclair-ARM64.log" > + VARIANT: "ARM64" > + RULESET: "Set1" > + script: > + - ./automation/scripts/eclair 2>&1 | tee "${LOGFILE}" > + allow_failure: true > diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml > index c401f62d61..f01e2c32bb 100644 > --- a/automation/gitlab-ci/build.yaml > +++ b/automation/gitlab-ci/build.yaml > @@ -11,6 +11,7 @@ > - '*.log' > - '*/*.log' > when: always > + needs: [] > except: > - master > - smoke > diff --git a/automation/scripts/eclair b/automation/scripts/eclair > new file mode 100755 > index 0000000000..55888617b3 > --- /dev/null > +++ b/automation/scripts/eclair > @@ -0,0 +1,34 @@ > +#!/bin/sh -eu > + > +ECLAIR_ANALYSIS_DIR=automation/eclair_analysis > +ECLAIR_DIR="${ECLAIR_ANALYSIS_DIR}/ECLAIR" > +ECLAIR_OUTPUT_DIR=$(realpath "${ECLAIR_OUTPUT_DIR}") > + > +if [ -z "${WTOKEN:-}" ]; then > + echo "Failure: the WTOKEN variable is not defined." >&2 > + exit 1 > +fi > + > +"${ECLAIR_ANALYSIS_DIR}/prepare.sh" "${VARIANT}" > + > +ex=0 > +"${ECLAIR_DIR}/analyze.sh" "${VARIANT}" "${RULESET}" || ex=$? > +"${ECLAIR_DIR}/action_log.sh" ANALYSIS_LOG \ > + "ECLAIR analysis log" \ > + "${ECLAIR_OUTPUT_DIR}/ANALYSIS.log" \ > + "${ex}" > +"${ECLAIR_DIR}/action_log.sh" REPORT_LOG \ > + "ECLAIR report log" \ > + "${ECLAIR_OUTPUT_DIR}/REPORT.log" \ > + "${ex}" > +[ "${ex}" = 0 ] || exit "${ex}" > +"${ECLAIR_DIR}/action_push.sh" "${WTOKEN}" "${ECLAIR_OUTPUT_DIR}" > + > +# Fail in case of new reports > +"${ECLAIR_DIR}/action_clean_added.sh" "${ECLAIR_OUTPUT_DIR}" || ex=$? > +"${ECLAIR_DIR}/action_log.sh" DIFF_CHECK_LOG \ > + "ECLAIR diff check" \ > + "${ECLAIR_OUTPUT_DIR}/clean_added.log" \ > + "${ex}" > + > +[ "${ex}" = 0 ] || exit "${ex}" > -- > 2.34.1 >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |