1+ orbs :
2+ win : circleci/windows@1.0.0
3+
4+ version : 2.1
5+
6+ executors :
7+ golang :
8+ docker :
9+ - image : docker.mirror.hashicorp.services/circleci/golang:1.16
10+ resource_class : medium+
11+ darwin :
12+ macos :
13+ xcode : " 12.0.0"
14+
15+ commands :
16+ install-go-run-tests-unix :
17+ parameters :
18+ GOOS :
19+ type : string
20+ GOVERSION :
21+ type : string
22+ HOME :
23+ type : string
24+ default : " ~"
25+ steps :
26+ - checkout
27+ - run : curl https://dl.google.com/go/go<< parameters.GOVERSION >>.<< parameters.GOOS >>-amd64.tar.gz | tar -C << parameters.HOME >>/ -xz
28+ - run : << parameters.HOME >>/go/bin/go test ./... -coverprofile=coverage.txt -covermode=atomic
29+ install-go-run-tests-windows :
30+ parameters :
31+ GOVERSION :
32+ type : string
33+ steps :
34+ - checkout
35+ - run : curl https://dl.google.com/go/go<< parameters.GOVERSION >>.windows-amd64.zip --output ~/go<< parameters.GOVERSION >>.windows-amd64.zip
36+ - run : unzip ~/go<< parameters.GOVERSION >>.windows-amd64.zip -d ~/
37+ - run : ~/go/bin/go test ./... -coverprofile=coverage.txt -covermode=atomic
38+ build-and-persist-plugin-binary :
39+ parameters :
40+ GOOS :
41+ type : string
42+ GOARCH :
43+ default : " amd64"
44+ type : string
45+ steps :
46+ - checkout
47+ - run : GOOS=<< parameters.GOOS >> GOARCH=<<parameters.GOARCH>> go build -o ./pkg/packer_plugin_tencentcloud_<< parameters.GOOS >>_<< parameters.GOARCH >> .
48+ - run : zip ./pkg/packer_plugin_tencentcloud_<< parameters.GOOS >>_<< parameters.GOARCH >>.zip ./pkg/packer_plugin_tencentcloud_<< parameters.GOOS >>_<< parameters.GOARCH >>
49+ - run : rm ./pkg/packer_plugin_tencentcloud_<< parameters.GOOS >>_<< parameters.GOARCH >>
50+ - persist_to_workspace :
51+ root : .
52+ paths :
53+ - ./pkg/
54+
55+ # Golang CircleCI 2.0 configuration file
56+ #
57+ # Check https://circleci.com/docs/2.0/language-go/ for more details
58+ jobs :
59+ test-linux :
60+ executor : golang
61+ working_directory : /go/src/github.com/hashicorp/packer-plugin-tencentcloud
62+ steps :
63+ - checkout
64+ - run : go test -count 1 ./... -coverprofile=coverage.txt -covermode=atomic -timeout=3m
65+ test-darwin :
66+ executor : darwin
67+ working_directory : ~/go/github.com/hashicorp/packer-plugin-tencentcloud
68+ steps :
69+ - install-go-run-tests-unix :
70+ GOOS : darwin
71+ GOVERSION : " 1.16"
72+ test-windows :
73+ executor :
74+ name : win/vs2019
75+ shell : bash.exe
76+ steps :
77+ - install-go-run-tests-windows :
78+ GOVERSION : " 1.16"
79+ check-lint :
80+ executor : golang
81+ steps :
82+ - checkout
83+ - run : git fetch --all
84+ - run :
85+ command : |
86+ echo "==> Updating linter dependencies..."
87+ curl -sSfL -q https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.23.8
88+ echo "==> Running linter on newly added Go source files..."
89+ GO111MODULE=on golangci-lint run --new-from-rev=$(shell git merge-base origin/main HEAD) ./...
90+ no_output_timeout : 30m
91+ check-fmt :
92+ executor : golang
93+ steps :
94+ - checkout
95+ - run : |
96+ go fmt ./...
97+ echo "==> Checking that code complies with go fmt requirements..."
98+ git diff --exit-code; if [ $$? -eq 1 ]; then \
99+ echo "Found files that are not fmt'ed."; \
100+ echo "You can use the command: \`go fmt ./...\` to reformat code."; \
101+ exit 1; \
102+ fi
103+ check-generate :
104+ executor : golang
105+ working_directory : /go/src/github.com/hashicorp/packer-plugin-tencentcloud
106+ steps :
107+ - checkout
108+ - run : |
109+ make generate
110+ echo "==> Checking that auto-generated code is not changed..."
111+ git diff --exit-code; if [ $$? -eq 1 ]; then \
112+ echo "Found diffs in go generated code."; \
113+ echo "You can use the command: \`make generate\` to reformat code."; \
114+ exit 1; \
115+ fi
116+ build_linux :
117+ executor : golang
118+ steps :
119+ - build-and-persist-plugin-binary :
120+ GOOS : linux
121+ build_windows :
122+ executor : golang
123+ working_directory : /go/src/github.com/hashicorp/packer-plugin-tencentcloud
124+ steps :
125+ - build-and-persist-plugin-binary :
126+ GOOS : windows
127+ build_darwin :
128+ executor : golang
129+ working_directory : /go/src/github.com/hashicorp/packer-plugin-tencentcloud
130+ steps :
131+ - build-and-persist-plugin-binary :
132+ GOOS : darwin
133+ build_darwin_arm64 :
134+ executor : golang
135+ working_directory : /go/src/github.com/hashicorp/packer-plugin-tencentcloud
136+ steps :
137+ - build-and-persist-plugin-binary :
138+ GOOS : darwin
139+ GOARCH : arm64
140+ build_freebsd :
141+ executor : golang
142+ working_directory : /go/src/github.com/hashicorp/packer-plugin-tencentcloud
143+ steps :
144+ - build-and-persist-plugin-binary :
145+ GOOS : freebsd
146+ build_solaris :
147+ executor : golang
148+ working_directory : /go/src/github.com/hashicorp/packer-plugin-tencentcloud
149+ steps :
150+ - build-and-persist-plugin-binary :
151+ GOOS : solaris
152+ build_openbsd :
153+ executor : golang
154+ working_directory : /go/src/github.com/hashicorp/packer-plugin-tencentcloud
155+ steps :
156+ - build-and-persist-plugin-binary :
157+ GOOS : openbsd
158+ store_artifacts :
159+ executor : golang
160+ steps :
161+ - attach_workspace :
162+ at : .
163+ - store_artifacts :
164+ path : ./pkg/
165+ destination : /
166+
167+ workflows :
168+ version : 2
169+ test :
170+ jobs :
171+ - test-linux
172+ - test-darwin
173+ - test-windows
174+ check-code :
175+ jobs :
176+ - check-lint
177+ - check-fmt
178+ - check-generate
179+ build_plugin_binaries :
180+ jobs :
181+ - build_linux
182+ - build_darwin
183+ - build_darwin_arm64
184+ - build_windows
185+ - build_freebsd
186+ - build_openbsd
187+ - build_solaris
188+ - store_artifacts :
189+ requires :
190+ - build_linux
191+ - build_darwin
192+ - build_darwin_arm64
193+ - build_windows
194+ - build_freebsd
195+ - build_openbsd
196+ - build_solaris
0 commit comments