From 9621afd8f2ffc64766e945762b900596a2a2deef Mon Sep 17 00:00:00 2001 From: Eduardo Almeida Date: Mon, 19 Feb 2024 17:49:45 +0000 Subject: [PATCH] ci: Skip .base-build job if no source code or configurations are changed --- utils/tests/gitlab-ci-alpine.yml | 2 +- utils/tests/gitlab-ci-clang.yml | 2 +- utils/tests/gitlab-ci-fedora.yml | 1 + utils/tests/gitlab-ci-gcc.yml | 2 +- utils/tests/gitlab-ci-per-commit.yml | 2 +- utils/tests/gitlab-ci-scheduled.yml | 2 +- utils/tests/gitlab-ci-ubuntu.yml | 2 +- utils/tests/gitlab-ci.yml | 18 ++++++++++++++++++ 8 files changed, 25 insertions(+), 6 deletions(-) diff --git a/utils/tests/gitlab-ci-alpine.yml b/utils/tests/gitlab-ci-alpine.yml index e14352423..f2426476b 100644 --- a/utils/tests/gitlab-ci-alpine.yml +++ b/utils/tests/gitlab-ci-alpine.yml @@ -21,7 +21,7 @@ bash iproute2 linux-headers openmpi openmpi-dev - openssh + openssh git variables: COMPILER: g++ diff --git a/utils/tests/gitlab-ci-clang.yml b/utils/tests/gitlab-ci-clang.yml index 403102685..e66ea374e 100644 --- a/utils/tests/gitlab-ci-clang.yml +++ b/utils/tests/gitlab-ci-clang.yml @@ -24,7 +24,7 @@ libgsl-dev $LIBGSL gsl-bin libsqlite3-dev sqlite3 libxml2 libxml2-dev - ssh + ssh git variables: COMPILER: clang++-$CLANG diff --git a/utils/tests/gitlab-ci-fedora.yml b/utils/tests/gitlab-ci-fedora.yml index 7627654fa..90dd261de 100644 --- a/utils/tests/gitlab-ci-fedora.yml +++ b/utils/tests/gitlab-ci-fedora.yml @@ -28,6 +28,7 @@ python python-devel pygobject3-devel python3-gobject gobject-introspection-devel graphviz-devel graphviz ipython + git - source /etc/profile.d/modules.sh - module load mpi/openmpi-x86_64 variables: diff --git a/utils/tests/gitlab-ci-gcc.yml b/utils/tests/gitlab-ci-gcc.yml index 64318ca8f..e0d29a94c 100644 --- a/utils/tests/gitlab-ci-gcc.yml +++ b/utils/tests/gitlab-ci-gcc.yml @@ -36,7 +36,7 @@ libsqlite3-dev sqlite3 libeigen3-dev qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools - ssh + ssh git weekly-gcc: rules: diff --git a/utils/tests/gitlab-ci-per-commit.yml b/utils/tests/gitlab-ci-per-commit.yml index e5f0b4a55..fca441bd4 100644 --- a/utils/tests/gitlab-ci-per-commit.yml +++ b/utils/tests/gitlab-ci-per-commit.yml @@ -15,7 +15,7 @@ base-devel gcc clang libc++ cmake ninja ccache python boost gsl gtk3 openmpi - openssh + openssh git # Build stage per-commit-clang-optimized-libc++: diff --git a/utils/tests/gitlab-ci-scheduled.yml b/utils/tests/gitlab-ci-scheduled.yml index fc4c076cc..b3fef4ee3 100644 --- a/utils/tests/gitlab-ci-scheduled.yml +++ b/utils/tests/gitlab-ci-scheduled.yml @@ -16,7 +16,7 @@ python boost gsl gtk3 openmpi glibc-debug - openssh + openssh git script: - mkdir -p $CCACHE_BASEDIR_VALUE - export CCACHE_BASEDIR=${PWD} diff --git a/utils/tests/gitlab-ci-ubuntu.yml b/utils/tests/gitlab-ci-ubuntu.yml index 72bd1c2e0..ff8825f70 100644 --- a/utils/tests/gitlab-ci-ubuntu.yml +++ b/utils/tests/gitlab-ci-ubuntu.yml @@ -28,7 +28,7 @@ libsqlite3-dev sqlite3 libeigen3-dev qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools - ssh + ssh git weekly-ubuntu: rules: diff --git a/utils/tests/gitlab-ci.yml b/utils/tests/gitlab-ci.yml index b657e242d..9171df0b3 100644 --- a/utils/tests/gitlab-ci.yml +++ b/utils/tests/gitlab-ci.yml @@ -45,6 +45,22 @@ workflow: # MODE (debug, default, optimized) .base-build: script: + - if (git remote | grep -qw upstream) ; then + git remote remove upstream ; + fi + - git remote add -t $CI_DEFAULT_BRANCH --no-tags -f upstream https://gitlab.com/nsnam/ns-3-dev.git + - git diff --name-only upstream/$CI_DEFAULT_BRANCH > $FILES_CHANGED + + # Run this job in the following cases: 1) default branch, 2) changes to source code, 3) changes to configurations. + # Skip this job in the opposite cases. + # File paths generated by git diff are relative to the working tree. + - | + if [[ $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH ]] && + !(grep -qE ".*\.(cc|h)|CMakeLists.txt|build-support/|ns3|utils/tests/.*\.(yaml|yml)" $FILES_CHANGED) ; then + echo "No source code or configurations changes found in this MR. Skipping this job."; + exit 0; + fi + - mkdir -p $CCACHE_BASEDIR_VALUE - export CCACHE_BASEDIR=${PWD} - export CCACHE_DIR=${PWD}/$CCACHE_BASEDIR_VALUE @@ -82,11 +98,13 @@ workflow: timeout: 12h variables: CCACHE_BASEDIR_VALUE: ns-3-ccache-storage + FILES_CHANGED: git-diff-name-only.txt artifacts: expire_in: 2 day paths: - build/ - .lock-* + - $FILES_CHANGED # Weekly jobs for other distribution and compilers include: