Skip to content

Commit

Permalink
chore(NA): add ignore and rc files for bazel (#89524)
Browse files Browse the repository at this point in the history
* chore(NA): add bazel related ignore rules

* chore(NA): add bazelrc files setup

* chore(NA): reword on bazelrc comment

* chore(NA): update .eslintignore

Co-authored-by: Tyler Smalley <tylersmalley@me.com>

* chore(NA): rename .bazelrc into .bazelrc-ci

* chore(NA): update .gitignore

Co-authored-by: Tyler Smalley <tylersmalley@me.com>

Co-authored-by: Tyler Smalley <tylersmalley@me.com>
  • Loading branch information
mistic and tylersmalley committed Jan 28, 2021
1 parent b4931e6 commit ecf7dd4
Show file tree
Hide file tree
Showing 8 changed files with 175 additions and 0 deletions.
15 changes: 15 additions & 0 deletions .bazelignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Bazel does not support wildcards like .gitignore
# Issues are opened for to include that feature but not available yet
# https://github.com/bazelbuild/bazel/issues/7093
# https://github.com/bazelbuild/bazel/issues/8106
.ci
.git
.github
.idea
.teamcity
.yarn-local-mirror
bazel-cache
bazel-dist
build
node_modules
target
9 changes: 9 additions & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Inspired on from https://raw.githubusercontent.com/bazelbuild/rules_nodejs/master/.bazelrc
# Import shared settings first so we can override below
import %workspace%/.bazelrc.common

# Remote cache settings for local env
# build --remote_cache=https://storage.googleapis.com/kibana-bazel-cache
# build --incompatible_remote_results_ignore_disk=true
# build --remote_accept_cached=true
# build --remote_upload_local_results=false
118 changes: 118 additions & 0 deletions .bazelrc.common
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
# Inspired on from https://raw.githubusercontent.com/bazelbuild/rules_nodejs/master/common.bazelrc
# Common Bazel settings for JavaScript/NodeJS workspaces
# This rc file is automatically discovered when Bazel is run in this workspace,
# see https://docs.bazel.build/versions/master/guide.html#bazelrc
#
# The full list of Bazel options: https://docs.bazel.build/versions/master/command-line-reference.html

# Cache action outputs on disk so they persist across output_base and bazel shutdown (eg. changing branches)
build --disk_cache=bazel-cache/disk-cache

# Bazel repo cache settings
build --repository_cache=bazel-cache/repository-cache

# Bazel will create symlinks from the workspace directory to output artifacts.
# Build results will be placed in a directory called "bazel-dist/bin"
# This will still create a bazel-out symlink in
# the project directory, which must be excluded from the
# editor's search path.
build --symlink_prefix=bazel-dist/
# To disable the symlinks altogether (including bazel-out) we can use
# build --symlink_prefix=/
# however this makes it harder to find outputs.

# Prevents the creation of bazel-out dir
build --experimental_no_product_name_out_symlink

# Make direct file system calls to create symlink trees
build --experimental_inprocess_symlink_creation

# Incompatible flags to run with
build --incompatible_no_implicit_file_export
build --incompatible_restrict_string_escapes

# Log configs
## different from default
common --color=yes
build --show_task_finish
build --noshow_progress
build --noshow_loading_progress

## enforced default values
build --show_result=1

# Specifies desired output mode for running tests.
# Valid values are
# 'summary' to output only test status summary
# 'errors' to also print test logs for failed tests
# 'all' to print logs for all tests
# 'streamed' to output logs for all tests in real time
# (this will force tests to be executed locally one at a time regardless of --test_strategy value).
test --test_output=errors

# Support for debugging NodeJS tests
# Add the Bazel option `--config=debug` to enable this
# --test_output=streamed
# Stream stdout/stderr output from each test in real-time.
# See https://docs.bazel.build/versions/master/user-manual.html#flag--test_output for more details.
# --test_strategy=exclusive
# Run one test at a time.
# --test_timeout=9999
# Prevent long running tests from timing out
# See https://docs.bazel.build/versions/master/user-manual.html#flag--test_timeout for more details.
# --nocache_test_results
# Always run tests
# --node_options=--inspect-brk
# Pass the --inspect-brk option to all tests which enables the node inspector agent.
# See https://nodejs.org/de/docs/guides/debugging-getting-started/#command-line-options for more details.
# --define=VERBOSE_LOGS=1
# Rules will output verbose logs if the VERBOSE_LOGS environment variable is set. `VERBOSE_LOGS` will be passed to
# `nodejs_binary` and `nodejs_test` via the default value of the `default_env_vars` attribute of those rules.
# --compilation_mode=dbg
# Rules may change their build outputs if the compilation mode is set to dbg. For example,
# mininfiers such as terser may make their output more human readable when this is set. `COMPILATION_MODE` will be passed to
# `nodejs_binary` and `nodejs_test` via the default value of the `default_env_vars` attribute of those rules.
# See https://docs.bazel.build/versions/master/user-manual.html#flag--compilation_mode for more details.
test:debug --test_output=streamed --test_strategy=exclusive --test_timeout=9999 --nocache_test_results --define=VERBOSE_LOGS=1
# Use bazel run with `--config=debug` to turn on the NodeJS inspector agent.
# The node process will break before user code starts and wait for the debugger to connect.
run:debug --define=VERBOSE_LOGS=1 -- --node_options=--inspect-brk
# The following option will change the build output of certain rules such as terser and may not be desirable in all cases
build:debug --compilation_mode=dbg

# Turn off legacy external runfiles
# This prevents accidentally depending on this feature, which Bazel will remove.
build --nolegacy_external_runfiles
run --nolegacy_external_runfiles
test --nolegacy_external_runfiles

# Turn on --incompatible_strict_action_env which was on by default
# in Bazel 0.21.0 but turned off again in 0.22.0. Follow
# https://github.com/bazelbuild/bazel/issues/7026 for more details.
# This flag is needed to so that the bazel cache is not invalidated
# when running bazel via `yarn bazel`.
# See https://github.com/angular/angular/issues/27514.
build --incompatible_strict_action_env
run --incompatible_strict_action_env
test --incompatible_strict_action_env

# Do not build runfile trees by default. If an execution strategy relies on runfile
# symlink tree, the tree is created on-demand. See: https://github.com/bazelbuild/bazel/issues/6627
# and https://github.com/bazelbuild/bazel/commit/03246077f948f2790a83520e7dccc2625650e6df
build --nobuild_runfile_links

# When running `bazel coverage` --instrument_test_targets needs to be set in order to
# collect coverage information from test targets
coverage --instrument_test_targets

# Settings for CI
# Bazel flags for CI are in /src/dev/ci_setup/.bazelrc-ci

# Load any settings specific to the current user.
# .bazelrc.user should appear in .gitignore so that settings are not shared with team members
# This needs to be last statement in this
# config, as the user configuration should be able to overwrite flags from this file.
# See https://docs.bazel.build/versions/master/best-practices.html#bazelrc
# (Note that we use .bazelrc.user so the file appears next to .bazelrc in directory listing,
# rather than user.bazelrc as suggested in the Bazel docs)
try-import %workspace%/.bazelrc.user
3 changes: 3 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,6 @@ snapshots.js
/packages/kbn-ui-framework/dist
/packages/kbn-ui-shared-deps/flot_charts
/packages/kbn-monaco/src/painless/antlr

# Bazel
/bazel-*
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -76,3 +76,7 @@ report.asciidoc

# Yarn local mirror content
.yarn-local-mirror

# Bazel
/bazel-*
/.bazelrc.user
10 changes: 10 additions & 0 deletions src/dev/ci_setup/.bazelrc-ci
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Inspired on https://github.com/angular/angular/blob/master/.circleci/bazel.linux.rc
# These options are only enabled when running on CI
# That is done by copying this file into "$HOME/.bazelrc" which loads after the .bazelrc into the workspace

# Import and load bazelrc common settings for ci env
try-import %workspace%/src/dev/ci_setup/.bazelrc-ci.common

# Remote cache settings for ci env
# build --google_default_credentials
# build --remote_upload_local_results=true
11 changes: 11 additions & 0 deletions src/dev/ci_setup/.bazelrc-ci.common
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Inspired on https://github.com/angular/angular/blob/master/.circleci/bazel.common.rc
# Settings in this file should be OS agnostic

# Don't be spammy in the logs
build --noshow_progress

# Print all the options that apply to the build.
build --announce_rc

# More details on failures
build --verbose_failures=true
5 changes: 5 additions & 0 deletions src/dev/ci_setup/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,8 @@ if [ "$GIT_CHANGES" ]; then
echo -e "$GIT_CHANGES\n"
exit 1
fi

###
### copy .bazelrc-ci into $HOME/.bazelrc
###
cp "src/dev/ci_setup/.bazelrc-ci" "$HOME/.bazelrc";

0 comments on commit ecf7dd4

Please sign in to comment.