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

x/build: run a Windows Server 2016 builder #17513

Open
bradfitz opened this Issue Oct 19, 2016 · 17 comments

Comments

Projects
None yet
5 participants
@bradfitz
Member

bradfitz commented Oct 19, 2016

As @quentinmit noted in #17365 (comment) , GCE now has Windows Server 2016 (NT 10.0, ~Windows 10).

We should run a builder for it.

@quentinmit, do you want to do it?

/cc @alexbrainman

@bradfitz bradfitz added the Builders label Oct 19, 2016

@bradfitz bradfitz added this to the Unreleased milestone Oct 19, 2016

@quentinmit

This comment has been minimized.

Contributor

quentinmit commented Oct 19, 2016

I'm up for trying to set this up but I don't think I have time until after feature freeze.

@quentinmit quentinmit self-assigned this Oct 19, 2016

@bradfitz

This comment has been minimized.

Member

bradfitz commented Oct 20, 2016

That's fine. I've found the back half the dev cycle to be a better time for builder work too.

@bradfitz

This comment has been minimized.

Member

bradfitz commented Oct 20, 2016

@alexbrainman

This comment has been minimized.

Member

alexbrainman commented Oct 21, 2016

I am happy to help with whatever you need. The https://github.com/golang/build/tree/master/env/windows is pretty good. I don't think Windows Server 2016 will be much different. I did manage to build Windows Server 2008 of my own to use, but I have no idea how you manage disk image (for the builders) once you build it. Like I said, let me know and I will help.

Alex

@gopherbot

This comment has been minimized.

gopherbot commented Apr 21, 2017

CL https://golang.org/cl/41393 mentions this issue.

@bradfitz bradfitz added the OS-Windows label Apr 21, 2017

@bradfitz bradfitz assigned bradfitz and johnsonj and unassigned quentinmit Apr 21, 2017

@gopherbot

This comment has been minimized.

gopherbot commented Apr 21, 2017

CL https://golang.org/cl/41395 mentions this issue.

gopherbot pushed a commit that referenced this issue Apr 21, 2017

net: skip Windows test using getmac if getmac cmdlet not available
This doesn't appear to be present on Windows Server 2012 or 2016:

https://build.golang.org/log/6ea21b99c9b8a2be20f9aeaec6c425b84faf1af7
https://build.golang.org/log/2bcf04f1df003577352f4f987a39a59a081094ee

Updates #17513
Updates #20073

Change-Id: I72820704b4cb16bb1720b7f6a9f2e10028c71334
Reviewed-on: https://go-review.googlesource.com/41395
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
@alexbrainman

This comment has been minimized.

Member

alexbrainman commented Apr 21, 2017

FYI
While debugging #18555 I noticed that Windows Server 2016 comes with Docker.
I followed approximately this https://docs.microsoft.com/en-us/virtualization/windowscontainers/quick-start/quick-start-windows-server (I started at #18555 (comment) ).

Alex

gopherbot pushed a commit to golang/build that referenced this issue Apr 21, 2017

dashboard: add configs for new windows 2008, 2012, 2016 builders
See also: https://golang.org/cl/41142

Updates golang/go#17513

Change-Id: Ie743ae4604e65892e28423ed0af008450b647197
Reviewed-on: https://go-review.googlesource.com/41393
Reviewed-by: Jeff Johnson <jrjohnson@google.com>
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
@bradfitz

This comment has been minimized.

Member

bradfitz commented Apr 24, 2017

@johnsonj, the new 2008, 2012, and 2016 builders are working great, but before I take down the old ones and switch over trybots, we need to make 32-bit mode (GOARCH=386 + GOHOSTARCH=386) work.

Currently I get:

$ gomote run -e GOARCH=386 -e GOHOSTARCH=386 user-bradfitz-windows-amd64-2008-0 go/src/all.bat
...
ok      reflect 0.262s
ok      regexp  0.174s
ok      regexp/syntax   0.711s
--- FAIL: TestStdcallAndCDeclCallbacks (1.25s)
panic: Failed to load C:\windows\TEMP\TestCDeclCallback955796461\test.dll: %1 is not a valid Win32 application. [recovered]
        panic: Failed to load C:\windows\TEMP\TestCDeclCallback955796461\test.dll: %1 is not a valid Win32 application.
@johnsonj

This comment has been minimized.

Member

johnsonj commented Apr 24, 2017

@bradfitz

This comment has been minimized.

Member

bradfitz commented Apr 24, 2017

Note that the old builder image had both a 32-bit and 64-bit compiler installed, and then the buildlet masked out a $PATH entry depending on the GOARCH value so the correct gcc was always used.

Not sure whether we still have to play such games. Maybe.

@gopherbot

This comment has been minimized.

gopherbot commented Apr 24, 2017

CL https://golang.org/cl/41611 mentions this issue.

gopherbot pushed a commit to golang/build that referenced this issue Apr 24, 2017

dashboard: retire windows-amd64-gce builder, replace with windows-amd…
…64-2008

The windows-amd64-2008 is the same OS as windows-amd64-gce but is an
auto-generated image.

TODO: 386 auto-generated Windows builders, and then maybe we'll move
TryBots to Windows Server 2016. One step at a time. This should be a
no-op.  I verified performance is the same.

Updates golang/go#17513

Change-Id: I34984db14b87d03771e15465978b1687df6895f7
Reviewed-on: https://go-review.googlesource.com/41611
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
@johnsonj

This comment has been minimized.

Member

johnsonj commented Apr 27, 2017

Yes we do need to play the games. I'm splitting the gcc toolchain to C:\godep\gcc32 and C:\godep\gcc64 so we'll need to set the paths appropriately.

@gopherbot

This comment has been minimized.

gopherbot commented Apr 27, 2017

CL https://golang.org/cl/42014 mentions this issue.

gopherbot pushed a commit to golang/build that referenced this issue Apr 27, 2017

cmd/buildlet, dashboard: support for v2 windows images, 386 builder
- images now include 32bit gcc in c:\godeps\gcc32
- 64bit gcc has moved to c:\godeps\gcc64
- update host definitions for new image versions
- add windows-386-2008 host

Updates golang/go#17513

Change-Id: Ib3f5d4b2b1702c05089cf633529ebf38db270a43
Reviewed-on: https://go-review.googlesource.com/42014
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
@gopherbot

This comment has been minimized.

gopherbot commented Apr 27, 2017

CL https://golang.org/cl/41142 mentions this issue.

gopherbot pushed a commit to golang/build that referenced this issue Apr 27, 2017

env/windows: automate buildlet image creation
Generate a Windows image that will start a buildlet on boot and have the
dependencies needed for building/testing go/cgo.

provisioning:
- `sysprep.ps1`: disables unneeded features (eg UAC) and downloads
  dependencies (stage0, gcc)
- `startup.ps1`: sets up a user account for unattended login. this can't
  be done in the sysprep stage because the `local machine` does not yet
  exist to create accounts under.

helpers:
- `build.bash`: builds a single image, creates a vm from the image and
  verifies it with `test_buildlet.bash`
- `make.bash`: builds a set of images
- `connect.bash`: helper to RDP into a machine for troubleshooting
- `test_buildlet.bash`: validation script to exercise a buildlet

Updates golang/go#17513

Change-Id: I4812ed1fc9862ae0aa44b712ea270fd52d0c505f
Reviewed-on: https://go-review.googlesource.com/41142
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
@johnsonj

This comment has been minimized.

Member

johnsonj commented May 1, 2017

@bradfitz - anything else on your mind for this issue or good to close?

@bradfitz

This comment has been minimized.

Member

bradfitz commented May 1, 2017

I'd like to verify that the buildlets are coming up reliably still. I seem to recall still seeing some timing out and the coordinator auto-retrying a new machine. Let me run some numbers when I have a sec.

We also need to switch trybots (back) to using the new images. They were flipped back to the old images after the old image sometimes failed to boot.

@gopherbot

This comment has been minimized.

gopherbot commented Oct 15, 2017

Change https://golang.org/cl/70845 mentions this issue: [release-branch.go1.8] net: skip Windows test using getmac if getmac cmdlet not available

gopherbot pushed a commit that referenced this issue Oct 25, 2017

[release-branch.go1.8] net: skip Windows test using getmac if getmac …
…cmdlet not available

This doesn't appear to be present on Windows Server 2012 or 2016:

https://build.golang.org/log/6ea21b99c9b8a2be20f9aeaec6c425b84faf1af7
https://build.golang.org/log/2bcf04f1df003577352f4f987a39a59a081094ee

Updates #17513
Updates #20073

Change-Id: I72820704b4cb16bb1720b7f6a9f2e10028c71334
Reviewed-on: https://go-review.googlesource.com/41395
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
Reviewed-on: https://go-review.googlesource.com/70845
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment