[
https://issues.apache.org/jira/browse/BEAM-12001?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kenneth Knowles updated BEAM-12001:
-----------------------------------
Status: Open (was: Triage Needed)
> Get ValidatesRunner test framework working on Jenkins
> -----------------------------------------------------
>
> Key: BEAM-12001
> URL: https://issues.apache.org/jira/browse/BEAM-12001
> Project: Beam
> Issue Type: Sub-task
> Components: sdk-go
> Reporter: Daniel Oliveira
> Assignee: Daniel Oliveira
> Priority: P2
>
> _This is an ex-post-facto bug documenting work that should have had it's own
> JIRA but didn't. The purpose of this bug is to add a more detailed summary of
> work that is already finished._
> This work was to be able to run the new ValidatesRunner test script on
> Jenkins. Normally that would have been very simple (make a jenkins task and
> just run it), but ended up being a challenge because of a small change from
> the old script: The new one calls `go test` instead of running an already
> compiled go binary, meaning it tries to build the code from the go workspace,
> which doesn't contain the vendored code that gogradle has, which means the
> tests fail to build. Worse, there was no precedent for using the go workspace
> directly on jenkins in the Go SDK yet.
> The first major task was figuring out what approach to take to fix this: I
> tried finding out if I could substitute a gogradle command for the existing
> one (this didn't work. Gogradle has no existing mechanism for adding the
> flags I needed, and making a custom gogradle task wasn't possible for the
> tests). Trying to create a custom gradle task for this outside of the
> gogradle plugin also didn't work, as it lost all the vendoring that gogradle
> was handling. The final solution was to see what Jenkins had built-in for Go.
> Jenkins has its own Go support, but that support also does not include
> vendoring as far as I could tell. The solution that was most likely to work,
> then, was to work around the error by creating a temporary GOPATH and copying
> the Go SDK being tested into it so the tests could still compile with all the
> appropriate vendored code.
> The second major task then was to actually write the code that would do this.
> This involved figuring out the internal structure of Jenkins and what code is
> kept between tests, shared between workers, etc. so that each time we run the
> tests it's done hermetically. After the research was done, the script needed
> to be debugged, and this was a very slow exhausting process, as it involved
> running the postcommit and then waiting about 10 minutes each time for
> everything to spin up and to eventually get to the error. Ultimately this
> approach worked and is what the final PR implements.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)