-
Notifications
You must be signed in to change notification settings - Fork 140
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bazelisk does not work with integration tests and sandboxing #498
Comments
fweikert
added a commit
to fweikert/continuous-integration
that referenced
this issue
Feb 26, 2019
We have replaced Bazel with Bazelisk on all CI workers. As a consequence, calling "bazel" from PATH will actually invoke Bazelisk, which in turn downloads the requested version of Bazel into a cache directory and then executes it. This caused a problem when an integration test invoked Bazel from PATH (aka Bazelisk) while running inside a sandbox: The sandbox blocked access to the cache directory, thus failing the test. bazelbuild#497 tried to address this problem by whitelisting the cache directory via the --sandbox_writable_path flag. However, this flag requires the given path to exist, which was not the case when tests were running a Bazel binary from their runfiles instead of Bazelisk. Since we cannot easily detect whether a test invokes Bazelisk or another Bazel binary, we're working around this problem by creating the Bazelisk cache directory before running any tests. Fixes bazelbuild#498.
fweikert
added a commit
that referenced
this issue
Feb 26, 2019
* Explicitly create Bazelisk's cache directory. We have replaced Bazel with Bazelisk on all CI workers. As a consequence, calling "bazel" from PATH will actually invoke Bazelisk, which in turn downloads the requested version of Bazel into a cache directory and then executes it. This caused a problem when an integration test invoked Bazel from PATH (aka Bazelisk) while running inside a sandbox: The sandbox blocked access to the cache directory, thus failing the test. #497 tried to address this problem by whitelisting the cache directory via the --sandbox_writable_path flag. However, this flag requires the given path to exist, which was not the case when tests were running a Bazel binary from their runfiles instead of Bazelisk. Since we cannot easily detect whether a test invokes Bazelisk or another Bazel binary, we're working around this problem by creating the Bazelisk cache directory before running any tests. Fixes #498.
joeleba
pushed a commit
to joeleba/continuous-integration
that referenced
this issue
Jun 17, 2019
* Explicitly create Bazelisk's cache directory. We have replaced Bazel with Bazelisk on all CI workers. As a consequence, calling "bazel" from PATH will actually invoke Bazelisk, which in turn downloads the requested version of Bazel into a cache directory and then executes it. This caused a problem when an integration test invoked Bazel from PATH (aka Bazelisk) while running inside a sandbox: The sandbox blocked access to the cache directory, thus failing the test. bazelbuild#497 tried to address this problem by whitelisting the cache directory via the --sandbox_writable_path flag. However, this flag requires the given path to exist, which was not the case when tests were running a Bazel binary from their runfiles instead of Bazelisk. Since we cannot easily detect whether a test invokes Bazelisk or another Bazel binary, we're working around this problem by creating the Bazelisk cache directory before running any tests. Fixes bazelbuild#498.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Calling Bazelisk from within an integration test used to fail since the sandbox blocked write access to Bazelisk's cache. #497 attempted to solve this problem by using the --sandbox_writable_path flag.
However, this flag actually requires the directory to exist, which isn't always the case (e.g. when running a custom Bazel binary inside the test):
ERROR: /workdir/BUILD:68:1: Couldn't build file bazel-srcs.tar: PackageTar bazel-srcs.tar failed: I/O exception during sandboxed execution: /home/bazel/.cache/bazelisk (No such file or directory)
Examples:
https://buildkite.com/bazel/google-bazel-presubmit/builds/15840#6bf81d8e-dbc2-4a23-9129-47a0955d87e7
https://buildkite.com/bazel/google-bazel-presubmit/builds/15838#6fdbdb7c-f60c-45ac-8c57-4f27b463ff35
The text was updated successfully, but these errors were encountered: