Commit Graph

147 Commits

Author SHA1 Message Date
Wilken Rivera 7ec55860e5
Revert golangci-lint to use new-from-rev pinned at 1.23.8 (#9072)
Turns out linting each file individually causes issues with the linter not being able to find the import types.
2020-04-15 06:53:51 -04:00
Megan Marsh f12269f124
fix builds on linux (#9031)
* fix builds on linux

* Build: Move to CGO_ENABLED=0 (#9057)

After further investigation on cross-compiling Go bins on Linux. I found
that statically linking against GCC (for libc) failed to build for ARM
and introduced a possible licensing issue as our bins would essentially
be bundling libc into the bin. Diving further into cross compiling on Linux
I found that the defacto solution is to compile with CGO disabled - this
was also found to be the case for other HashiCorp products.

Disabling CGO has the limitation of not allowing the use of any pkg that
calls out to C (net, os), but in looking into the Packer code base and
the relevant Go code base it appears that the latest versions of Go have
pure Go implementations of the said packages so I believe we are good to
go. I should also point out that CGO is disabled by default when cross
compiling via `go build`. However, the GOX tool will enable it if it is
not explicitly disabled.

Below are three test cases executed to validate the compile bins work as
expected.

Build results after change
```
⇶  make bin
WARN: 'make bin' is for debug / test builds only. Use 'make release' for
release builds.
==> Checking for necessary tools...
==> Entering Packer source dir...
==> Ensuring output directories are present...
==> Removing old builds...
==> Building...
Number of parallel builds: 7

-->   windows/amd64: github.com/hashicorp/packer
-->     linux/arm64: github.com/hashicorp/packer
-->       linux/386: github.com/hashicorp/packer
-->       linux/arm: github.com/hashicorp/packer
-->    darwin/amd64: github.com/hashicorp/packer
-->     windows/386: github.com/hashicorp/packer
-->     linux/amd64: github.com/hashicorp/packer
-->      darwin/386: github.com/hashicorp/packer
==> Copying binaries for this platform...
'./pkg/linux_amd64/packer' -> 'bin/packer'
'./pkg/linux_amd64/packer' -> '/home/wilken/Development/go/bin/packer'

==> Results:
total 111M
-rwxr-xr-x 1 wilken wilken 111M Apr 13 12:29 packer
```

Packer executed on ARM based machine
```
ubuntu@ip-172-31-10-18:~$ ./packer version
Packer v1.5.6-dev (314ac5b65+CHANGES

ubuntu@ip-172-31-10-18:~$ uname -a
Linux ip-172-31-10-18 4.15.0-1054-aws #56-Ubuntu SMP Thu Nov 7 16:18:50 UTC 2019 aarch64 aarch64 aarch64 GNU/Linux

ubuntu@ip-172-31-10-18:~$ ./packer build build.json
null: output will be in this color.

==> null: Running local shell script: /tmp/packer-shell170248556
    null: UUID from Packer: 79cc8532-6114-925d-2a79-33ef6ce281cd
Build 'null' finished.

==> Builds finished. The artifacts of successful builds are:
--> null: Did not export anything. This is the null builder
```

Custom Docker image with updated bin
```
⇶  docker run packertest:latest version
Packer v1.5.6-dev (314ac5b65+CHANGES)

⇶  docker run packertest:latest build build.json
null: output will be in this color.

==> null: Running local shell script: /tmp/packer-shell065599452
    null: UUID from Packer: 852f0604-2be4-9e16-99af-6d7df972ac2e
Build 'null' finished.

==> Builds finished. The artifacts of successful builds are:
--> null: Did not export anything. This is the null builder
```

Windows AMI
```
[...]
==> amazon-ebs: Launching a source AWS instance...
==> amazon-ebs: Adding tags to source instance
    amazon-ebs: Adding tag: "Name": "Packer Builder"
    amazon-ebs: Instance ID: i-04387545cf3e2acd3
==> amazon-ebs: Waiting for instance (i-04387545cf3e2acd3) to become ready...
==> amazon-ebs: Skipping waiting for password since WinRM password set...
==> amazon-ebs: Using winrm communicator to connect: 18.206.100.104
==> amazon-ebs: Waiting for WinRM to become available...
    amazon-ebs: WinRM connected.
==> amazon-ebs: Connected to WinRM!
==> amazon-ebs: Uploading packertest => c:/Windows/Temp
==> amazon-ebs: Provisioning with Powershell...
==> amazon-ebs: Provisioning with powershell script: /tmp/powershell-provisioner173180945
    amazon-ebs: Packer v1.5.6-dev (314ac5b65+CHANGES)
    amazon-ebs: null: output will be in this color.
    amazon-ebs:
```

Co-authored-by: Wilken Rivera <dev@wilkenrivera.com>
2020-04-14 14:48:50 -04:00
Wilken Rivera c9c0ee65d3
circle-ci: update ci-lint steps (#9043)
* new-from-rev option is showing inconsistent results on circle and
locally. This change moves to a custom command `script/lint.sh` that gets a list of added
go files and pipes them to golangci-lint for testing.

* Add a git fetch as a step before retrieving merge-base changes to fix
the issue described at https://discuss.circleci.com/t/checkout-script-adds-commits-to-master-from-circle-branch/14194/2

* Moved source code out of GOPATH to ensure go mod support and reduce
the risk of having golangci-lint trying to scan all of the files within
GOPATH. This was an issue in the past, in changing it I found less OOM
issues on circle.
2020-04-14 12:03:22 +02:00
Jeff Escalante 2999934326
fix generation script, bugfixes in source comments, update website paths in primary codebase 2020-04-07 17:53:22 -04:00
Jeff Escalante 9165be87da
packer.io prefix removal, html extension remove for in-code errors 2020-04-07 17:53:22 -04:00
Sylvia Moss 665330de92
Write generic Builder-Provisioner acceptance test logic (#8963) 2020-04-03 18:17:09 +02:00
Wilken Rivera 3a9d356c9d
golangci-lint: Update --new-from-rev option to check only newly added commits (#8923)
* golangci-lint: Update --new-from-rev option to check only code added in the latest commit

Co-authored-by: Adrien Delorme <azr@users.noreply.github.com>
2020-03-20 14:28:48 -04:00
Adrien Delorme b15c92bc1e scripts/generate-plugins.go: programatically gofmt the file before outputing it to avoid having to do that later on 2020-03-17 11:56:32 +01:00
Sylvia Moss fa4b9ae958
Add Codecov configuration (#8862) 2020-03-12 10:36:10 +01:00
Wilken Rivera 5a87760702
makefile: Update code path for golangci-lint (#8751)
While `golangci-lint run` is the same as `golangci-lint run ./...` running it without a
path seems to throw warning messages related to its cache, which is confusing.
This change sets an explicit path for golangci-lint when calling `make lint` or `make ci-lint`.
2020-02-17 11:24:08 +01:00
Wilken Rivera 9ec8b67392
Add golangci-lint to project (#8686)
* Add golangci-lint as linting tool

* Disable failing staticchecks to start; GitHub issue to handle coming soon

* Run `goimports -w` to repair all source files that have improperly
formatted imports

* makefile: Add ci-lint target to run on travis

This change adds a new make target for running golangci-lint on newly
added Go files only. This target is expected to run during Packer ci builds.

* .github/contributing: Add code linting instructions

* travis: Update job configuration to run parallel builds
2020-02-14 11:42:29 -05:00
Adrien Delorme 75a639775e Update Makefile
there's no find dir
2019-10-16 10:24:34 +02:00
Adrien Delorme 1158eeb46d Update Makefile
to @go install ./cmd/mapstructure-to-hcl2 so that we can `make generate` and tests that generated code is what it should be
2019-10-15 12:56:43 +02:00
Adrien Delorme 597a3e323b Merge remote-tracking branch 'origin/master' into scrape_doc_to_builder_struct_config 2019-09-10 13:20:07 +02:00
Adrien Delorme 1091066c57 go get use enumer@master 2019-09-06 12:15:48 +02:00
Adrien Delorme c77a0bd196 remove goimports dependency as the generated code is now correct and won't need fixing
this should save us from running this command every now an then
2019-09-06 12:15:27 +02:00
Adrien Delorme 22a89ccf8a fix comment typo 2019-09-05 17:19:50 +02:00
Adrien Delorme a2e934e7fb Makefile: document why 2019-09-05 17:17:04 +02:00
Adrien Delorme e4563655fd Makefile: go to temporary directory to avoid go get of binaries from changing go deps 2019-09-05 17:11:08 +02:00
Adrien Delorme 4cb7c30987 Merge remote-tracking branch 'origin/master' into scrape_doc_to_builder_struct_config 2019-08-21 16:44:23 +02:00
Megan Marsh b82ab2cc6a change installation of pigeon if off gopath 2019-07-01 12:16:50 -07:00
Adrien Delorme 4c1abf828c
Merge branch 'master' into scrape_doc_to_builder_struct_config 2019-06-19 11:21:06 +02:00
Megan Marsh 0a2f4d884a make bin currently won't work outside of GOPATH 2019-06-14 11:12:58 -07:00
Adrien Delorme 6fcf581e3e remove all generated doc files before generating it again
in order to remove files that should be
2019-06-14 14:58:58 +02:00
Adrien Delorme 4ab5471490 Makefile: install-gen-deps now installs ./cmd/struct-markdown 2019-06-06 17:34:17 +02:00
Adrien Delorme 36ee40b2a1 test that go generated code if what is should be 2019-05-27 16:00:20 +02:00
Adrien Delorme 5a0b5e3944 Makefile: don't run fmt-check in test/testrace
* this is now run on a different circle ci track
2019-05-27 15:42:58 +02:00
Adrien Delorme deb2212e9e Makefile: use `go fmt`
fmt-check no runs go fmt and then a git diff; this should also fail on line ending diffs
2019-05-27 15:37:03 +02:00
Adrien Delorme 768736425e Makefile: remove unused golang.org/x/tools/cmd/stringer dep 2019-05-27 15:07:49 +02:00
Adrien Delorme 26d0448142 Makefile: split install-build-deps vs install-gen-deps 2019-05-27 15:06:49 +02:00
Adrien Delorme abd6eda6c9 generate execution policy from makefile
* make generate now generates on `./...` instead of `.`
2019-05-27 14:52:04 +02:00
Adrien Delorme 267e2253a2 check if running `go mod vendor` has an effect on vendor directory and if so fail 2019-04-11 14:19:25 +02:00
Adrien Delorme 5a896367ef make sure CI builds with GO111MODULE=off 2019-04-11 14:19:25 +02:00
Megan Marsh 12bd1c5f96 increase timeout for tests to reduce flakiness in travis 2019-04-05 10:57:47 -07:00
Adrien Delorme fef25e0b24 Revert "remove vet which seems to have been broken in golang v1.12"
This reverts commit 58f0b8c22e.
2019-03-04 11:18:00 +01:00
Adrien Delorme b842adcffd Update Makefile
make sure we use "go list ./..."
* without removing vendor dir as it is now removed by default.
* stop using ls -d */
2019-03-04 11:17:58 +01:00
Adrien Delorme e9990e8876 use `go vet` instead of `go tool vet`
https://golang.org/doc/go1.12#vet
2019-03-04 11:17:58 +01:00
Megan Marsh 58f0b8c22e remove vet which seems to have been broken in golang v1.12 2019-02-28 14:51:29 -08:00
xinau f5b13e3cb5 added inspec.io provisioner 2019-01-20 15:43:47 +00:00
Megan Marsh f51707630d clean up config.yml and decrease number of parallel processes in build 2018-11-19 16:02:43 -08:00
Adrien Delorme 03620d15c2 Makefile: make find work on windows using `-executable` instead of `-perm +111` 2018-10-16 16:23:07 +02:00
Adrien Delorme 69d59a83c2 Makefile: remove unrequired deps from test 2018-10-16 15:29:01 +02:00
Adrien Delorme 401fddbd33 Makefile remove duplicate go get 2018-10-16 15:28:35 +02:00
Adrien Delorme 161eb23978 makefile: put .PHONY at the top ? 2018-10-16 14:59:16 +02:00
Adrien Delorme ac29ee59f8 makefile: ci now runs only testrace, default runs testrace 2018-10-16 12:08:52 +02:00
Adrien Delorme 8936ddaedf makefile: testrace now uses `deps fmt-check mode-check vet` 2018-10-16 12:05:05 +02:00
Adrien Delorme 389280a530 makefile: refactor vet into it's own command 2018-10-16 12:04:41 +02:00
Adrien Delorme 09e0f2b93b makefile: mode-check ignore ./website/tmp folder 2018-10-16 12:00:15 +02:00
Megan Marsh 268886b7d3 exclude git files (including git hooks) from the executable check 2018-09-06 10:23:58 -07:00
Matthew Hooker 725596268b
Whitelist website vendor from mode check 2018-08-31 11:35:58 -07:00