mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 01:38:56 -04:00
* chore(NA): move bazel workspace status into nodejs executable * chore(NA): removed unused console.log on error * chore(NA): ability to setup different name for origin remote on workspace status command * chore(NA): do not fail if cant collect repo url Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
parent
460af4cb7a
commit
43c9e57d6f
3 changed files with 81 additions and 58 deletions
2
.bazelrc
2
.bazelrc
|
@ -11,7 +11,7 @@ import %workspace%/.bazelrc.common
|
|||
|
||||
# BuildBuddy
|
||||
## Metadata settings
|
||||
build --workspace_status_command=$(pwd)/src/dev/bazel_workspace_status.sh
|
||||
build --workspace_status_command="node ./src/dev/bazel_workspace_status.js"
|
||||
# Enable this in case you want to share your build info
|
||||
# build --build_metadata=VISIBILITY=PUBLIC
|
||||
build --build_metadata=TEST_GROUPS=//packages
|
||||
|
|
80
src/dev/bazel_workspace_status.js
Normal file
80
src/dev/bazel_workspace_status.js
Normal file
|
@ -0,0 +1,80 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0 and the Server Side Public License, v 1; you may not use this file except
|
||||
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
||||
* Side Public License, v 1.
|
||||
*/
|
||||
|
||||
// Inspired on https://github.com/buildbuddy-io/buildbuddy/blob/master/workspace_status.sh
|
||||
// This script will be run bazel when building process starts to
|
||||
// generate key-value information that represents the status of the
|
||||
// workspace. The output should be like
|
||||
//
|
||||
// KEY1 VALUE1
|
||||
// KEY2 VALUE2
|
||||
//
|
||||
// If the script exits with non-zero code, it's considered as a failure
|
||||
// and the output will be discarded.
|
||||
|
||||
(async () => {
|
||||
const execa = require('execa');
|
||||
const os = require('os');
|
||||
|
||||
async function runCmd(cmd, args) {
|
||||
try {
|
||||
return await execa(cmd, args);
|
||||
} catch (e) {
|
||||
return { exitCode: 1 };
|
||||
}
|
||||
}
|
||||
|
||||
// Git repo
|
||||
const kbnGitOriginName = process.env.KBN_GIT_ORIGIN_NAME || 'origin';
|
||||
const repoUrlCmdResult = await runCmd('git', [
|
||||
'config',
|
||||
'--get',
|
||||
`remote.${kbnGitOriginName}.url`,
|
||||
]);
|
||||
if (repoUrlCmdResult.exitCode === 0) {
|
||||
// Only output REPO_URL when found it
|
||||
console.log(`REPO_URL ${repoUrlCmdResult.stdout}`);
|
||||
}
|
||||
|
||||
// Commit SHA
|
||||
const commitSHACmdResult = await runCmd('git', ['rev-parse', 'HEAD']);
|
||||
if (commitSHACmdResult.exitCode !== 0) {
|
||||
process.exit(1);
|
||||
}
|
||||
console.log(`COMMIT_SHA ${commitSHACmdResult.stdout}`);
|
||||
|
||||
// Git branch
|
||||
const gitBranchCmdResult = await runCmd('git', ['rev-parse', '--abbrev-ref', 'HEAD']);
|
||||
if (gitBranchCmdResult.exitCode !== 0) {
|
||||
process.exit(1);
|
||||
}
|
||||
console.log(`GIT_BRANCH ${gitBranchCmdResult.stdout}`);
|
||||
|
||||
// Tree status
|
||||
const treeStatusCmdResult = await runCmd('git', ['diff-index', '--quiet', 'HEAD', '--']);
|
||||
const treeStatusVarStr = 'GIT_TREE_STATUS';
|
||||
if (treeStatusCmdResult.exitCode === 0) {
|
||||
console.log(`${treeStatusVarStr} Clean`);
|
||||
} else {
|
||||
console.log(`${treeStatusVarStr} Modified`);
|
||||
}
|
||||
|
||||
// Host
|
||||
if (process.env.CI) {
|
||||
const hostCmdResult = await runCmd('hostname');
|
||||
const hostStr = hostCmdResult.stdout.split('-').slice(0, -1).join('-');
|
||||
const coresStr = os.cpus().filter((cpu, index) => {
|
||||
return !cpu.model.includes('Intel') || index % 2 === 1;
|
||||
}).length;
|
||||
|
||||
if (hostCmdResult.exitCode !== 0) {
|
||||
process.exit(1);
|
||||
}
|
||||
console.log(`HOST ${hostStr}-${coresStr}`);
|
||||
}
|
||||
})();
|
|
@ -1,57 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Inspired on https://github.com/buildbuddy-io/buildbuddy/blob/master/workspace_status.sh
|
||||
# This script will be run bazel when building process starts to
|
||||
# generate key-value information that represents the status of the
|
||||
# workspace. The output should be like
|
||||
#
|
||||
# KEY1 VALUE1
|
||||
# KEY2 VALUE2
|
||||
#
|
||||
# If the script exits with non-zero code, it's considered as a failure
|
||||
# and the output will be discarded.
|
||||
|
||||
# Git repo
|
||||
repo_url=$(git config --get remote.origin.url)
|
||||
if [[ $? != 0 ]];
|
||||
then
|
||||
exit 1
|
||||
fi
|
||||
echo "REPO_URL ${repo_url}"
|
||||
|
||||
# Commit SHA
|
||||
commit_sha=$(git rev-parse HEAD)
|
||||
if [[ $? != 0 ]];
|
||||
then
|
||||
exit 1
|
||||
fi
|
||||
echo "COMMIT_SHA ${commit_sha}"
|
||||
|
||||
# Git branch
|
||||
repo_url=$(git rev-parse --abbrev-ref HEAD)
|
||||
if [[ $? != 0 ]];
|
||||
then
|
||||
exit 1
|
||||
fi
|
||||
echo "GIT_BRANCH ${repo_url}"
|
||||
|
||||
# Tree status
|
||||
git diff-index --quiet HEAD --
|
||||
if [[ $? == 0 ]];
|
||||
then
|
||||
tree_status="Clean"
|
||||
else
|
||||
tree_status="Modified"
|
||||
fi
|
||||
echo "GIT_TREE_STATUS ${tree_status}"
|
||||
|
||||
# Host
|
||||
if [ "$CI" = "true" ]; then
|
||||
host=$(hostname | sed 's|\(.*\)-.*|\1|')
|
||||
cores=$(grep ^cpu\\scores /proc/cpuinfo | uniq | awk '{print $4}' )
|
||||
if [[ $? != 0 ]];
|
||||
then
|
||||
exit 1
|
||||
fi
|
||||
echo "HOST ${host}-${cores}"
|
||||
fi
|
Loading…
Add table
Add a link
Reference in a new issue