* ci: use versioned cargo wrapper for crate ordering (cherry picked from commit554002b73c
) * ci: nvidia persistence mode isn't a hard requirement (cherry picked from commitf213e48067
) * sdk: ensure `ld` can find criterion when running BPF tests (cherry picked from commit7ee39fcb0f
) * ci: give localnet nodes a more time to startup (cherry picked from commit278a241db3
) * ci: add downstream build wrapper (cherry picked from commit761e324982
) * ci: add wrapper script for running ci locally Linux only for now (cherry picked from commit0bc38153ca
) Co-authored-by: Trent Nelson <trent@solana.com>
This commit is contained in:
@ -74,10 +74,13 @@ else
|
|||||||
export CI_BUILD_ID=
|
export CI_BUILD_ID=
|
||||||
export CI_COMMIT=
|
export CI_COMMIT=
|
||||||
export CI_JOB_ID=
|
export CI_JOB_ID=
|
||||||
export CI_OS_NAME=
|
|
||||||
export CI_PULL_REQUEST=
|
export CI_PULL_REQUEST=
|
||||||
export CI_REPO_SLUG=
|
export CI_REPO_SLUG=
|
||||||
export CI_TAG=
|
export CI_TAG=
|
||||||
|
# Don't override ci/run-local.sh
|
||||||
|
if [[ -z $CL_LOCAL_RUN ]]; then
|
||||||
|
export CI_OS_NAME=
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
|
@ -127,7 +127,7 @@ startNode() {
|
|||||||
waitForNodeToInit() {
|
waitForNodeToInit() {
|
||||||
declare initCompleteFile=$1
|
declare initCompleteFile=$1
|
||||||
while [[ ! -r $initCompleteFile ]]; do
|
while [[ ! -r $initCompleteFile ]]; do
|
||||||
if [[ $SECONDS -ge 240 ]]; then
|
if [[ $SECONDS -ge 300 ]]; then
|
||||||
echo "^^^ +++"
|
echo "^^^ +++"
|
||||||
echo "Error: $initCompleteFile not found in $SECONDS seconds"
|
echo "Error: $initCompleteFile not found in $SECONDS seconds"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -12,10 +12,14 @@ import json
|
|||||||
import subprocess
|
import subprocess
|
||||||
import sys;
|
import sys;
|
||||||
|
|
||||||
|
real_file = os.path.realpath(__file__)
|
||||||
|
ci_path = os.path.dirname(real_file)
|
||||||
|
src_root = os.path.dirname(ci_path)
|
||||||
|
|
||||||
def load_metadata():
|
def load_metadata():
|
||||||
|
cmd = f'{src_root}/cargo metadata --no-deps --format-version=1'
|
||||||
return json.loads(subprocess.Popen(
|
return json.loads(subprocess.Popen(
|
||||||
'cargo metadata --no-deps --format-version=1',
|
cmd, shell=True, stdout=subprocess.PIPE).communicate()[0])
|
||||||
shell=True, stdout=subprocess.PIPE).communicate()[0])
|
|
||||||
|
|
||||||
def get_packages():
|
def get_packages():
|
||||||
metadata = load_metadata()
|
metadata = load_metadata()
|
||||||
|
54
ci/run-local.sh
Executable file
54
ci/run-local.sh
Executable file
@ -0,0 +1,54 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
cd "$(dirname "$0")/.."
|
||||||
|
|
||||||
|
export CI_LOCAL_RUN=true
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
case $(uname -o) in
|
||||||
|
*/Linux)
|
||||||
|
export CI_OS_NAME=linux
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "local CI runs are only supported on Linux" 1>&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
steps=()
|
||||||
|
steps+=(test-sanity)
|
||||||
|
steps+=(shellcheck)
|
||||||
|
steps+=(test-checks)
|
||||||
|
steps+=(test-coverage)
|
||||||
|
steps+=(test-stable)
|
||||||
|
steps+=(test-stable-perf)
|
||||||
|
steps+=(test-downstream-builds)
|
||||||
|
steps+=(test-bench)
|
||||||
|
steps+=(test-local-cluster)
|
||||||
|
|
||||||
|
step_index=0
|
||||||
|
if [[ -n "$1" ]]; then
|
||||||
|
start_step="$1"
|
||||||
|
while [[ $step_index -lt ${#steps[@]} ]]; do
|
||||||
|
step="${steps[$step_index]}"
|
||||||
|
if [[ "$step" = "$start_step" ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
step_index=$((step_index + 1))
|
||||||
|
done
|
||||||
|
if [[ $step_index -eq ${#steps[@]} ]]; then
|
||||||
|
echo "unexpected start step: \"$start_step\"" 1>&2
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "** starting at step: \"$start_step\" **"
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
while [[ $step_index -lt ${#steps[@]} ]]; do
|
||||||
|
step="${steps[$step_index]}"
|
||||||
|
cmd="ci/${step}.sh"
|
||||||
|
$cmd
|
||||||
|
step_index=$((step_index + 1))
|
||||||
|
done
|
9
ci/test-downstream-builds.sh
Executable file
9
ci/test-downstream-builds.sh
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
cd "$(dirname "$0")/.."
|
||||||
|
|
||||||
|
export CI_LOCAL_RUN=true
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
scripts/build-downstream-projects.sh
|
@ -57,7 +57,7 @@ test-stable-perf)
|
|||||||
# Enable persistence mode to keep the CUDA kernel driver loaded, avoiding a
|
# Enable persistence mode to keep the CUDA kernel driver loaded, avoiding a
|
||||||
# lengthy and unexpected delay the first time CUDA is involved when the driver
|
# lengthy and unexpected delay the first time CUDA is involved when the driver
|
||||||
# is not yet loaded.
|
# is not yet loaded.
|
||||||
sudo --non-interactive ./net/scripts/enable-nvidia-persistence-mode.sh
|
sudo --non-interactive ./net/scripts/enable-nvidia-persistence-mode.sh || true
|
||||||
|
|
||||||
rm -rf target/perf-libs
|
rm -rf target/perf-libs
|
||||||
./fetch-perf-libs.sh
|
./fetch-perf-libs.sh
|
||||||
|
@ -191,6 +191,7 @@ endef
|
|||||||
|
|
||||||
define TEST_EXEC_RULE
|
define TEST_EXEC_RULE
|
||||||
$1: $2
|
$1: $2
|
||||||
|
LD_LIBRARY_PATH=$(TESTFRAMEWORK_RPATH) \
|
||||||
$2$(\n)
|
$2$(\n)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user