Skip to content
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

Upgrade Development Information and Test Configurations for Go 1.13 #9992

Closed
6 tasks
bflad opened this issue Sep 4, 2019 · 2 comments · Fixed by #10206
Closed
6 tasks

Upgrade Development Information and Test Configurations for Go 1.13 #9992

bflad opened this issue Sep 4, 2019 · 2 comments · Fixed by #10206
Labels
provider Pertains to the provider itself, rather than any interaction with AWS. technical-debt Addresses areas of the codebase that need refactoring or redesign.

Comments

@bflad
Copy link
Contributor

bflad commented Sep 4, 2019

Community Note

  • Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment

Description

Go 1.13 has been released. 🎉

This project typically upgrades its Go version for development and testing shortly after release to get the latest and greatest Go functionality.

Some considerations:

  • Go 1.13 removes support for macOS 10.10 and earlier:

As announced in the Go 1.12 release notes, Go 1.13 now requires macOS 10.11 El Capitan or later; support for previous versions has been discontinued.

macOS 10.11 is four years old, which seems acceptable to remove in a minor release with a CHANGELOG note.

  • Verify all formatting, linting, and testing works as expected
  • Verify gox builds for all currently supported architectures
  • Verify goenv support for Go 1.13
  • Update README.md
  • Update .travis.yml
  • Update CHANGELOG.md with note about macOS 10.11 requirement

References

@bflad bflad added technical-debt Addresses areas of the codebase that need refactoring or redesign. provider Pertains to the provider itself, rather than any interaction with AWS. labels Sep 4, 2019
@github-actions github-actions bot added the needs-triage Waiting for first response or review from a maintainer. label Sep 4, 2019
@bflad bflad removed the needs-triage Waiting for first response or review from a maintainer. label Sep 4, 2019
@bflad
Copy link
Contributor Author

bflad commented Sep 5, 2019

goenv support has been merged (go-nv/goenv#95) but not in tagged release yet.

golangci-lint@v1.17.1 has Go module pseudo-timestamp issues that need to be resolved upstream (golangci/golangci-lint#659) and preferably released in a timely manner. Otherwise, these will require temporary replace Go module directives:

replace github.com/go-critic/go-critic v0.0.0-20181204210945-1df300866540 => github.com/go-critic/go-critic v0.3.5-0.20190526074819-1df300866540
replace github.com/golangci/errcheck v0.0.0-20181003203344-ef45e06d44b6 => github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6
replace github.com/golangci/go-tools v0.0.0-20180109140146-af6baa5dc196 => github.com/golangci/go-tools v0.0.0-20190318060251-af6baa5dc196
replace github.com/golangci/gofmt v0.0.0-20181105071733-0b8337e80d98 => github.com/golangci/gofmt v0.0.0-20181222123516-0b8337e80d98
replace github.com/golangci/gosec v0.0.0-20180901114220-66fb7fc33547 => github.com/golangci/gosec v0.0.0-20190211064107-66fb7fc33547
replace github.com/golangci/ineffassign v0.0.0-20180808204949-42439a7714cc => github.com/golangci/ineffassign v0.0.0-20190609212857-42439a7714cc
replace github.com/golangci/lint-1 v0.0.0-20180610141402-ee948d087217 => github.com/golangci/lint-1 v0.0.0-20190420132249-ee948d087217
replace mvdan.cc/unparam v0.0.0-20190124213536-fbb59629db34 => mvdan.cc/unparam v0.0.0-20190209190245-fbb59629db34

bflad added a commit that referenced this issue Sep 23, 2019
Reference: #9992
Reference: #10054

The main change here (and impetus because it seems to use too much memory in Go 1.12 for TravisCI to successfully pass linting) is upgrading github.com/golangci/golangci-lint to v1.18.0, which has fixes for Go 1.13 support in its listed dependencies. It was upgraded via:

```console
$ go get github.com/golangci/golangci-lint@v1.18.0
$ go mod tidy
$ go mod vendor
```

The addition of `go 1.13` to the `go.mod` file signals that this module should be built with that version of Go or later. Different than Go 1.12, any Go 1.13 command run against the module will always add that versioning information to the go.mod file. We add this once now to prevent unnecessary Git differences in the future. Development, testing, and building with Go 1.12 and earlier should not be affected as we are not introducing any breaking changes at the moment, but we do not officially support versions other than what is tested against via TravisCI.

As a simple verification of the above statement:

```console
$ go1.12 version
go version go1.12.9 darwin/amd64
$ go1.12 test ./...
?   	github.com/terraform-providers/terraform-provider-aws	[no test files]
ok  	github.com/terraform-providers/terraform-provider-aws/aws	1.313s
$ go1.12 build
$
```

Passes unit testing, linting, smoke acceptance testing, and release process cross-compilation testing.

```console
$ TF_ACC=1 go test ./aws -v -timeout 120m -parallel 20 -run='TestAccAWSProvider'
...
--- PASS: TestAccAWSProvider_Region_AwsCommercial (2.58s)
--- PASS: TestAccAWSProvider_Region_AwsGovCloudUs (2.59s)
--- PASS: TestAccAWSProvider_Region_AwsChina (2.60s)
--- PASS: TestAccAWSProvider_Endpoints_Deprecated (2.72s)
--- PASS: TestAccAWSProvider_Endpoints (2.80s)
PASS
ok  	github.com/terraform-providers/terraform-provider-aws/aws	3.846s
$ gox -os='linux darwin windows freebsd openbsd solaris' -arch='386 amd64 arm' -osarch='!darwin/arm !darwin/386' -ldflags '-s -w -X aws/version.ProviderVersion=99.99.99 -X aws/version.ProtocolVersion=4' -output 'results/{{.OS}}_{{.Arch}}/terraform-provider-aws_v99.99.99_x4' .
Number of parallel builds: 7

-->    darwin/amd64: github.com/terraform-providers/terraform-provider-aws
-->     linux/amd64: github.com/terraform-providers/terraform-provider-aws
-->   solaris/amd64: github.com/terraform-providers/terraform-provider-aws
-->       linux/arm: github.com/terraform-providers/terraform-provider-aws
-->   windows/amd64: github.com/terraform-providers/terraform-provider-aws
-->     freebsd/386: github.com/terraform-providers/terraform-provider-aws
-->     windows/386: github.com/terraform-providers/terraform-provider-aws
-->   freebsd/amd64: github.com/terraform-providers/terraform-provider-aws
-->     freebsd/arm: github.com/terraform-providers/terraform-provider-aws
-->     openbsd/386: github.com/terraform-providers/terraform-provider-aws
-->   openbsd/amd64: github.com/terraform-providers/terraform-provider-aws
-->       linux/386: github.com/terraform-providers/terraform-provider-aws
```
@ghost
Copy link

ghost commented Nov 1, 2019

I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues.

If you feel this issue should be reopened, we encourage creating a new issue linking back to this one for added context. Thanks!

@ghost ghost locked and limited conversation to collaborators Nov 1, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
provider Pertains to the provider itself, rather than any interaction with AWS. technical-debt Addresses areas of the codebase that need refactoring or redesign.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant