From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>,
"SZEDER Gábor" <szeder.dev@gmail.com>,
"Carlo Marcelo Arenas Belón" <carenas@gmail.com>,
"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
"Victoria Dye" <vdye@github.com>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: [PATCH 07/10] CI: export variables via a wrapper
Date: Thu, 14 Jul 2022 21:39:44 +0200 [thread overview]
Message-ID: <patch-07.10-e6805874eb9-20220714T193808Z-avarab@gmail.com> (raw)
In-Reply-To: <cover-00.10-00000000000-20220714T193808Z-avarab@gmail.com>
Add and use a "setenv" wrapper to export the variables set in
ci/lib.sh.
For now this merely adds debugging information about what variables
are set, but in a subsequent commit we'll expand this to set variables
in $GITHUB_ENV instead of the environment, and thus carry variable
settings between steps in a job.
We'll also eventually be interested in what type of variable we're
setting, and when it needs to be used, because we'll prominently
expose what variables we set in what CI "step", so having only the
ones we actually use will improve readability.
To that end call the "setenv" function with optional "--install",
"--build", "--test" and "--all" parameters to indicate whether they're
needed for building, testing or both.
We currently ignore the "varname" parameter, but will make use of it in a
subsequent commit. Adding it here reduces the needless churn, as we
won't need to change all these lines again for that subsequent change.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
ci/lib.sh | 69 +++++++++++++++++++++++++++++----------
ci/run-build-and-tests.sh | 34 +++++++++----------
2 files changed, 68 insertions(+), 35 deletions(-)
diff --git a/ci/lib.sh b/ci/lib.sh
index 44039152ebc..67b7b32a0f1 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -59,6 +59,38 @@ else
begin_group "CI setup"
fi
+# Helper functions
+setenv () {
+ while test $# != 0
+ do
+ case "$1" in
+ --install)
+ ;;
+ --build)
+ ;;
+ --test)
+ ;;
+ --all)
+ ;;
+ -*)
+ echo "BUG: bad setenv() option '$1'" >&2
+ exit 1
+ ;;
+ *)
+ break
+ ;;
+ esac
+ shift
+ done
+
+ key=$1
+ val=$2
+ shift 2
+
+ eval "$key=\"$val\""
+ eval "export $key"
+}
+
check_unignored_build_artifacts () {
! git ls-files --other --exclude-standard --error-unmatch \
-- ':/*' 2>/dev/null ||
@@ -73,7 +105,7 @@ handle_failed_tests () {
}
# GitHub Action doesn't set TERM, which is required by tput
-export TERM=${TERM:-dumb}
+setenv --all TERM ${TERM:-dumb}
# How many jobs to run in parallel?
NPROC=10
@@ -87,11 +119,11 @@ then
# We are running in Azure Pipelines
CC="${CC:-gcc}"
- export GIT_PROVE_OPTS="--timer --jobs $NPROC --state=failed,slow,save"
+ setenv --test GIT_PROVE_OPTS "--timer --jobs $NPROC --state=failed,slow,save"
GIT_TEST_OPTS="--verbose-log -x --write-junit-xml"
test Windows_NT != "$AGENT_OS" ||
GIT_TEST_OPTS="--no-chain-lint --no-bin-wrappers $GIT_TEST_OPTS"
- export GIT_TEST_OPTS
+ setenv --test GIT_TEST_OPTS "$GIT_TEST_OPTS"
elif test true = "$GITHUB_ACTIONS"
then
CI_TYPE=github-actions
@@ -118,21 +150,21 @@ then
return 1
}
- export GIT_PROVE_OPTS="--timer --jobs $NPROC"
+ setenv --test GIT_PROVE_OPTS "--timer --jobs $NPROC"
GIT_TEST_OPTS="--verbose-log -x --github-workflow-markup"
test Windows != "$RUNNER_OS" ||
GIT_TEST_OPTS="--no-chain-lint --no-bin-wrappers $GIT_TEST_OPTS"
- export GIT_TEST_OPTS
+ setenv --test GIT_TEST_OPTS "$GIT_TEST_OPTS"
else
echo "Could not identify CI type" >&2
env >&2
exit 1
fi
-export DEVELOPER=1
-export DEFAULT_TEST_TARGET=prove
-export GIT_TEST_CLONE_2GB=true
-export SKIP_DASHED_BUILT_INS=YesPlease
+setenv --build DEVELOPER 1
+setenv --test DEFAULT_TEST_TARGET prove
+setenv --test GIT_TEST_CLONE_2GB true
+setenv --build SKIP_DASHED_BUILT_INS YesPlease
case "$runs_on_pool" in
ubuntu-latest)
@@ -148,19 +180,20 @@ ubuntu-latest)
MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/python2"
fi
- export GIT_TEST_HTTPD=true
+ setenv --test GIT_TEST_HTTPD true
# The Linux build installs the defined dependency versions below.
# The OS X build installs much more recent versions, whichever
# were recorded in the Homebrew database upon creating the OS X
# image.
# Keep that in mind when you encounter a broken OS X build!
- export LINUX_P4_VERSION="16.2"
- export LINUX_GIT_LFS_VERSION="1.5.2"
+ setenv --install LINUX_P4_VERSION "16.2"
+ setenv --install LINUX_GIT_LFS_VERSION "1.5.2"
- P4_PATH="$HOME/custom/p4"
- GIT_LFS_PATH="$HOME/custom/git-lfs"
- export PATH="$GIT_LFS_PATH:$P4_PATH:$PATH"
+ setenv --install P4_PATH "$HOME/custom/p4"
+ setenv --install GIT_LFS_PATH "$HOME/custom/git-lfs"
+ setenv --all PATH "$GIT_LFS_PATH:$P4_PATH:$PATH"
+ setenv --test GIT_TEST_HTTPD true
;;
macos-latest)
if [ "$jobname" = osx-gcc ]
@@ -183,13 +216,13 @@ linux-musl)
MAKEFLAGS="$MAKEFLAGS GIT_TEST_UTF8_LOCALE=C.UTF-8"
;;
linux-leaks)
- export SANITIZE=leak
- export GIT_TEST_PASSING_SANITIZE_LEAK=true
+ setenv --build SANITIZE leak
+ setenv --test GIT_TEST_PASSING_SANITIZE_LEAK true
;;
esac
MAKEFLAGS="$MAKEFLAGS CC=${CC:-cc}"
-export MAKEFLAGS
+setenv --all MAKEFLAGS "$MAKEFLAGS"
end_group
set -x
diff --git a/ci/run-build-and-tests.sh b/ci/run-build-and-tests.sh
index 1a89a4967bf..b7774e4abcf 100755
--- a/ci/run-build-and-tests.sh
+++ b/ci/run-build-and-tests.sh
@@ -9,33 +9,33 @@ run_tests=t
case "$jobname" in
linux-gcc)
- export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
+ setenv --test GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME main
;;
linux-TEST-vars)
- export GIT_TEST_SPLIT_INDEX=yes
- export GIT_TEST_MERGE_ALGORITHM=recursive
- export GIT_TEST_FULL_IN_PACK_ARRAY=true
- export GIT_TEST_OE_SIZE=10
- export GIT_TEST_OE_DELTA_SIZE=5
- export GIT_TEST_COMMIT_GRAPH=1
- export GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS=1
- export GIT_TEST_MULTI_PACK_INDEX=1
- export GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP=1
- export GIT_TEST_ADD_I_USE_BUILTIN=0
- export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master
- export GIT_TEST_WRITE_REV_INDEX=1
- export GIT_TEST_CHECKOUT_WORKERS=2
+ setenv --test GIT_TEST_SPLIT_INDEX yes
+ setenv --test GIT_TEST_MERGE_ALGORITHM recursive
+ setenv --test GIT_TEST_FULL_IN_PACK_ARRAY true
+ setenv --test GIT_TEST_OE_SIZE 10
+ setenv --test GIT_TEST_OE_DELTA_SIZE 5
+ setenv --test GIT_TEST_COMMIT_GRAPH 1
+ setenv --test GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS 1
+ setenv --test GIT_TEST_MULTI_PACK_INDEX 1
+ setenv --test GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP 1
+ setenv --test GIT_TEST_ADD_I_USE_BUILTIN 0
+ setenv --test GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME master
+ setenv --test GIT_TEST_WRITE_REV_INDEX 1
+ setenv --test GIT_TEST_CHECKOUT_WORKERS 2
;;
linux-clang)
- export GIT_TEST_DEFAULT_HASH=sha1
+ setenv --test GIT_TEST_DEFAULT_HASH sha1
;;
linux-sha256)
- export GIT_TEST_DEFAULT_HASH=sha256
+ setenv --test GIT_TEST_DEFAULT_HASH sha256
;;
pedantic)
# Don't run the tests; we only care about whether Git can be
# built.
- export DEVOPTS=pedantic
+ setenv --build DEVOPTS pedantic
run_tests=
;;
esac
--
2.37.1.996.g651fc6e809f
next prev parent reply other threads:[~2022-07-14 19:40 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-14 19:39 [PATCH 00/10] ci: make it easy to run locally, part 1 Ævar Arnfjörð Bjarmason
2022-07-14 19:39 ` [PATCH 01/10] CI: run "set -ex" early in ci/lib.sh Ævar Arnfjörð Bjarmason
2022-07-14 19:39 ` [PATCH 02/10] CI: remove more dead Travis CI support Ævar Arnfjörð Bjarmason
2022-07-14 19:39 ` [PATCH 03/10] CI: remove dead "tree skipping" code Ævar Arnfjörð Bjarmason
2022-07-14 19:39 ` [PATCH 04/10] CI: make "$jobname" explicit, remove fallback Ævar Arnfjörð Bjarmason
2022-07-14 19:39 ` [PATCH 05/10] CI/lib.sh: stop adding leading whitespace to $MAKEFLAGS Ævar Arnfjörð Bjarmason
2022-07-14 19:39 ` [PATCH 06/10] CI: consistently use "export" in ci/lib.sh Ævar Arnfjörð Bjarmason
2022-07-14 19:39 ` Ævar Arnfjörð Bjarmason [this message]
2022-07-14 19:39 ` [PATCH 08/10] CI: don't have "git grep" invoke a pager in tree content check Ævar Arnfjörð Bjarmason
2022-07-14 19:39 ` [PATCH 09/10] CI: have "static-analysis" run a "make ci-static-analysis" target Ævar Arnfjörð Bjarmason
2022-07-14 19:39 ` [PATCH 10/10] CI: have "static-analysis" run "check-builtins", not "documentation" Ævar Arnfjörð Bjarmason
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=patch-07.10-e6805874eb9-20220714T193808Z-avarab@gmail.com \
--to=avarab@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=carenas@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=szeder.dev@gmail.com \
--cc=vdye@github.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).