github.com/onflow/flow-go@v0.33.17/Makefile (about) 1 # The short Git commit hash 2 SHORT_COMMIT := $(shell git rev-parse --short HEAD) 3 BRANCH_NAME:=$(shell git rev-parse --abbrev-ref HEAD | tr '/' '-') 4 # The Git commit hash 5 COMMIT := $(shell git rev-parse HEAD) 6 # The tag of the current commit, otherwise empty 7 VERSION := $(shell git describe --tags --abbrev=2 --match "v*" --match "secure-cadence*" 2>/dev/null) 8 9 # By default, this will run all tests in all packages, but we have a way to override this in CI so that we can 10 # dynamically split up CI jobs into smaller jobs that can be run in parallel 11 GO_TEST_PACKAGES := ./... 12 13 # Image tag: if image tag is not set, set it with version (or short commit if empty) 14 ifeq (${IMAGE_TAG},) 15 IMAGE_TAG := ${VERSION} 16 endif 17 18 ifeq (${IMAGE_TAG},) 19 IMAGE_TAG := ${SHORT_COMMIT} 20 endif 21 22 IMAGE_TAG_NO_ADX := $(IMAGE_TAG)-without-adx 23 IMAGE_TAG_NO_NETGO_NO_ADX := $(IMAGE_TAG)-without-netgo-without-adx 24 IMAGE_TAG_ARM := $(IMAGE_TAG)-arm 25 26 # Name of the cover profile 27 COVER_PROFILE := coverage.txt 28 # Disable go sum database lookup for private repos 29 GOPRIVATE=github.com/dapperlabs/* 30 # OS 31 UNAME := $(shell uname) 32 33 # Used when building within docker 34 GOARCH := $(shell go env GOARCH) 35 36 # The location of the k8s YAML files 37 K8S_YAMLS_LOCATION_STAGING=./k8s/staging 38 39 40 # docker container registry 41 export CONTAINER_REGISTRY := gcr.io/flow-container-registry 42 export DOCKER_BUILDKIT := 1 43 44 # set `CRYPTO_FLAG` when building natively (not cross-compiling) 45 include crypto_adx_flag.mk 46 47 # needed for CI 48 .PHONY: noop 49 noop: 50 @echo "This is a no-op target" 51 52 cmd/collection/collection: 53 CGO_CFLAGS=$(CRYPTO_FLAG) go build -o cmd/collection/collection cmd/collection/main.go 54 55 cmd/util/util: 56 CGO_CFLAGS=$(CRYPTO_FLAG) go build -o cmd/util/util cmd/util/main.go 57 58 .PHONY: update-core-contracts-version 59 update-core-contracts-version: 60 # updates the core-contracts version in all of the go.mod files 61 # usage example: CC_VERSION=0.16.0 make update-core-contracts-version 62 ./scripts/update-core-contracts.sh $(CC_VERSION) 63 make tidy 64 65 .PHONY: update-cadence-version 66 update-cadence-version: 67 # updates the cadence version in all of the go.mod files 68 # usage example: CC_VERSION=0.16.0 make update-cadence-version 69 ./scripts/update-cadence.sh $(CC_VERSION) 70 make tidy 71 72 .PHONY: unittest-main 73 unittest-main: 74 # test all packages 75 CGO_CFLAGS=$(CRYPTO_FLAG) go test $(if $(VERBOSE),-v,) -coverprofile=$(COVER_PROFILE) -covermode=atomic $(if $(RACE_DETECTOR),-race,) $(if $(JSON_OUTPUT),-json,) $(if $(NUM_RUNS),-count $(NUM_RUNS),) $(GO_TEST_PACKAGES) 76 77 .PHONY: install-mock-generators 78 install-mock-generators: 79 cd ${GOPATH}; \ 80 go install github.com/vektra/mockery/v2@v2.21.4; \ 81 go install github.com/golang/mock/mockgen@v1.6.0; 82 83 .PHONY: install-tools 84 install-tools: check-go-version install-mock-generators 85 cd ${GOPATH}; \ 86 go install github.com/golang/protobuf/protoc-gen-go@v1.3.2; \ 87 go install github.com/uber/prototool/cmd/prototool@v1.9.0; \ 88 go install github.com/gogo/protobuf/protoc-gen-gofast@latest; \ 89 go install golang.org/x/tools/cmd/stringer@master; 90 91 .PHONY: verify-mocks 92 verify-mocks: tidy generate-mocks 93 git diff --exit-code 94 95 .SILENT: go-math-rand-check 96 go-math-rand-check: 97 # check that the insecure math/rand Go package isn't used by production code. 98 # `exclude` should only specify non production code (test, bench..). 99 # If this check fails, try updating your code by using: 100 # - "crypto/rand" or "flow-go/utils/rand" for non-deterministic randomness 101 # - "onflow/crypto/random" for deterministic randomness 102 grep --include=\*.go \ 103 --exclude=*test* --exclude=*helper* --exclude=*example* --exclude=*fixture* --exclude=*benchmark* --exclude=*profiler* \ 104 --exclude-dir=*test* --exclude-dir=*helper* --exclude-dir=*example* --exclude-dir=*fixture* --exclude-dir=*benchmark* --exclude-dir=*profiler* -rnw '"math/rand"'; \ 105 if [ $$? -ne 1 ]; then \ 106 echo "[Error] Go production code should not use math/rand package"; exit 1; \ 107 fi 108 109 .PHONY: code-sanity-check 110 code-sanity-check: go-math-rand-check 111 112 .PHONY: fuzz-fvm 113 fuzz-fvm: 114 # run fuzz tests in the fvm package 115 cd ./fvm && CGO_CFLAGS=$(CRYPTO_FLAG) go test -fuzz=Fuzz -run ^$$ 116 117 .PHONY: test 118 test: verify-mocks unittest-main 119 120 .PHONY: integration-test 121 integration-test: docker-native-build-flow 122 $(MAKE) -C integration integration-test 123 124 .PHONY: benchmark 125 benchmark: docker-native-build-flow 126 $(MAKE) -C integration benchmark 127 128 .PHONY: coverage 129 coverage: 130 ifeq ($(COVER), true) 131 # Cover summary has to produce cover.json 132 COVER_PROFILE=$(COVER_PROFILE) ./cover-summary.sh 133 # file has to be called index.html 134 gocov-html cover.json > index.html 135 # coverage.zip will automatically be picked up by teamcity 136 zip coverage.zip index.html 137 endif 138 139 .PHONY: generate-openapi 140 generate-openapi: 141 swagger-codegen generate -l go -i https://raw.githubusercontent.com/onflow/flow/master/openapi/access.yaml -D packageName=models,modelDocs=false,models -o engine/access/rest/models; 142 go fmt ./engine/access/rest/models 143 144 .PHONY: generate 145 generate: generate-proto generate-mocks generate-fvm-env-wrappers 146 147 .PHONY: generate-proto 148 generate-proto: 149 prototool generate protobuf 150 151 .PHONY: generate-fvm-env-wrappers 152 generate-fvm-env-wrappers: 153 CGO_CFLAGS=$(CRYPTO_FLAG) go run ./fvm/environment/generate-wrappers fvm/environment/parse_restricted_checker.go 154 155 .PHONY: generate-mocks 156 generate-mocks: install-mock-generators 157 mockery --name '(Connector|PingInfoProvider)' --dir=network/p2p --case=underscore --output="./network/mocknetwork" --outpkg="mocknetwork" 158 CGO_CFLAGS=$(CRYPTO_FLAG) mockgen -destination=storage/mocks/storage.go -package=mocks github.com/onflow/flow-go/storage Blocks,Headers,Payloads,Collections,Commits,Events,ServiceEvents,TransactionResults 159 CGO_CFLAGS=$(CRYPTO_FLAG) mockgen -destination=module/mocks/network.go -package=mocks github.com/onflow/flow-go/module Local,Requester 160 CGO_CFLAGS=$(CRYPTO_FLAG) mockgen -destination=network/mocknetwork/mock_network.go -package=mocknetwork github.com/onflow/flow-go/network EngineRegistry 161 mockery --name='.*' --dir=integration/benchmark/mocksiface --case=underscore --output="integration/benchmark/mock" --outpkg="mock" 162 mockery --name=ExecutionDataStore --dir=module/executiondatasync/execution_data --case=underscore --output="./module/executiondatasync/execution_data/mock" --outpkg="mock" 163 mockery --name=Downloader --dir=module/executiondatasync/execution_data --case=underscore --output="./module/executiondatasync/execution_data/mock" --outpkg="mock" 164 mockery --name '(ExecutionDataRequester|IndexReporter)' --dir=module/state_synchronization --case=underscore --output="./module/state_synchronization/mock" --outpkg="state_synchronization" 165 mockery --name 'ExecutionState' --dir=engine/execution/state --case=underscore --output="engine/execution/state/mock" --outpkg="mock" 166 mockery --name 'BlockComputer' --dir=engine/execution/computation/computer --case=underscore --output="engine/execution/computation/computer/mock" --outpkg="mock" 167 mockery --name 'ComputationManager' --dir=engine/execution/computation --case=underscore --output="engine/execution/computation/mock" --outpkg="mock" 168 mockery --name '.*' --dir=engine/execution/computation/query --case=underscore --output="engine/execution/computation/query/mock" --outpkg="mock" 169 mockery --name 'EpochComponentsFactory' --dir=engine/collection/epochmgr --case=underscore --output="engine/collection/epochmgr/mock" --outpkg="mock" 170 mockery --name '.*' --dir=engine/execution/ --case=underscore --output="engine/execution/mock" --outpkg="mock" 171 mockery --name 'Backend' --dir=engine/collection/rpc --case=underscore --output="engine/collection/rpc/mock" --outpkg="mock" 172 mockery --name 'ProviderEngine' --dir=engine/execution/provider --case=underscore --output="engine/execution/provider/mock" --outpkg="mock" 173 mockery --name '.*' --dir=state/cluster --case=underscore --output="state/cluster/mock" --outpkg="mock" 174 mockery --name '.*' --dir=module --case=underscore --output="./module/mock" --outpkg="mock" 175 mockery --name '.*' --dir=module/mempool --case=underscore --output="./module/mempool/mock" --outpkg="mempool" 176 mockery --name '.*' --dir=module/component --case=underscore --output="./module/component/mock" --outpkg="component" 177 mockery --name '.*' --dir=network --case=underscore --output="./network/mocknetwork" --outpkg="mocknetwork" 178 mockery --name '.*' --dir=storage --case=underscore --output="./storage/mock" --outpkg="mock" 179 mockery --name '.*' --dir="state/protocol" --case=underscore --output="state/protocol/mock" --outpkg="mock" 180 mockery --name '.*' --dir="state/protocol/events" --case=underscore --output="./state/protocol/events/mock" --outpkg="mock" 181 mockery --name '.*' --dir=engine/execution/computation/computer --case=underscore --output="./engine/execution/computation/computer/mock" --outpkg="mock" 182 mockery --name '.*' --dir=engine/execution/state --case=underscore --output="./engine/execution/state/mock" --outpkg="mock" 183 mockery --name '.*' --dir=engine/collection --case=underscore --output="./engine/collection/mock" --outpkg="mock" 184 mockery --name 'complianceCore' --dir=engine/common/follower --exported --case=underscore --output="./engine/common/follower/mock" --outpkg="mock" 185 mockery --name '.*' --dir=engine/common/follower/cache --case=underscore --output="./engine/common/follower/cache/mock" --outpkg="mock" 186 mockery --name '.*' --dir=engine/consensus --case=underscore --output="./engine/consensus/mock" --outpkg="mock" 187 mockery --name '.*' --dir=engine/consensus/approvals --case=underscore --output="./engine/consensus/approvals/mock" --outpkg="mock" 188 rm -rf ./fvm/mock 189 mockery --name '.*' --dir=fvm --case=underscore --output="./fvm/mock" --outpkg="mock" 190 rm -rf ./fvm/environment/mock 191 mockery --name '.*' --dir=fvm/environment --case=underscore --output="./fvm/environment/mock" --outpkg="mock" 192 mockery --name '.*' --dir=ledger --case=underscore --output="./ledger/mock" --outpkg="mock" 193 mockery --name 'ViolationsConsumer' --dir=network --case=underscore --output="./network/mocknetwork" --outpkg="mocknetwork" 194 mockery --name '.*' --dir=network/p2p/ --case=underscore --output="./network/p2p/mock" --outpkg="mockp2p" 195 mockery --name '.*' --dir=network/alsp --case=underscore --output="./network/alsp/mock" --outpkg="mockalsp" 196 mockery --name 'Vertex' --dir="./module/forest" --case=underscore --output="./module/forest/mock" --outpkg="mock" 197 mockery --name '.*' --dir="./consensus/hotstuff" --case=underscore --output="./consensus/hotstuff/mocks" --outpkg="mocks" 198 mockery --name '.*' --dir="./engine/access/wrapper" --case=underscore --output="./engine/access/mock" --outpkg="mock" 199 mockery --name 'API' --dir="./access" --case=underscore --output="./access/mock" --outpkg="mock" 200 mockery --name 'API' --dir="./engine/protocol" --case=underscore --output="./engine/protocol/mock" --outpkg="mock" 201 mockery --name '.*' --dir="./engine/access/state_stream" --case=underscore --output="./engine/access/state_stream/mock" --outpkg="mock" 202 mockery --name 'ConnectionFactory' --dir="./engine/access/rpc/connection" --case=underscore --output="./engine/access/rpc/connection/mock" --outpkg="mock" 203 mockery --name 'Communicator' --dir="./engine/access/rpc/backend" --case=underscore --output="./engine/access/rpc/backend/mock" --outpkg="mock" 204 205 mockery --name '.*' --dir=model/fingerprint --case=underscore --output="./model/fingerprint/mock" --outpkg="mock" 206 mockery --name 'ExecForkActor' --structname 'ExecForkActorMock' --dir=module/mempool/consensus/mock/ --case=underscore --output="./module/mempool/consensus/mock/" --outpkg="mock" 207 mockery --name '.*' --dir=engine/verification/fetcher/ --case=underscore --output="./engine/verification/fetcher/mock" --outpkg="mockfetcher" 208 mockery --name '.*' --dir=./cmd/util/ledger/reporters --case=underscore --output="./cmd/util/ledger/reporters/mock" --outpkg="mock" 209 mockery --name 'Storage' --dir=module/executiondatasync/tracker --case=underscore --output="module/executiondatasync/tracker/mock" --outpkg="mocktracker" 210 mockery --name 'ScriptExecutor' --dir=module/execution --case=underscore --output="module/execution/mock" --outpkg="mock" 211 mockery --name 'StorageSnapshot' --dir=fvm/storage/snapshot --case=underscore --output="fvm/storage/snapshot/mock" --outpkg="mock" 212 213 #temporarily make insecure/ a non-module to allow mockery to create mocks 214 mv insecure/go.mod insecure/go2.mod 215 if [ -f go.work ]; then mv go.work go2.work; fi 216 mockery --name '.*' --dir=insecure/ --case=underscore --output="./insecure/mock" --outpkg="mockinsecure" 217 mv insecure/go2.mod insecure/go.mod 218 if [ -f go2.work ]; then mv go2.work go.work; fi 219 220 # this ensures there is no unused dependency being added by accident 221 .PHONY: tidy 222 tidy: 223 go mod tidy -v 224 cd integration; go mod tidy -v 225 cd crypto; go mod tidy -v 226 cd cmd/testclient; go mod tidy -v 227 cd insecure; go mod tidy -v 228 git diff --exit-code 229 230 .PHONY: lint 231 lint: tidy 232 # revive -config revive.toml -exclude storage/ledger/trie ./... 233 golangci-lint run -v ./... 234 235 .PHONY: fix-lint 236 fix-lint: 237 # revive -config revive.toml -exclude storage/ledger/trie ./... 238 golangci-lint run -v --fix ./... 239 240 # Runs unit tests with different list of packages as passed by CI so they run in parallel 241 .PHONY: ci 242 ci: install-tools test 243 244 # Runs integration tests 245 .PHONY: ci-integration 246 ci-integration: 247 $(MAKE) -C integration integration-test 248 249 # Runs benchmark tests 250 # NOTE: we do not need `docker-native-build-flow` as this is run as a separate step 251 # on Teamcity 252 .PHONY: ci-benchmark 253 ci-benchmark: install-tools 254 $(MAKE) -C integration ci-benchmark 255 256 # Runs unit tests, test coverage, lint in Docker (for mac) 257 .PHONY: docker-ci 258 docker-ci: 259 docker run --env RACE_DETECTOR=$(RACE_DETECTOR) --env COVER=$(COVER) --env JSON_OUTPUT=$(JSON_OUTPUT) \ 260 -v /run/host-services/ssh-auth.sock:/run/host-services/ssh-auth.sock -e SSH_AUTH_SOCK="/run/host-services/ssh-auth.sock" \ 261 -v "$(CURDIR)":/go/flow -v "/tmp/.cache":"/root/.cache" -v "/tmp/pkg":"/go/pkg" \ 262 -w "/go/flow" "$(CONTAINER_REGISTRY)/golang-cmake:v0.0.7" \ 263 make ci 264 265 # Runs integration tests in Docker (for mac) 266 .PHONY: docker-ci-integration 267 docker-ci-integration: 268 docker run \ 269 --env DOCKER_API_VERSION='1.39' \ 270 --network host \ 271 -v "$(CURDIR)":/go/flow -v "/tmp/.cache":"/root/.cache" -v "/tmp/pkg":"/go/pkg" \ 272 -v /tmp:/tmp \ 273 -v /var/run/docker.sock:/var/run/docker.sock \ 274 -v /run/host-services/ssh-auth.sock:/run/host-services/ssh-auth.sock -e SSH_AUTH_SOCK="/run/host-services/ssh-auth.sock" \ 275 -w "/go/flow" "$(CONTAINER_REGISTRY)/golang-cmake:v0.0.7" \ 276 make ci-integration 277 278 # only works on Debian 279 .SILENT: install-cross-build-tools 280 install-cross-build-tools: 281 if [ "$(UNAME)" = "Debian" ] ; then \ 282 apt-get update && apt-get -y install apt-utils gcc-aarch64-linux-gnu ; \ 283 elif [ "$(UNAME)" = "Linux" ] ; then \ 284 apt-get update && apt-get -y install apt-utils gcc-aarch64-linux-gnu ; \ 285 else \ 286 echo "this target only works on Debian or Linux, host runs on" $(UNAME) ; \ 287 fi 288 289 .PHONY: docker-native-build-collection 290 docker-native-build-collection: 291 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/collection --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=$(GOARCH) --build-arg CGO_FLAG=$(CRYPTO_FLAG) --target production \ 292 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 293 --label "git_commit=${COMMIT}" --label "git_tag=${IMAGE_TAG}" \ 294 -t "$(CONTAINER_REGISTRY)/collection:latest" \ 295 -t "$(CONTAINER_REGISTRY)/collection:$(IMAGE_TAG)" . 296 297 .PHONY: docker-build-collection-with-adx 298 docker-build-collection-with-adx: 299 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/collection --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=amd64 --target production \ 300 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 301 --label "git_commit=${COMMIT}" --label "git_tag=$(IMAGE_TAG)" \ 302 -t "$(CONTAINER_REGISTRY)/collection:$(IMAGE_TAG)" . 303 304 .PHONY: docker-build-collection-without-adx 305 docker-build-collection-without-adx: 306 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/collection --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG_NO_ADX) --build-arg GOARCH=amd64 --build-arg CGO_FLAG=$(DISABLE_ADX) --target production \ 307 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 308 --label "git_commit=${COMMIT}" --label "git_tag=$(IMAGE_TAG_NO_ADX)" \ 309 -t "$(CONTAINER_REGISTRY)/collection:$(IMAGE_TAG_NO_ADX)" . 310 311 .PHONY: docker-build-collection-without-netgo-without-adx 312 docker-build-collection-without-netgo-without-adx: 313 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/collection --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG_NO_NETGO_NO_ADX) --build-arg GOARCH=amd64 --build-arg TAGS="" --build-arg CGO_FLAG=$(DISABLE_ADX) --target production \ 314 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 315 --label "git_commit=${COMMIT}" --label "git_tag=$(IMAGE_TAG_NO_NETGO_NO_ADX)" \ 316 -t "$(CONTAINER_REGISTRY)/collection:$(IMAGE_TAG_NO_NETGO_NO_ADX)" . 317 318 .PHONY: docker-cross-build-collection-arm 319 docker-cross-build-collection-arm: 320 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/collection --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG_ARM) --build-arg CC=aarch64-linux-gnu-gcc --build-arg GOARCH=arm64 --target production \ 321 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 322 --label "git_commit=${COMMIT}" --label "git_tag=$(IMAGE_TAG_ARM)" \ 323 -t "$(CONTAINER_REGISTRY)/collection:$(IMAGE_TAG_ARM)" . 324 325 .PHONY: docker-native-build-collection-debug 326 docker-native-build-collection-debug: 327 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/collection --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=$(GOARCH) --build-arg CGO_FLAG=$(CRYPTO_FLAG) --target debug \ 328 -t "$(CONTAINER_REGISTRY)/collection-debug:latest" \ 329 -t "$(CONTAINER_REGISTRY)/collection-debug:$(IMAGE_TAG)" . 330 331 .PHONY: docker-native-build-consensus 332 docker-native-build-consensus: 333 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/consensus --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=$(GOARCH) --build-arg CGO_FLAG=$(CRYPTO_FLAG) --target production \ 334 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 335 --label "git_commit=${COMMIT}" --label "git_tag=${IMAGE_TAG}" \ 336 -t "$(CONTAINER_REGISTRY)/consensus:latest" \ 337 -t "$(CONTAINER_REGISTRY)/consensus:$(IMAGE_TAG)" . 338 339 .PHONY: docker-build-consensus-with-adx 340 docker-build-consensus-with-adx: 341 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/consensus --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=amd64 --target production \ 342 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 343 --label "git_commit=${COMMIT}" --label "git_tag=$(IMAGE_TAG)" \ 344 -t "$(CONTAINER_REGISTRY)/consensus:$(IMAGE_TAG)" . 345 346 .PHONY: docker-build-consensus-without-adx 347 docker-build-consensus-without-adx: 348 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/consensus --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG_NO_ADX) --build-arg GOARCH=amd64 --build-arg CGO_FLAG=$(DISABLE_ADX) --target production \ 349 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 350 --label "git_commit=${COMMIT}" --label "git_tag=$(IMAGE_TAG_NO_ADX)" \ 351 -t "$(CONTAINER_REGISTRY)/consensus:$(IMAGE_TAG_NO_ADX)" . 352 353 .PHONY: docker-build-consensus-without-netgo-without-adx 354 docker-build-consensus-without-netgo-without-adx: 355 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/consensus --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG_NO_NETGO_NO_ADX) --build-arg GOARCH=amd64 --build-arg TAGS="" --build-arg CGO_FLAG=$(DISABLE_ADX) --target production \ 356 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 357 --label "git_commit=${COMMIT}" --label "git_tag=$(IMAGE_TAG_NO_NETGO_NO_ADX)" \ 358 -t "$(CONTAINER_REGISTRY)/consensus:$(IMAGE_TAG_NO_NETGO_NO_ADX)" . 359 360 .PHONY: docker-cross-build-consensus-arm 361 docker-cross-build-consensus-arm: 362 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/consensus --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG_ARM) --build-arg GOARCH=arm64 --build-arg CC=aarch64-linux-gnu-gcc --target production \ 363 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 364 --label "git_commit=${COMMIT}" --label "git_tag=${IMAGE_TAG_ARM}" \ 365 -t "$(CONTAINER_REGISTRY)/consensus:$(IMAGE_TAG_ARM)" . 366 367 368 .PHONY: docker-native-build-consensus-debug 369 docker-build-native-consensus-debug: 370 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/consensus --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=$(GOARCH) --build-arg CGO_FLAG=$(CRYPTO_FLAG) --target debug \ 371 -t "$(CONTAINER_REGISTRY)/consensus-debug:latest" \ 372 -t "$(CONTAINER_REGISTRY)/consensus-debug:$(IMAGE_TAG)" . 373 374 .PHONY: docker-native-build-execution 375 docker-native-build-execution: 376 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/execution --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=$(GOARCH) --build-arg CGO_FLAG=$(CRYPTO_FLAG) --target production \ 377 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 378 --label "git_commit=${COMMIT}" --label "git_tag=${IMAGE_TAG}" \ 379 -t "$(CONTAINER_REGISTRY)/execution:latest" \ 380 -t "$(CONTAINER_REGISTRY)/execution:$(IMAGE_TAG)" . 381 382 .PHONY: docker-build-execution-with-adx 383 docker-build-execution-with-adx: 384 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/execution --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=amd64 --target production \ 385 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 386 --label "git_commit=${COMMIT}" --label "git_tag=$(IMAGE_TAG)" \ 387 -t "$(CONTAINER_REGISTRY)/execution:$(IMAGE_TAG)" . 388 389 .PHONY: docker-build-execution-without-adx 390 docker-build-execution-without-adx: 391 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/execution --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG_NO_ADX) --build-arg GOARCH=amd64 --build-arg CGO_FLAG=$(DISABLE_ADX) --target production \ 392 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 393 --label "git_commit=${COMMIT}" --label "git_tag=$(IMAGE_TAG_NO_ADX)" \ 394 -t "$(CONTAINER_REGISTRY)/execution:$(IMAGE_TAG_NO_ADX)" . 395 396 .PHONY: docker-build-execution-without-netgo-without-adx 397 docker-build-execution-without-netgo-without-adx: 398 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/execution --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG_NO_NETGO_NO_ADX) --build-arg GOARCH=amd64 --build-arg TAGS="" --build-arg CGO_FLAG=$(DISABLE_ADX) --target production \ 399 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 400 --label "git_commit=${COMMIT}" --label "git_tag=$(IMAGE_TAG_NO_NETGO_NO_ADX)" \ 401 -t "$(CONTAINER_REGISTRY)/execution:$(IMAGE_TAG_NO_NETGO_NO_ADX)" . 402 403 .PHONY: docker-cross-build-execution-arm 404 docker-cross-build-execution-arm: 405 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/execution --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG_ARM) --build-arg GOARCH=arm64 --build-arg CC=aarch64-linux-gnu-gcc --target production \ 406 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 407 --label "git_commit=${COMMIT}" --label "git_tag=${IMAGE_TAG_ARM}" \ 408 -t "$(CONTAINER_REGISTRY)/execution:$(IMAGE_TAG_ARM)" . 409 410 .PHONY: docker-native-build-execution-debug 411 docker-native-build-execution-debug: 412 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/execution --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=$(GOARCH) --build-arg CGO_FLAG=$(CRYPTO_FLAG) --target debug \ 413 -t "$(CONTAINER_REGISTRY)/execution-debug:latest" \ 414 -t "$(CONTAINER_REGISTRY)/execution-debug:$(IMAGE_TAG)" . 415 416 # build corrupt execution node for BFT testing 417 .PHONY: docker-native-build-execution-corrupt 418 docker-native-build-execution-corrupt: 419 # temporarily make insecure/ a non-module to allow Docker to use corrupt builders there 420 ./insecure/cmd/mods_override.sh 421 docker build -f cmd/Dockerfile --build-arg TARGET=./insecure/cmd/execution --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=$(GOARCH) --build-arg CGO_FLAG=$(CRYPTO_FLAG) --target production \ 422 --label "git_commit=${COMMIT}" --label "git_tag=${IMAGE_TAG}" \ 423 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 424 -t "$(CONTAINER_REGISTRY)/execution-corrupted:latest" \ 425 -t "$(CONTAINER_REGISTRY)/execution-corrupted:$(IMAGE_TAG)" . 426 ./insecure/cmd/mods_restore.sh 427 428 .PHONY: docker-native-build-verification 429 docker-native-build-verification: 430 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/verification --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=$(GOARCH) --build-arg CGO_FLAG=$(CRYPTO_FLAG) --target production \ 431 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 432 --label "git_commit=${COMMIT}" --label "git_tag=${IMAGE_TAG}" \ 433 -t "$(CONTAINER_REGISTRY)/verification:latest" \ 434 -t "$(CONTAINER_REGISTRY)/verification:$(IMAGE_TAG)" . 435 436 .PHONY: docker-build-verification-with-adx 437 docker-build-verification-with-adx: 438 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/verification --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=amd64 --target production \ 439 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 440 --label "git_commit=${COMMIT}" --label "git_tag=$(IMAGE_TAG)" \ 441 -t "$(CONTAINER_REGISTRY)/verification:$(IMAGE_TAG)" . 442 443 .PHONY: docker-build-verification-without-adx 444 docker-build-verification-without-adx: 445 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/verification --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG_NO_ADX) --build-arg GOARCH=amd64 --build-arg CGO_FLAG=$(DISABLE_ADX) --target production \ 446 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 447 --label "git_commit=${COMMIT}" --label "git_tag=$(IMAGE_TAG_NO_ADX)" \ 448 -t "$(CONTAINER_REGISTRY)/verification:$(IMAGE_TAG_NO_ADX)" . 449 450 .PHONY: docker-build-verification-without-netgo-without-adx 451 docker-build-verification-without-netgo-without-adx: 452 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/verification --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG_NO_NETGO_NO_ADX) --build-arg GOARCH=amd64 --build-arg TAGS="" --build-arg CGO_FLAG=$(DISABLE_ADX) --target production \ 453 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 454 --label "git_commit=${COMMIT}" --label "git_tag=$(IMAGE_TAG_NO_NETGO_NO_ADX)" \ 455 -t "$(CONTAINER_REGISTRY)/verification:$(IMAGE_TAG_NO_NETGO_NO_ADX)" . 456 457 .PHONY: docker-cross-build-verification-arm 458 docker-cross-build-verification-arm: 459 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/verification --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG_ARM) --build-arg GOARCH=arm64 --build-arg CC=aarch64-linux-gnu-gcc --target production \ 460 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 461 --label "git_commit=${COMMIT}" --label "git_tag=${IMAGE_TAG_ARM}" \ 462 -t "$(CONTAINER_REGISTRY)/verification:$(IMAGE_TAG_ARM)" . 463 464 .PHONY: docker-native-build-verification-debug 465 docker-native-build-verification-debug: 466 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/verification --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=$(GOARCH) --build-arg CGO_FLAG=$(CRYPTO_FLAG) --target debug \ 467 -t "$(CONTAINER_REGISTRY)/verification-debug:latest" \ 468 -t "$(CONTAINER_REGISTRY)/verification-debug:$(IMAGE_TAG)" . 469 470 # build corrupt verification node for BFT testing 471 .PHONY: docker-native-build-verification-corrupt 472 docker-native-build-verification-corrupt: 473 # temporarily make insecure/ a non-module to allow Docker to use corrupt builders there 474 ./insecure/cmd/mods_override.sh 475 docker build -f cmd/Dockerfile --build-arg TARGET=./insecure/cmd/verification --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=$(GOARCH) --build-arg CGO_FLAG=$(CRYPTO_FLAG) --target production \ 476 --label "git_commit=${COMMIT}" --label "git_tag=${IMAGE_TAG}" \ 477 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 478 -t "$(CONTAINER_REGISTRY)/verification-corrupted:latest" \ 479 -t "$(CONTAINER_REGISTRY)/verification-corrupted:$(IMAGE_TAG)" . 480 ./insecure/cmd/mods_restore.sh 481 482 .PHONY: docker-native-build-access 483 docker-native-build-access: 484 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/access --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=$(GOARCH) --build-arg CGO_FLAG=$(CRYPTO_FLAG) --target production \ 485 --label "git_commit=${COMMIT}" --label "git_tag=${IMAGE_TAG}" \ 486 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 487 -t "$(CONTAINER_REGISTRY)/access:latest" \ 488 -t "$(CONTAINER_REGISTRY)/access:$(IMAGE_TAG)" . 489 490 .PHONY: docker-build-access-with-adx 491 docker-build-access-with-adx: 492 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/access --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=amd64 --target production \ 493 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 494 --label "git_commit=${COMMIT}" --label "git_tag=$(IMAGE_TAG)" \ 495 -t "$(CONTAINER_REGISTRY)/access:$(IMAGE_TAG)" . 496 497 .PHONY: docker-build-access-without-adx 498 docker-build-access-without-adx: 499 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/access --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG_NO_ADX) --build-arg GOARCH=amd64 --build-arg CGO_FLAG=$(DISABLE_ADX) --target production \ 500 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 501 --label "git_commit=${COMMIT}" --label "git_tag=$(IMAGE_TAG_NO_ADX)" \ 502 -t "$(CONTAINER_REGISTRY)/access:$(IMAGE_TAG_NO_ADX)" . 503 504 .PHONY: docker-build-access-without-netgo-without-adx 505 docker-build-access-without-netgo-without-adx: 506 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/access --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG_NO_NETGO_NO_ADX) --build-arg GOARCH=amd64 --build-arg TAGS="" --build-arg CGO_FLAG=$(DISABLE_ADX) --target production \ 507 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 508 --label "git_commit=${COMMIT}" --label "git_tag=$(IMAGE_TAG_NO_NETGO_NO_ADX)" \ 509 -t "$(CONTAINER_REGISTRY)/access:$(IMAGE_TAG_NO_NETGO_NO_ADX)" . 510 511 .PHONY: docker-cross-build-access-arm 512 docker-cross-build-access-arm: 513 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/access --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG_ARM) --build-arg GOARCH=arm64 --build-arg CC=aarch64-linux-gnu-gcc --target production \ 514 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 515 --label "git_commit=${COMMIT}" --label "git_tag=${IMAGE_TAG_ARM}" \ 516 -t "$(CONTAINER_REGISTRY)/access:$(IMAGE_TAG_ARM)" . 517 518 519 .PHONY: docker-native-build-access-debug 520 docker-native-build-access-debug: 521 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/access --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=$(GOARCH) --build-arg CGO_FLAG=$(CRYPTO_FLAG) --target debug \ 522 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 523 -t "$(CONTAINER_REGISTRY)/access-debug:latest" \ 524 -t "$(CONTAINER_REGISTRY)/access-debug:$(IMAGE_TAG)" . 525 526 # build corrupt access node for BFT testing 527 .PHONY: docker-native-build-access-corrupt 528 docker-native-build-access-corrupt: 529 #temporarily make insecure/ a non-module to allow Docker to use corrupt builders there 530 ./insecure/cmd/mods_override.sh 531 docker build -f cmd/Dockerfile --build-arg TARGET=./insecure/cmd/access --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=$(GOARCH) --build-arg CGO_FLAG=$(CRYPTO_FLAG) --target production \ 532 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 533 --label "git_commit=${COMMIT}" --label "git_tag=${IMAGE_TAG}" \ 534 -t "$(CONTAINER_REGISTRY)/access-corrupted:latest" \ 535 -t "$(CONTAINER_REGISTRY)/access-corrupted:$(IMAGE_TAG)" . 536 ./insecure/cmd/mods_restore.sh 537 538 .PHONY: docker-native-build-observer 539 docker-native-build-observer: 540 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/observer --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=$(GOARCH) --build-arg CGO_FLAG=$(CRYPTO_FLAG) --target production \ 541 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 542 --label "git_commit=${COMMIT}" --label "git_tag=${IMAGE_TAG}" \ 543 -t "$(CONTAINER_REGISTRY)/observer:latest" \ 544 -t "$(CONTAINER_REGISTRY)/observer:$(IMAGE_TAG)" . 545 546 .PHONY: docker-build-observer-with-adx 547 docker-build-observer-with-adx: 548 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/observer --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=amd64 --target production \ 549 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 550 --label "git_commit=${COMMIT}" --label "git_tag=$(IMAGE_TAG)" \ 551 -t "$(CONTAINER_REGISTRY)/observer:$(IMAGE_TAG)" . 552 553 .PHONY: docker-build-observer-without-adx 554 docker-build-observer-without-adx: 555 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/observer --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG_NO_ADX) --build-arg GOARCH=amd64 --build-arg CGO_FLAG=$(DISABLE_ADX) --target production \ 556 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 557 --label "git_commit=${COMMIT}" --label "git_tag=$(IMAGE_TAG_NO_ADX)" \ 558 -t "$(CONTAINER_REGISTRY)/observer:$(IMAGE_TAG_NO_ADX)" . 559 560 .PHONY: docker-build-observer-without-netgo-without-adx 561 docker-build-observer-without-netgo-without-adx: 562 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/observer --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG_NO_NETGO_NO_ADX) --build-arg GOARCH=amd64 --build-arg TAGS="" --build-arg CGO_FLAG=$(DISABLE_ADX) --target production \ 563 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 564 --label "git_commit=${COMMIT}" --label "git_tag=$(IMAGE_TAG_NO_NETGO_NO_ADX)" \ 565 -t "$(CONTAINER_REGISTRY)/observer:$(IMAGE_TAG_NO_NETGO_NO_ADX)" . 566 567 .PHONY: docker-cross-build-observer-arm 568 docker-cross-build-observer-arm: 569 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/observer --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG_ARM) --build-arg GOARCH=arm64 --build-arg CC=aarch64-linux-gnu-gcc --target production \ 570 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 571 --label "git_commit=${COMMIT}" --label "git_tag=${IMAGE_TAG_ARM}" \ 572 -t "$(CONTAINER_REGISTRY)/observer:$(IMAGE_TAG_ARM)" . 573 574 575 .PHONY: docker-native-build-ghost 576 docker-native-build-ghost: 577 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/ghost --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=$(GOARCH) --build-arg CGO_FLAG=$(CRYPTO_FLAG) --target production \ 578 --label "git_commit=${COMMIT}" --label "git_tag=${IMAGE_TAG}" \ 579 --secret id=cadence_deploy_key,env=CADENCE_DEPLOY_KEY --build-arg GOPRIVATE=$(GOPRIVATE) \ 580 -t "$(CONTAINER_REGISTRY)/ghost:latest" \ 581 -t "$(CONTAINER_REGISTRY)/ghost:$(IMAGE_TAG)" . 582 583 .PHONY: docker-native-build-ghost-debug 584 docker-native-build-ghost-debug: 585 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/ghost --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(IMAGE_TAG) --build-arg GOARCH=$(GOARCH) --build-arg CGO_FLAG=$(CRYPTO_FLAG) --target debug \ 586 -t "$(CONTAINER_REGISTRY)/ghost-debug:latest" \ 587 -t "$(CONTAINER_REGISTRY)/ghost-debug:$(IMAGE_TAG)" . 588 589 PHONY: docker-build-bootstrap 590 docker-build-bootstrap: 591 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/bootstrap --build-arg GOARCH=$(GOARCH) --build-arg VERSION=$(IMAGE_TAG) --build-arg CGO_FLAG=$(CRYPTO_FLAG) --target production \ 592 --label "git_commit=${COMMIT}" --label "git_tag=${IMAGE_TAG}" \ 593 -t "$(CONTAINER_REGISTRY)/bootstrap:latest" \ 594 -t "$(CONTAINER_REGISTRY)/bootstrap:$(IMAGE_TAG)" . 595 596 PHONY: tool-bootstrap 597 tool-bootstrap: docker-build-bootstrap 598 docker container create --name bootstrap $(CONTAINER_REGISTRY)/bootstrap:latest;docker container cp bootstrap:/bin/app ./bootstrap;docker container rm bootstrap 599 600 .PHONY: docker-build-bootstrap-transit 601 docker-build-bootstrap-transit: 602 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/bootstrap/transit --build-arg COMMIT=$(COMMIT) --build-arg VERSION=$(VERSION) --build-arg GOARCH=$(GOARCH) --build-arg CGO_FLAG=$(CRYPTO_FLAG) --no-cache \ 603 --target production \ 604 -t "$(CONTAINER_REGISTRY)/bootstrap-transit:latest" \ 605 -t "$(CONTAINER_REGISTRY)/bootstrap-transit:$(IMAGE_TAG)" . 606 607 PHONY: tool-transit 608 tool-transit: docker-build-bootstrap-transit 609 docker container create --name transit $(CONTAINER_REGISTRY)/bootstrap-transit:latest;docker container cp transit:/bin/app ./transit;docker container rm transit 610 611 .PHONY: docker-native-build-loader 612 docker-native-build-loader: 613 docker build -f ./integration/benchmark/cmd/manual/Dockerfile --build-arg TARGET=./benchmark/cmd/manual --build-arg CGO_FLAG=$(CRYPTO_FLAG) --target production \ 614 --label "git_commit=${COMMIT}" --label "git_tag=${IMAGE_TAG}" \ 615 -t "$(CONTAINER_REGISTRY)/loader:latest" \ 616 -t "$(CONTAINER_REGISTRY)/loader:$(IMAGE_TAG)" . 617 618 .PHONY: docker-native-build-flow 619 docker-native-build-flow: docker-native-build-collection docker-native-build-consensus docker-native-build-execution docker-native-build-verification docker-native-build-access docker-native-build-observer docker-native-build-ghost 620 621 .PHONY: docker-build-flow-with-adx 622 docker-build-flow-with-adx: docker-build-collection-with-adx docker-build-consensus-with-adx docker-build-execution-with-adx docker-build-verification-with-adx docker-build-access-with-adx docker-build-observer-with-adx 623 624 .PHONY: docker-build-flow-without-adx 625 docker-build-flow-without-adx: docker-build-collection-without-adx docker-build-consensus-without-adx docker-build-execution-without-adx docker-build-verification-without-adx docker-build-access-without-adx docker-build-observer-without-adx 626 627 .PHONY: docker-build-flow-without-netgo-without-adx 628 docker-build-flow-without-netgo-without-adx: docker-build-collection-without-netgo-without-adx docker-build-consensus-without-netgo-without-adx docker-build-execution-without-netgo-without-adx docker-build-verification-without-netgo-without-adx docker-build-access-without-netgo-without-adx docker-build-observer-without-netgo-without-adx 629 630 # in this target, images are arm64 (aarch64), are build with `netgo` and with `adx`. 631 # other arm64 images can be built without `netgo` or without `adx` 632 .PHONY: docker-cross-build-flow-arm 633 docker-cross-build-flow-arm: docker-cross-build-collection-arm docker-cross-build-consensus-arm docker-cross-build-execution-arm docker-cross-build-verification-arm docker-cross-build-access-arm docker-cross-build-observer-arm 634 635 .PHONY: docker-native-build-flow-corrupt 636 docker-native-build-flow-corrupt: docker-native-build-execution-corrupt docker-native-build-verification-corrupt docker-native-build-access-corrupt 637 638 .PHONY: docker-native-build-benchnet 639 docker-native-build-benchnet: docker-native-build-flow docker-native-build-loader 640 641 .PHONY: docker-push-collection-with-adx 642 docker-push-collection-with-adx: 643 docker push "$(CONTAINER_REGISTRY)/collection:$(IMAGE_TAG)" 644 645 .PHONY: docker-push-collection-without-adx 646 docker-push-collection-without-adx: 647 docker push "$(CONTAINER_REGISTRY)/collection:$(IMAGE_TAG_NO_ADX)" 648 649 .PHONY: docker-push-collection-without-netgo-without-adx 650 docker-push-collection-without-netgo-without-adx: 651 docker push "$(CONTAINER_REGISTRY)/collection:$(IMAGE_TAG_NO_NETGO_NO_ADX)" 652 653 .PHONY: docker-push-collection-arm 654 docker-push-collection-arm: 655 docker push "$(CONTAINER_REGISTRY)/collection:$(IMAGE_TAG_ARM)" 656 657 .PHONY: docker-push-collection-latest 658 docker-push-collection-latest: docker-push-collection 659 docker push "$(CONTAINER_REGISTRY)/collection:latest" 660 661 .PHONY: docker-push-consensus-with-adx 662 docker-push-consensus-with-adx: 663 docker push "$(CONTAINER_REGISTRY)/consensus:$(IMAGE_TAG)" 664 665 .PHONY: docker-push-consensus-without-adx 666 docker-push-consensus-without-adx: 667 docker push "$(CONTAINER_REGISTRY)/consensus:$(IMAGE_TAG_NO_ADX)" 668 669 .PHONY: docker-push-consensus-without-netgo-without-adx 670 docker-push-consensus-without-netgo-without-adx: 671 docker push "$(CONTAINER_REGISTRY)/consensus:$(IMAGE_TAG_NO_NETGO_NO_ADX)" 672 673 .PHONY: docker-push-consensus-arm 674 docker-push-consensus-arm: 675 docker push "$(CONTAINER_REGISTRY)/consensus:$(IMAGE_TAG_ARM)" 676 677 .PHONY: docker-push-consensus-latest 678 docker-push-consensus-latest: docker-push-consensus 679 docker push "$(CONTAINER_REGISTRY)/consensus:latest" 680 681 .PHONY: docker-push-execution-with-adx 682 docker-push-execution-with-adx: 683 docker push "$(CONTAINER_REGISTRY)/execution:$(IMAGE_TAG)" 684 685 .PHONY: docker-push-execution-corrupt 686 docker-push-execution-corrupt: 687 docker push "$(CONTAINER_REGISTRY)/execution-corrupted:$(IMAGE_TAG)" 688 689 .PHONY: docker-push-execution-without-adx 690 docker-push-execution-without-adx: 691 docker push "$(CONTAINER_REGISTRY)/execution:$(IMAGE_TAG_NO_ADX)" 692 693 .PHONY: docker-push-execution-without-netgo-without-adx 694 docker-push-execution-without-netgo-without-adx: 695 docker push "$(CONTAINER_REGISTRY)/execution:$(IMAGE_TAG_NO_NETGO_NO_ADX)" 696 697 .PHONY: docker-push-execution-arm 698 docker-push-execution-arm: 699 docker push "$(CONTAINER_REGISTRY)/execution:$(IMAGE_TAG_ARM)" 700 701 .PHONY: docker-push-execution-latest 702 docker-push-execution-latest: docker-push-execution 703 docker push "$(CONTAINER_REGISTRY)/execution:latest" 704 705 .PHONY: docker-push-verification-with-adx 706 docker-push-verification-with-adx: 707 docker push "$(CONTAINER_REGISTRY)/verification:$(IMAGE_TAG)" 708 709 .PHONY: docker-push-verification-without-adx 710 docker-push-verification-without-adx: 711 docker push "$(CONTAINER_REGISTRY)/verification:$(IMAGE_TAG_NO_ADX)" 712 713 .PHONY: docker-push-verification-corrupt 714 docker-push-verification-corrupt: 715 docker push "$(CONTAINER_REGISTRY)/verification-corrupted:$(IMAGE_TAG)" 716 717 .PHONY: docker-push-verification-without-netgo-without-adx 718 docker-push-verification-without-netgo-without-adx: 719 docker push "$(CONTAINER_REGISTRY)/verification:$(IMAGE_TAG_NO_NETGO_NO_ADX)" 720 721 .PHONY: docker-push-verification-arm 722 docker-push-verification-arm: 723 docker push "$(CONTAINER_REGISTRY)/verification:$(IMAGE_TAG_ARM)" 724 725 .PHONY: docker-push-verification-latest 726 docker-push-verification-latest: docker-push-verification 727 docker push "$(CONTAINER_REGISTRY)/verification:latest" 728 729 .PHONY: docker-push-access-with-adx 730 docker-push-access-with-adx: 731 docker push "$(CONTAINER_REGISTRY)/access:$(IMAGE_TAG)" 732 733 .PHONY: docker-push-access-without-adx 734 docker-push-access-without-adx: 735 docker push "$(CONTAINER_REGISTRY)/access:$(IMAGE_TAG_NO_ADX)" 736 737 .PHONY: docker-push-access-corrupt 738 docker-push-access-corrupt: 739 docker push "$(CONTAINER_REGISTRY)/access-corrupted:$(IMAGE_TAG)" 740 741 .PHONY: docker-push-access-without-netgo-without-adx 742 docker-push-access-without-netgo-without-adx: 743 docker push "$(CONTAINER_REGISTRY)/access:$(IMAGE_TAG_NO_NETGO_NO_ADX)" 744 745 .PHONY: docker-push-access-arm 746 docker-push-access-arm: 747 docker push "$(CONTAINER_REGISTRY)/access:$(IMAGE_TAG_ARM)" 748 749 .PHONY: docker-push-access-latest 750 docker-push-access-latest: docker-push-access 751 docker push "$(CONTAINER_REGISTRY)/access:latest" 752 753 754 .PHONY: docker-push-observer-with-adx 755 docker-push-observer-with-adx: 756 docker push "$(CONTAINER_REGISTRY)/observer:$(IMAGE_TAG)" 757 758 .PHONY: docker-push-observer-without-adx 759 docker-push-observer-without-adx: 760 docker push "$(CONTAINER_REGISTRY)/observer:$(IMAGE_TAG_NO_ADX)" 761 762 .PHONY: docker-push-observer-without-netgo-without-adx 763 docker-push-observer-without-netgo-without-adx: 764 docker push "$(CONTAINER_REGISTRY)/observer:$(IMAGE_TAG_NO_NETGO_NO_ADX)" 765 766 .PHONY: docker-push-observer-arm 767 docker-push-observer-arm: 768 docker push "$(CONTAINER_REGISTRY)/observer:$(IMAGE_TAG_ARM)" 769 770 .PHONY: docker-push-observer-latest 771 docker-push-observer-latest: docker-push-observer 772 docker push "$(CONTAINER_REGISTRY)/observer:latest" 773 774 .PHONY: docker-push-ghost 775 docker-push-ghost: 776 docker push "$(CONTAINER_REGISTRY)/ghost:$(IMAGE_TAG)" 777 778 .PHONY: docker-push-ghost-latest 779 docker-push-ghost-latest: docker-push-ghost 780 docker push "$(CONTAINER_REGISTRY)/ghost:latest" 781 782 .PHONY: docker-push-loader 783 docker-push-loader: 784 docker push "$(CONTAINER_REGISTRY)/loader:$(IMAGE_TAG)" 785 786 .PHONY: docker-push-loader-latest 787 docker-push-loader-latest: docker-push-loader 788 docker push "$(CONTAINER_REGISTRY)/loader:latest" 789 790 .PHONY: docker-push-flow-with-adx 791 docker-push-flow-with-adx: docker-push-collection-with-adx docker-push-consensus-with-adx docker-push-execution-with-adx docker-push-verification-with-adx docker-push-access-with-adx docker-push-observer-with-adx 792 793 .PHONY: docker-push-flow-without-adx 794 docker-push-flow-without-adx: docker-push-collection-without-adx docker-push-consensus-without-adx docker-push-execution-without-adx docker-push-verification-without-adx docker-push-access-without-adx docker-push-observer-without-adx 795 796 .PHONY: docker-push-flow-without-netgo-without-adx 797 docker-push-flow-without-netgo-without-adx: docker-push-collection-without-netgo-without-adx docker-push-consensus-without-netgo-without-adx docker-push-execution-without-netgo-without-adx docker-push-verification-without-netgo-without-adx docker-push-access-without-netgo-without-adx docker-push-observer-without-netgo-without-adx 798 799 .PHONY: docker-push-flow-arm 800 docker-push-flow-arm: docker-push-collection-arm docker-push-consensus-arm docker-push-execution-arm docker-push-verification-arm docker-push-access-arm docker-push-observer-arm 801 802 .PHONY: docker-push-flow-latest 803 docker-push-flow-latest: docker-push-collection-latest docker-push-consensus-latest docker-push-execution-latest docker-push-verification-latest docker-push-access-latest docker-push-observer-latest 804 805 .PHONY: docker-push-flow-corrupt 806 docker-push-flow-corrupt: docker-push-access-corrupt docker-push-execution-corrupt docker-push-verification-corrupt 807 808 .PHONY: docker-push-benchnet 809 docker-push-benchnet: docker-push-flow docker-push-loader 810 811 .PHONY: docker-push-benchnet-latest 812 docker-push-benchnet-latest: docker-push-flow-latest docker-push-loader-latest 813 814 .PHONY: docker-run-collection 815 docker-run-collection: 816 docker run -p 8080:8080 -p 3569:3569 "$(CONTAINER_REGISTRY)/collection:latest" --nodeid 1234567890123456789012345678901234567890123456789012345678901234 --entries collection-1234567890123456789012345678901234567890123456789012345678901234@localhost:3569=1000 817 818 .PHONY: docker-run-consensus 819 docker-run-consensus: 820 docker run -p 8080:8080 -p 3569:3569 "$(CONTAINER_REGISTRY)/consensus:latest" --nodeid 1234567890123456789012345678901234567890123456789012345678901234 --entries consensus-1234567890123456789012345678901234567890123456789012345678901234@localhost:3569=1000 821 822 .PHONY: docker-run-execution 823 docker-run-execution: 824 docker run -p 8080:8080 -p 3569:3569 "$(CONTAINER_REGISTRY)/execution:latest" --nodeid 1234567890123456789012345678901234567890123456789012345678901234 --entries execution-1234567890123456789012345678901234567890123456789012345678901234@localhost:3569=1000 825 826 .PHONY: docker-run-verification 827 docker-run-verification: 828 docker run -p 8080:8080 -p 3569:3569 "$(CONTAINER_REGISTRY)/verification:latest" --nodeid 1234567890123456789012345678901234567890123456789012345678901234 --entries verification-1234567890123456789012345678901234567890123456789012345678901234@localhost:3569=1000 829 830 .PHONY: docker-run-access 831 docker-run-access: 832 docker run -p 9000:9000 -p 3569:3569 -p 8080:8080 -p 8000:8000 "$(CONTAINER_REGISTRY)/access:latest" --nodeid 1234567890123456789012345678901234567890123456789012345678901234 --entries access-1234567890123456789012345678901234567890123456789012345678901234@localhost:3569=1000 833 834 .PHONY: docker-run-observer 835 docker-run-observer: 836 docker run -p 9000:9000 -p 3569:3569 -p 8080:8080 -p 8000:8000 "$(CONTAINER_REGISTRY)/observer:latest" --nodeid 1234567890123456789012345678901234567890123456789012345678901234 --entries observer-1234567890123456789012345678901234567890123456789012345678901234@localhost:3569=1000 837 838 .PHONY: docker-run-ghost 839 docker-run-ghost: 840 docker run -p 9000:9000 -p 3569:3569 "$(CONTAINER_REGISTRY)/ghost:latest" --nodeid 1234567890123456789012345678901234567890123456789012345678901234 --entries ghost-1234567890123456789012345678901234567890123456789012345678901234@localhost:3569=1000 841 842 PHONY: docker-all-tools 843 docker-all-tools: tool-util tool-remove-execution-fork 844 845 PHONY: docker-build-util 846 docker-build-util: 847 docker build -f cmd/Dockerfile --build-arg TARGET=./cmd/util --build-arg GOARCH=$(GOARCH) --build-arg VERSION=$(IMAGE_TAG) --build-arg CGO_FLAG=$(CRYPTO_FLAG) --target production \ 848 -t "$(CONTAINER_REGISTRY)/util:latest" \ 849 -t "$(CONTAINER_REGISTRY)/util:$(IMAGE_TAG)" . 850 851 PHONY: tool-util 852 tool-util: docker-build-util 853 docker container create --name util $(CONTAINER_REGISTRY)/util:latest;docker container cp util:/bin/app ./util;docker container rm util 854 855 PHONY: docker-build-remove-execution-fork 856 docker-build-remove-execution-fork: 857 docker build -f cmd/Dockerfile --ssh default --build-arg TARGET=./cmd/util/cmd/remove-execution-fork --build-arg GOARCH=$(GOARCH) --build-arg VERSION=$(IMAGE_TAG) --build-arg CGO_FLAG=$(CRYPTO_FLAG) --target production \ 858 -t "$(CONTAINER_REGISTRY)/remove-execution-fork:latest" \ 859 -t "$(CONTAINER_REGISTRY)/remove-execution-fork:$(IMAGE_TAG)" . 860 861 PHONY: tool-remove-execution-fork 862 tool-remove-execution-fork: docker-build-remove-execution-fork 863 docker container create --name remove-execution-fork $(CONTAINER_REGISTRY)/remove-execution-fork:latest;docker container cp remove-execution-fork:/bin/app ./remove-execution-fork;docker container rm remove-execution-fork 864 865 .PHONY: check-go-version 866 check-go-version: 867 @bash -c '\ 868 MINGOVERSION=1.18; \ 869 function ver { printf "%d%03d%03d%03d" $$(echo "$$1" | tr . " "); }; \ 870 GOVER=$$(go version | sed -rne "s/.* go([0-9.]+).*/\1/p" ); \ 871 if [ "$$(ver $$GOVER)" -lt "$$(ver $$MINGOVERSION)" ]; then \ 872 echo "go $$GOVER is too old. flow-go only supports go $$MINGOVERSION and up."; \ 873 exit 1; \ 874 fi; \ 875 ' 876 877 #---------------------------------------------------------------------- 878 # CD COMMANDS 879 #---------------------------------------------------------------------- 880 881 .PHONY: deploy-staging 882 deploy-staging: update-deployment-image-name-staging apply-staging-files monitor-rollout 883 884 # Staging YAMLs must have 'staging' in their name. 885 .PHONY: apply-staging-files 886 apply-staging-files: 887 kconfig=$$(uuidgen); \ 888 echo "$$KUBECONFIG_STAGING" > $$kconfig; \ 889 files=$$(find ${K8S_YAMLS_LOCATION_STAGING} -type f \( --name "*.yml" -or --name "*.yaml" \)); \ 890 echo "$$files" | xargs -I {} kubectl --kubeconfig=$$kconfig apply -f {} 891 892 # Deployment YAMLs must have 'deployment' in their name. 893 .PHONY: update-deployment-image-name-staging 894 update-deployment-image-name-staging: CONTAINER=flow-test-net 895 update-deployment-image-name-staging: 896 @files=$$(find ${K8S_YAMLS_LOCATION_STAGING} -type f \( --name "*.yml" -or --name "*.yaml" \) | grep deployment); \ 897 for file in $$files; do \ 898 patched=`openssl rand -hex 8`; \ 899 node=`echo "$$file" | grep -oP 'flow-\K\w+(?=-node-deployment.yml)'`; \ 900 kubectl patch -f $$file -p '{"spec":{"template":{"spec":{"containers":[{"name":"${CONTAINER}","image":"$(CONTAINER_REGISTRY)/'"$$node"':${IMAGE_TAG}"}]}}}}`' --local -o yaml > $$patched; \ 901 mv -f $$patched $$file; \ 902 done 903 904 .PHONY: monitor-rollout 905 monitor-rollout: 906 kconfig=$$(uuidgen); \ 907 echo "$$KUBECONFIG_STAGING" > $$kconfig; \ 908 kubectl --kubeconfig=$$kconfig rollout status statefulsets.apps flow-collection-node-v1; \ 909 kubectl --kubeconfig=$$kconfig rollout status statefulsets.apps flow-consensus-node-v1; \ 910 kubectl --kubeconfig=$$kconfig rollout status statefulsets.apps flow-execution-node-v1; \ 911 kubectl --kubeconfig=$$kconfig rollout status statefulsets.apps flow-verification-node-v1