From b27cf4d4443961760fcadf1f7120c76a5696b913 Mon Sep 17 00:00:00 2001 From: Chen Yudong Date: Tue, 30 Jan 2024 21:36:00 +0800 Subject: [PATCH] ci: update pre_commit jobs --- .gitlab-ci.yml | 1 + .gitlab/ci/build.yml | 2 ++ .gitlab/ci/integration_test.yml | 3 +- .gitlab/ci/pre_check.yml | 16 ++-------- .gitlab/ci/pre_commit.yml | 47 ++++++++++++++++++++++++++++ tools/ci/dynamic_pipelines/models.py | 3 +- 6 files changed, 54 insertions(+), 18 deletions(-) create mode 100644 .gitlab/ci/pre_commit.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 87487c7620..145fc5858c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -24,6 +24,7 @@ include: - '.gitlab/ci/upload_cache.yml' - '.gitlab/ci/docs.yml' - '.gitlab/ci/static-code-analysis.yml' + - '.gitlab/ci/pre_commit.yml' - '.gitlab/ci/pre_check.yml' - '.gitlab/ci/build.yml' - '.gitlab/ci/integration_test.yml' diff --git a/.gitlab/ci/build.yml b/.gitlab/ci/build.yml index 3404d69523..c0105de3e0 100644 --- a/.gitlab/ci/build.yml +++ b/.gitlab/ci/build.yml @@ -103,6 +103,7 @@ fast_template_app: - .build_template_app_template - .rules:build:target_test stage: pre_check + tags: [fast_run, shiny] variables: BUILD_COMMAND_ARGS: "-p" #------------------------------------------------------------------------------ @@ -284,6 +285,7 @@ build_template_app: generate_build_child_pipeline: extends: - .build_template + tags: [fast_run, shiny] dependencies: # set dependencies to null to avoid missing artifacts issue needs: - pipeline_variables diff --git a/.gitlab/ci/integration_test.yml b/.gitlab/ci/integration_test.yml index 9ba8d77dab..5064a6bd1c 100644 --- a/.gitlab/ci/integration_test.yml +++ b/.gitlab/ci/integration_test.yml @@ -34,8 +34,7 @@ gen_integration_pipeline: image: ${CI_INTEGRATION_ASSIGN_ENV} stage: assign_test cache: [] - tags: - - assign_test + tags: [fast_run, shiny] variables: SUBMODULES_TO_FETCH: "none" GIT_LFS_SKIP_SMUDGE: 1 diff --git a/.gitlab/ci/pre_check.yml b/.gitlab/ci/pre_check.yml index 8d1662e09c..0de62d1be8 100644 --- a/.gitlab/ci/pre_check.yml +++ b/.gitlab/ci/pre_check.yml @@ -5,18 +5,6 @@ - host_test dependencies: # set dependencies to null to avoid missing artifacts issue -check_pre_commit: - extends: - - .pre_check_template - - .before_script:minimal - image: $PRE_COMMIT_IMAGE - needs: - - pipeline_variables - script: - - fetch_submodules - - pre-commit run --files $MODIFIED_FILES - - pre-commit run --hook-stage post-commit validate-sbom-manifest - check_version: # Don't run this for feature/bugfix branches, so that it is possible to modify # esp_idf_version.h in a branch before tagging the next version. @@ -142,8 +130,7 @@ pipeline_variables: extends: - .pre_check_template - .before_script:fetch:git_diff - tags: - - build + tags: [fast_run, shiny] script: # MODIFIED_FILES is a list of files that changed, could be used everywhere - MODIFIED_FILES=$(echo "$GIT_DIFF_OUTPUT" | xargs) @@ -174,5 +161,6 @@ pipeline_variables: check_test_cases_env_markers_and_required_runners: extends: - .pre_check_template + tags: [fast_run, shiny] script: - python tools/ci/dynamic_pipelines/scripts/generate_target_test_child_pipeline.py --check diff --git a/.gitlab/ci/pre_commit.yml b/.gitlab/ci/pre_commit.yml new file mode 100644 index 0000000000..fbcd965fed --- /dev/null +++ b/.gitlab/ci/pre_commit.yml @@ -0,0 +1,47 @@ +.check_pre_commit_template: + extends: + - .before_script:minimal + stage: pre_check + image: $PRE_COMMIT_IMAGE + tags: [cache, shiny] + needs: + - pipeline_variables + variables: + # cache pre_commit + PRE_COMMIT_HOME: "$CI_PROJECT_DIR/.cache/pre-commit" + script: + - fetch_submodules + - pre-commit run --files $MODIFIED_FILES + - pre-commit run --hook-stage post-commit validate-sbom-manifest + +check_pre_commit_upload_cache: + extends: + - .check_pre_commit_template + rules: + - if: '($CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_BRANCH =~ /^release\/v/) && $CI_PIPELINE_SOURCE == "push"' + cache: + - key: pre_commit-cache-${LATEST_GIT_TAG} + paths: + - .cache/pre-commit + policy: pull-push + - key: submodule-cache-${LATEST_GIT_TAG} + paths: + - .cache/submodule_archives + policy: pull + +check_pre_commit: + extends: + - .check_pre_commit_template + rules: + - if: '($CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_BRANCH =~ /^release\/v/) && $CI_PIPELINE_SOURCE == "push"' + when: never + - when: on_success + cache: + - key: pre_commit-cache-${LATEST_GIT_TAG} + paths: + - .cache/pre-commit + policy: pull + - key: submodule-cache-${LATEST_GIT_TAG} + paths: + - .cache/submodule_archives + policy: pull diff --git a/tools/ci/dynamic_pipelines/models.py b/tools/ci/dynamic_pipelines/models.py index a71fa2830c..2e8dc234a4 100644 --- a/tools/ci/dynamic_pipelines/models.py +++ b/tools/ci/dynamic_pipelines/models.py @@ -1,6 +1,5 @@ # SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD # SPDX-License-Identifier: Apache-2.0 - import inspect import typing as t from dataclasses import dataclass @@ -83,7 +82,7 @@ class EmptyJob(Job): ) -> None: super().__init__( name=name or 'fake_pass_job', - tags=tags or ['build', 'shiny'], + tags=tags or ['fast_run', 'shiny'], stage=stage or 'build', script=['echo "This is a fake job to pass the pipeline"'], before_script=before_script or [],