Hi folks,I'm assessing what it would take to get the Goma server working with BazelBuildfarm for remote execution. I wanted to get some feedback on whether I'm onthe right track, and any major implementation considerations I might be missing.My current focus is getting a running prototype of the Goma client, server, andBuildfarm working together: if all the components run on one machine, that'sfine for now.If my understanding is correct, below is the minimum Goma + RBE setup, and whata minimum Goma + Bazel Buildfarm would look like ("[]" to enclose componentsrunning on the same machine):[Goma client -> Goma server] --Remote Execution API--> [RBE server(?)] -> [RBE worker]
[Goma client -> Goma server --Remote Execution API--> Buildfarm server -> Buildfarm worker]Is the above correct?
My next question pertains to auth. My understanding is that there's two formsof auth going on:1. Goma client authenticates with Goma server to simply say "I own this emailaddress, Google says so". The email whitelist the Goma server is started with(--whitelisted-users flag) then determines whether that user is authorized.2. Goma server authenticates with RBE using a GCP service account(--service-account-json flag).
For a prototype, I don't see any reason to remove 1, and perhaps if Buildfarmserver is setup without authentication it will simply ignore any authinformation transmitted as part of 2 (I'm not sure what this looks like on thewire: maybe a HTTP Authorization header or similar)? Does that sound correct?In other words, is it likely to be possible to get a Buildfarm prototype runningwithout removing/modifying any of the Goma auth code?
Regarding Buildfarm server: is it correct to say that clients can onlycommunicate with it over HTTP/2? I notice that when curling the Buildfarmserver it returns "Unexpected HTTP/1.x request: GET /". I'm guessing this meanseither the Buildfarm server will need to be configured somehow to present avalid certificate, or the Goma server code modified to not enforce certificatechecks?
Finally, is there anything else either RBE or Goma-specific in the communicationbetween Goma server and RBE, or is it a purely an implementation of the RemoteExecution API protocol? Any other major pieces I'm missing?
Regarding Buildfarm server: is it correct to say that clients can onlycommunicate with it over HTTP/2? I notice that when curling the Buildfarmserver it returns "Unexpected HTTP/1.x request: GET /". I'm guessing this meanseither the Buildfarm server will need to be configured somehow to present avalid certificate, or the Goma server code modified to not enforce certificatechecks?gRPC requires HTTP/2. See https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md for more details.
Finally, is there anything else either RBE or Goma-specific in the communicationbetween Goma server and RBE, or is it a purely an implementation of the RemoteExecution API protocol? Any other major pieces I'm missing?I don't understand the question. It's using the API as exposed at https://godoc.org/github.com/bazelbuild/remote-apis/build/bazel/remote/execution/v2.
--M-A
You received this message because you are subscribed to the Google Groups "infra-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to infra-dev+...@chromium.org.
To post to this group, send email to infr...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/infra-dev/CANAQWOX7uL3SFceHkHcw7%2Bz_MfBPs1O11V2_zaxXukc-BKN5pg%40mail.gmail.com.
To unsubscribe from this group and stop receiving emails from it, send an email to infr...@chromium.org.
I note the Goma server seems to dispatch execute jobs inside a wrapper scriptthat assumes the RE API worker is running inside a Docker container (L513:565):I'm not sure I fully understand what assumptions this makes about the workerenvironment. By the looks of it, it assumes that a volume has been mounted inthe Docker container so writes to the $(pwd) carry through to the file system ofthe Docker host. From there, it looks like there's a new docker container spunup from within the first container (docker in docker) for every execute jobhere:It looks like the volume is essentially being "forwarded on" here to providewrite access back to the host from the inner Docker container.Is the "outer" docker container ephemeral (per execute job) like the innerdocker container, or does it persist across execute jobs? Is there a near-termplan to factor this code out of the Goma server so as not to assume the workeris running inside of Docker? I see some hint of that in this comment:
To unsubscribe from this group and stop receiving emails from it, send an email to infra-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/infra-dev/7b017573-00f8-4dec-ac20-30bedca72a85%40chromium.org.
To unsubscribe from this group and stop receiving emails from it, send an email to infr...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/infra-dev/7b017573-00f8-4dec-ac20-30bedca72a85%40chromium.org.
/Kuba
--
You received this message because you are subscribed to the Google Groups "infra-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to infra-dev+...@chromium.org.
To post to this group, send email to infr...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/infra-dev/dd1f35f6-c23e-4e5e-9102-2f92312e7f7d%40chromium.org.
On Wed, Jun 12, 2019 at 9:56 AM Jakub Lason <ku...@opera.com> wrote:Hi guys,I've been observing this thread for a while looking for a hints while trying to make Goma work with BazelBuildFarmas well. Finally, it seems to work. I even managed to replicate the docker setup that is expected by the original wrapper script so entire stack runs almost without changes to either proxy or RE backend code. There are however still two issues that I had to hot fix in order to make it running:- the -insecure-remoteexec flag seems to be necessary as it looks like Bazel BuildFarm does not support SSL. However, there is a code in a proxy (https://chromium.googlesource.com/infra/goma/server/+/refs/heads/master/remoteexec/adapter.go#151) that adds gRPC credentials to the (now) insecure channel. This is rejected by the gRPC framework as credentials cannot be used over insecure channel. As a result the connection to the RE backend cannot be established. (for now, I simply patched the adapter.go and commented out the problematic code)- when using GOMA_ARBITRARY_TOOLCHAIN_SUPPORT the compiler binary is sent together with other inputs. However, when the compiler is a symlink (ie: clag++ -> clang) the backend gets only the symlink target binary while the command line still refers to the original symlink name (ie. clang binary is uploaded to the RE backend but command line still refers the clang++). It looks like both entries (clang and clang++) are included (one as binary, the second one as a symlink) in ToolchainSpec of ExecReq that goes from client to proxy. Later, proxy drops the symlink from inputs that will be pushed to the RE backend (https://chromium.googlesource.com/infra/goma/server/+/refs/heads/master/remoteexec/exec.go#276)
and the missing tool will cause the remote compilation to fail. I wonder if in a case when GOMA_ARBITRARY_TOOLCHAIN_SUPPORT is on the client should resolve all symlinks and send only the link target binary under the name of the symlink (so clang++ is resolved to clang first and later the clang binary is sent with the name of clang++)?
Symlink handling is a weak point of Goma IMO- the simplest solution is to avoid using them, eg by instead using hardlinks or copies.
---Mostyn.--/Kuba
You received this message because you are subscribed to the Google Groups "infra-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to infra-dev+...@chromium.org.
To post to this group, send email to infr...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/infra-dev/dd1f35f6-c23e-4e5e-9102-2f92312e7f7d%40chromium.org.
--Mostyn Bramley-MooreVewd Software
You received this message because you are subscribed to the Google Groups "infra-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to infra-dev+...@chromium.org.
To post to this group, send email to infr...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/infra-dev/CACfMsGEw9Tjyb77KkK6o6a%2Bb7ndjKNiEWFQ0yOGedRAuO4XnuA%40mail.gmail.com.
However, where is symlink?
I believe Directory should have symlinks in its member.
https://github.com/bazelbuild/remote-apis/blob/a5c577357528b33a4adff88c0c7911dd086c6923/build/bazel/remote/execution/v2/remote_execution.proto#L618
Hi all,
I am hitting a road block when running the command from the GOMA server documentation:
autoninja –C out/Release obj/base/base64.o
I am using GOMA with Bazel BuildGrid, I am receiving an ERROR message that the request size sent is to large (larger than 4MB) which is the default request size limit set by protobuf.
Has anyone else encountered this issue and is there a work around? I have made changes to increase the size on both GOMA and BuildGrid to no avail, suggesting that the protobuf max request size has to be changed?
Any help is appreciated
Thank you,
Justin
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/infra-dev/CAPNB-6Uwfu9qjigz9wMb_5c_5K6yMTzd2fP1OuA4WoSk0LgD%3Dg%40mail.gmail.com.
Hi all,
I am hitting a road block when running the command from the GOMA server documentation:
autoninja –C out/Release obj/base/base64.o
I am using GOMA with Bazel BuildGrid, I am receiving an ERROR message that the request size sent is to large (larger than 4MB) which is the default request size limit set by protobuf.
Has anyone else encountered this issue and is there a work around? I have made changes to increase the size on both GOMA and BuildGrid to no avail, suggesting that the protobuf max request size has to be changed?
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/infra-dev/AB3ADFE594111E42BBED9A0D70B174C60C6CA4A5%40ORSMSX104.amr.corp.intel.com.
2019年6月14日(金) 23:00 Moore, Justin1 <justin...@intel.com>:Hi all,
I am hitting a road block when running the command from the GOMA server documentation:
autoninja –C out/Release obj/base/base64.o
I am using GOMA with Bazel BuildGrid, I am receiving an ERROR message that the request size sent is to large (larger than 4MB) which is the default request size limit set by protobuf.
Has anyone else encountered this issue and is there a work around? I have made changes to increase the size on both GOMA and BuildGrid to no avail, suggesting that the protobuf max request size has to be changed?
Hmm, I think either side should set size limit, and Google Remote Build Execution does and goma server doesn't.I'll change goma server also sets size limit.
Hi guys,I've been observing this thread for a while looking for a hints while trying to make Goma work with BazelBuildFarmas well. Finally, it seems to work. I even managed to replicate the docker setup that is expected by the original wrapper script so entire stack runs almost without changes to either proxy or RE backend code. There are however still two issues that I had to hot fix in order to make it running:
Do you happen to have any notes on how you set this up and how you replicated the docker setup in particular?
--
You received this message because you are subscribed to a topic in the Google Groups "infra-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/a/chromium.org/d/topic/infra-dev/-6qIunOC-BI/unsubscribe.
To unsubscribe from this group and all its topics, send an email to infra-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/infra-dev/5186a3d1-ad83-462c-8981-eeb7945a1067%40chromium.org.
--
You received this message because you are subscribed to the Google Groups "infra-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to infra-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/infra-dev/11206795-dd96-456e-adac-2570f6a2fbe4%40chromium.org.
>> To unsubscribe from this group and stop receiving emails from it, send an email to infr...@chromium.org.