[PATCH] lint: Add pre-merge checks using pre-push hook

Kieran Bingham kieran.bingham at ideasonboard.com
Fri Jun 14 18:02:30 CEST 2024


Quoting Kieran Bingham (2024-06-14 16:57:18)
> Wrap the existing libcamera pre-push hook into a lint task to make sure
> that the rules we apply to merging are conveyed as part of the CI jobs.
> 

A couple of test/examples:

Successful pipeline: https://gitlab.freedesktop.org/kbingham/libcamera/-/pipelines/1201492
Failed pipeline: https://gitlab.freedesktop.org/kbingham/libcamera/-/pipelines/1201497

--
Kieran

> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
>  .gitlab-ci/lint-pre-push.sh | 27 +++++++++++++++++++++++++++
>  gitlab-ci.yml               | 16 +++++++++++++++-
>  2 files changed, 42 insertions(+), 1 deletion(-)
>  create mode 100755 .gitlab-ci/lint-pre-push.sh
> 
> diff --git a/.gitlab-ci/lint-pre-push.sh b/.gitlab-ci/lint-pre-push.sh
> new file mode 100755
> index 000000000000..8a4283cc0f15
> --- /dev/null
> +++ b/.gitlab-ci/lint-pre-push.sh
> @@ -0,0 +1,27 @@
> +#!/bin/bash
> +
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +# SPDX-FileCopyrightText: © 2023 Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> +#
> +# Pre-merge checks
> +
> +set -e
> +
> +source "$(dirname "$0")/lib.sh"
> +
> +libcamera_premerge() {
> +       echo "Running Pre-merge checks for $CI_COMMIT_REF_NAME ($base..$CI_COMMIT_SHA)"
> +
> +       # Wrap parameters as git would send them to the pre-push hooks directly.
> +       echo "$CI_COMMIT_REF_NAME $CI_COMMIT_SHA refs/heads/integration/pre-push-lint-test $base" \
> +               | ./utils/hooks/pre-push origin "$CI_DEFAULT_BRANCH"
> +}
> +
> +base=$(find_base origin/$CI_DEFAULT_BRANCH $CI_COMMIT_SHA)
> +
> +if [[ $base == $CI_COMMIT_SHA ]] ; then
> +       echo "No commit to test, skipping"
> +       exit 0
> +fi
> +
> +run libcamera_premerge
> diff --git a/gitlab-ci.yml b/gitlab-ci.yml
> index 50b81e591458..d9b31ec8259e 100644
> --- a/gitlab-ci.yml
> +++ b/gitlab-ci.yml
> @@ -311,7 +311,7 @@ build-package:cros:
>        dotenv: env
>  
>  # ------------------------------------------------------------------------------
> -# Lint stage - Run checkstyle.py
> +# Lint stage - Run checkstyle.py and check merge suitability
>  # ------------------------------------------------------------------------------
>  
>  lint:
> @@ -330,6 +330,20 @@ lint:
>    script:
>      - $CI_PROJECT_DIR/.gitlab-ci/lint-libcamera.sh
>  
> +merge-check:
> +  extends:
> +    - .fdo.distribution-image at debian
> +    - .history-jobs
> +    - .libcamera-ci.debian:12
> +    - .libcamera-ci.scripts
> +  stage: lint
> +  needs:
> +    - job: container-debian:12
> +      artifacts: false
> +  script:
> +    - $CI_PROJECT_DIR/.gitlab-ci/lint-pre-push.sh
> +
> +
>  # ------------------------------------------------------------------------------
>  # Test stage - Run unit tests and hardware tests
>  # ------------------------------------------------------------------------------
> -- 
> 2.34.1
>


More information about the libcamera-devel mailing list