summaryrefslogtreecommitdiff
path: root/jenkins-helpers.sh
AgeCommit message (Collapse)Author
2019-03-07Merge remote-tracking branch 'gerrit/master' into tcwg_gnuMaxim Kuvyrkov
Change-Id: Icbe889d07ffb683ea00c63038d827f48a2d96080
2019-03-06Use APM boards for cross-testing.Christophe Lyon
In print_tester_label_for_target(), do not use tk1/tx1 anymore, use APMs instead. However, this means we no longer use armv7 hardware to test arm-* configurations (as opposed to armv8l*). Change-Id: Iff08678c39ad15f59628e5a91f62d0812d0bb0b3
2019-02-26tcwg-dev-build: Enable builds using manifestsMaxim Kuvyrkov
If manifest.txt was uploaded in job's parameters, then pass --manifest option to MakeRelease.job. Fix MakeRelease.job to not pass --target when manifest is set, otherwise ABE complains. Change-Id: I2aa25d3840281159e2ed00cfaab3b9e47a661801
2019-02-22jenkins-helpers.sh: Simplify run_step* functionsMaxim Kuvyrkov
Remove copying of entries from base-artifacts/STEP/ to artifacts/STEP/ for skipped steps. We used to rely on $run_step_prev_artifacts/build-ok markers to detect pass/fail conditions of the previous step -- something that we now explicitly handle with skip_/reset_/stop_on_on_fail modes of run_step(). So remove unused feature. Change-Id: I06e4298aa06ffb2aaf677d2c51e89da61ae9b119
2019-02-19jenkins-helpers.sh: Remove stale locks in git repos.Maxim Kuvyrkov
We get locks in git repo when builds are interrupted during git remote update. Change-Id: I184f6e0f4e401237d85f0e0af328a67be654faec
2019-02-19convert_args_to_variables: Document "==" syntaxDiana Picus
Add a comment explaining "==arr[key] value" syntax for parameters. Change-Id: Id18bd5fc912297cd98e55161f8aa1fd30532e706
2019-02-14Merge branch 'master' into tcwg_gnuPrathamesh Kulkarni
Change-Id: I09d0c3f480b350eb8c1a9a51c13635bb191ce37f
2019-02-14Set run_step_status to 0 before running step.Prathamesh Kulkarni
run_step_status is set to exit status of step only if it fails, else it holds the value of exit status of previous step. Avoid that by initializing it to 0. Change-Id: I1e7625ffc22ad2a44470892b11092e80f2b52eae
2019-02-12Merge branch 'master' into tcwg_gnuPrathamesh Kulkarni
Change-Id: Ifd517229bb3ee7642266e3e66a8682f177992076
2019-02-08jenkins-helpers.sh: Workaround DNS issueMaxim Kuvyrkov
We don't have DNS alias entries tcwg-x86_64-build-09.tcwglab and tcwg-x86_64-build-10.tcwglab -- for build-09.tcwglab and build-10.tcwglab machines. Change-Id: Ib32956b92098ac610be6f178c5d24c23ffa994f0
2019-02-08jenkins-helpers.sh: Support custom docker root dirsMaxim Kuvyrkov
Several of our machines have docker root dir set to /home/docker instead of standard /var/lib/docker. The reason for using /home/docker is to allocate docker containers on the biggest disk partition. Change-Id: I6d16f561b5b8d303cb58d3a30f2847814eb55756
2019-02-07jenkins-helpers.sh: Improve remote_execMaxim Kuvyrkov
Don't add "exec" to the remote command unless necessary. We need this to trigger jenkins jobs via === remote_exec "ci.linaro.org:2222::-l $USER@linaro.org" build ... === Note that "build" is a command of jenkins-cli, not an executable, so prepending "exec" breaks the invocation. Change-Id: If122869dadb76711666aa49690f508757e7ebce9
2019-01-24[WIP] tcwg_bmk projectMaxim Kuvyrkov
Change-Id: Ie0faa9b60e094f7f0ecd607d56d259dcff649382
2019-01-22tcwg_kernel-bisect.sh: Avoid absolute paths in manifestsMaxim Kuvyrkov
... and their use in reproduction instructions. Also - download build-parameter.sh in instructions that test.sh relies on - use curl instead of wget in instuctions - limit commit output to 1000 lines in the email body. Change-Id: Ib3b0cb94134a588e3a8c72fd7261b70d83935450
2019-01-22jenkins-helpers.sh: Improve run_step functionality.Maxim Kuvyrkov
This is partly fix, partly cleanup. At the moment in bisection mode artifacts/results are not populated until first step successfully executes. This means that for bisections of binutils, gcc, and llvm regressions the results file is empty if the build of these projects fails (i.e., no successful steps at all). This causes empty clauses in the bisection emails due to artifacts/results file being empty. We could have fixed this by adding === Starting Y build <value of successful previous step> === to the top of every build step, but instead we refactor and cleanup run_step support to handle constant-value result entries. In addition to current "stop_on_fail" mode we add "skip_on_fail" and "reset_on_fail" modes, which simplify error handling for most build steps. Change-Id: Ic2d1a15fa490ec25be741cdaf718442260c52e6d
2019-01-21round-robin.h: Record correct sha1 of base-artifacts/ in manifestMaxim Kuvyrkov
Git_rev_parse resolves references against refs/remotes/origin/$ref, which is what we want most of the time, but not for HEAD. Refs/remotes/origin/HEAD will, typically return sha1 of repo's master branch, not sha1 of current checkout. The fix is to use plain "git rev-parse". A future patch will rename git_rev_parse to git_remote_rev_parse or something similar. Change-Id: Ic3656ee9880862608928a7e6081fe6559e64c70e
2019-01-21jenkins-helpers: Enable clone_or_update_repo to fetch single branchMaxim Kuvyrkov
... to optimize clone and updates of base-artifacts. The base-artifacts repo has a lot of contineously re-written branches, but these branches are only a few commits deep (they store "stack" of current regressions). We want to fetch only the branch of base-artifacts for configuration we are testing, not the whole repo. This patch adds new parameter to clone_or_update_repo and clone_or_update_repo_no_checkout. Change-Id: I286a78e167ddc2e34a770fb6f8b60323a14fe8c6
2019-01-20jenkins-helpers.sh: Fix fresh_dir and use it in git_cleanMaxim Kuvyrkov
Find races with "rm -rf" and complains about missing files and directories that were just deleted. Ignore find's exit status and stderr. Change-Id: Ie79b9ef56e4932a694cdee16b31384efd99f1c1f
2019-01-17jenkins-helpers.sh: Switch to official LLVM git mirrorMaxim Kuvyrkov
Change-Id: Iea3db4df798980e53ae6fa34d56596ba4b6198b4
2019-01-17jenkins-helpers.sh: Fix "git gc" in clone_or_update_repoMaxim Kuvyrkov
Change-Id: I8f4711912ebf18504ae7cad79c755e482610f840
2019-01-16jenkins-helpers.sh: Speed-up "git gc" in clone_or_update_repoMaxim Kuvyrkov
Run "git gc" in --auto mode to skip repos which are in good shape. Change-Id: I3cd1adffda2736dd1f37d8460f1cf905a537f55e
2019-01-15jenkins-helpers.sh: Implement stack logic for __manifest_fileMaxim Kuvyrkov
In tcwg_kernel-bisect.sh we use manifest handling to put options for tcwg_kernel-build.sh script into build-parameters.sh file. This overwrites __manifest_file variable of bisect job, so we end up forwarding half of bisect manifest into build-parameters.sh. Fix this by adding push/pop logic for __manifest_file variable. Change-Id: I22adc9f0533024063398b5d7cb1a416cad2aa2d1
2019-01-15jenkins-helpers.sh: Workaround stale "git gc" lock.Maxim Kuvyrkov
If build times out during "git gc" or "git gc" is otherwise killed, then we have to clean up a stale lock. Change-Id: I2c60b0a35a0881c2b5b893f6f925ffab5f88fcd4
2019-01-13tcwg_kernel-bisect.sh: Add support to reproduce bisects.Maxim Kuvyrkov
Change-Id: Ie2e0f6db672207123a9903eb7f60de23f316f60a
2019-01-13jenkins-helpers.sh: New helper fresh_dirMaxim Kuvyrkov
Change-Id: I1513712e64500712a5540b9b5a5bd8e1228334c4
2019-01-11jenkins-helpers.sh: Run "git gc" when updating git repos.Maxim Kuvyrkov
This avoids git repos from growing too large. Change-Id: I2cd9b83180ca13557a0aa5558d5019a98b81833b
2019-01-11jenkins-helpers.sh: Add "^^ true/false" switch to manifest handlingMaxim Kuvyrkov
In tcwg_kernel-bisect.sh we need to call tcwg_kernel-build.sh with various options. We also generate manifest for each call so that we can reproduce /bisect/ runs. With current support we need to write something like this to handle reproductions of bisects: === if $reproduce_bisect; then ./tcwg_kernel-build.sh @@ /path/to/manifest.sh else ./tcwg_kernel-build.sh %% /path/to/manifest.sh --build options fi === which is cumbersome and obstructs script logic. This patch adds a "reproduction switch" -- "^^ true/false". When "^^ true %% manifest.sh --build options" it provided, then manifest.sh is sourced and all "--build options" are discarded to avoid changing build environment that manifest.sh sets up. When "^^ false %% manifest.sh --build options" is given, then manifest.sh is created and populated with "--build options". Change-Id: I38fcf37dc024891f5aa858dbd110082692dc09c9
2019-01-11jenkins-helpers.sh: Include contents of sourced config files in manifestMaxim Kuvyrkov
Change-Id: I12bfdcbc182ed807a6ea06f464122e9a8cecaa19
2019-01-11jenkins-helpers.sh: Create directory for manifest file.Maxim Kuvyrkov
Change-Id: I2a430189c09e5f1a4bcb51ecdad32e218ab7b844
2019-01-07git_init_linaro_local_remote to use toolchain/ci/* instead of the same repoKugan Vivekanandarajah
Change-Id: Iffb597ab8dbf676779c3a2135baf9d2f536cc808
2018-12-18tcwg_kernel-build.sh: Improve checking of parameters.Maxim Kuvyrkov
Change-Id: Iba94ba9ea421f2dc326b8909a71807ebe46a52b4
2018-12-18jenkins-helpers.sh: Add git_rev_parse_longMaxim Kuvyrkov
... which will be used for manifest generation. Change-Id: I5402707efc785f0dee507ce597f5ceefe88eaebc
2018-12-14jenkins-helpers.sh: Resolve absolute path to manifest file.Maxim Kuvyrkov
Change-Id: I3763506b1f6e2577022ae238d2a03c72acb05b4b
2018-12-14Alter timeout to work in the presence of set -ePeter Smith
The run_with_timeout_and_retry did not account for set -e so when the first command failed there was no retry. Changed to run the command in a subshell following the example of timeout in print_node_with_least_containers. Also renamed retval to ret to be more consistent with the rest of the script. Change-Id: I2f157b81914fc558d67e484e66c0108915c58dd8
2018-12-12tcwg_kernel*: Stop using and remove default configurationMaxim Kuvyrkov
Rely on manifest snippets in tcwg_kernel/* instead. Also make obligatory_variables handle bash arrays by using "declare -p". User-visible change is that now developers will need to explicitly add "@@ ./tcwg_kernel/gnu-master.sh", etc., which have been default in the past. Change-Id: I788e7cdca098fddeb67e9087252f9d53691407bf
2018-12-12convert_args_to_variables: Rework handling of configuration variablesMaxim Kuvyrkov
1. Add support for bash associative arrays to convert_args_to_variables via "==arr[elem] value" syntax. 2. Improve convert_args_to_variables to use "declare -g" directive to declare variables in the global scope -- instead of "eval var=val" approach. Change-Id: I351669734a3d0e3b6aa1edbf8fa9cb071487775a
2018-12-12Add timeout and retry utility and use it for git clone and fetchPeter Smith
Git has been observed to hang at the git fetch-pack stage when either the git or ssh protocol is used to both local and remote repositories. There are a number of possible reasons for this to happen and it is not unique to Linaro. To work around a hung job keeping a slot open for many hours we add a timeout and retry mechanism that will at a minimum fail fast. Change-Id: I7bcfc66f2ff3b2ceab7dad148effe3397705136e
2018-12-11jenkins-helpers.sh: Avoid stale info in the manifestMaxim Kuvyrkov
... in convert_args_to_variables Change-Id: Ib270cd36c5de170f5e45d18579f70a46cd822298
2018-12-11tcwg_kernel-build.sh: Add --mode continueMaxim Kuvyrkov
Add new "--mode continue" for developer purposes. Preserve existing artifacts and continue build from specified step. Change-Id: I4694cd8ae08f8ea2a5ef9a6c891c731449dc572e
2018-12-10jenkins-helpers.sh, tcwg-update-snapshots_ref.sh: Add tcwg-sq-* machines.Christophe Lyon
In tcwg-update-snapshots_ref.sh, use the label associated with the 64-bits view of these machines, like we do for the other types. In jenkins-helpers.sh, like for other machines, handle both 32 and 64 bits views. Change-Id: I5b9119c138a9078d51fe374f3706922231200a4b
2018-12-07jenkins-helpers: Add manifest generation logic to convert_args_to_variablesMaxim Kuvyrkov
... and re-work bash sourcing logic "@@" to be more flexible / verbose. The idea is that specifying "%% ./manifest.sh" as the 1st argument on the command line will cause all subsequent arguments to be logged in ./manifest.sh. A reproducer build then can include "@@ ./manifest.sh" and reproduce the original build. Build environment that is not on the command line (e.g., repo revisions) can be added to the manifest with help of "manifest_out" helper. E.g., command-line argument "--current_rev master" will be logged in manifest as == current_rev="master" == and then logic in the script can override that with cat <<EOF | manifest_out current_rev=$(git rev-parse HEAD) EOF thus producing manifest with == current_rev="master" ... current_rev=abc123cab == Change-Id: I066be570c08eda4f80f148dccf475d1794eba229
2018-11-26Don't ignore "null" values in variable expansionsMaxim Kuvyrkov
Replace ${var:-default} with ${var-default}. I learned something new about shell scripting today. From bash manual: === When not performing substring expansion, using the form described below (e.g., ‘:-’), Bash tests for a parameter that is unset or null. Omitting the colon results in a test only for a parameter that is unset. Put another way, if the colon is included, the operator tests for both parameter’s existence and that its value is not null; if the colon is omitted, the operator tests only for existence. === The immediate problem I need to fix is handling of host_aarchXX_excludecheck and host_x86_64_excludecheck parameters in tcwg-buildfarm.sh. With ":-" syntax the empty ("null") values are replaced by defaults, causing GCC testsuite to be ignored on aarchXX hosts when "--host_aarchXX_excludecheck ''" is given. There happens to be a single usage ":-" in ${rw:-rw} in start-container-qemu.sh, where ":-" is actually needed. Change-Id: Ibc8e070b698e1c76e2161eb65d40639b8cdec1f3
2018-11-14jenkins-helpers: Add missing print_kernel_targetMaxim Kuvyrkov
... which is used in tcwg_kernel-build.sh:build_linux . Change-Id: I3b2fe9d81c157bc1a8362b0c437fd645960f98b5
2018-11-14tcwg_kernel-build.sh: Fill in update_baseline and push_baselineMaxim Kuvyrkov
... and add git_push helper. Change-Id: I2bdbbc14aa08f9bb10b1690780542c6e049c4b73
2018-11-14tcwg_kernel-build.sh: Fill build_llvm* functionsMaxim Kuvyrkov
... and add print_llvm_target helper. Change-Id: I20b048d4acd942a6e4a06acb2308489f00391a9a
2018-11-14tcwg_kernel-build.sh: Add logic to build Binutils and GCC using ABE.Maxim Kuvyrkov
Add several jenkins-helpers along the way. Change-Id: I6b654f6a5cfa5386d5f691452aacaac11ff89f5b
2018-11-13tcwg_kernel-build.sh: Fill in clone_repo and add git_init_linaro_local_remoteMaxim Kuvyrkov
Change-Id: I36ed5078a80360c42ed6079ae98f76fa94354de7
2018-11-13jenkins-helpers: Autodetect reference repos in clone_or_update_repo_no_checkoutMaxim Kuvyrkov
Change-Id: I2543fd01f5c1238a9a083b1cbc9f181d5a4dc445
2018-11-13jenkins-helpers: Split clone_or_update_repoMaxim Kuvyrkov
... into clone_or_update_repo and clone_or_update_repo_no_checkout for upcoming use-case in tcwg_kernel-build.sh:clone_repo. Change-Id: Ib75169b29255a7fca5db656671df0b491bc76a7c
2018-11-07jenkins-helpers: New run_step helpersMaxim Kuvyrkov
These are designed for build scripts that have several modes of operation. E.g., the tcwg_kernel-build.sh script is going to have "baseline", "jenkins-full", and "bisect" modes, which require running different sets of build steps. The helpers also automate handling of artifact directories and console logs. Change-Id: I3fbb411c63e189b78ea2cbc62a04c1a4a1a30fae