1GO_VERSION ?= 1.17.5 2GOOS ?= linux 3GOARCH ?= amd64 4GOPATH ?= $(shell go env GOPATH) 5COMPOSE_PROJECT_NAME := ${TAG}-$(shell git rev-parse --abbrev-ref HEAD) 6BRANCH_NAME ?= $(shell git rev-parse --abbrev-ref HEAD | sed "s!/!-!g") 7ifeq (${BRANCH_NAME},main) 8TAG := $(shell git rev-parse --short HEAD)-go${GO_VERSION} 9TRACKED_BRANCH := true 10LATEST_TAG := latest 11else 12TAG := $(shell git rev-parse --short HEAD)-${BRANCH_NAME}-go${GO_VERSION} 13ifneq (,$(findstring release-,$(BRANCH_NAME))) 14TRACKED_BRANCH := true 15LATEST_TAG := ${BRANCH_NAME}-latest 16endif 17endif 18CUSTOMTAG ?= 19 20FILEEXT := 21ifeq (${GOOS},windows) 22FILEEXT := .exe 23endif 24 25DOCKER_BUILD := docker build \ 26 --build-arg TAG=${TAG} 27 28.DEFAULT_GOAL := help 29.PHONY: help 30help: 31 @awk 'BEGIN { \ 32 FS = ":.*##"; \ 33 printf "\nUsage:\n make \033[36m<target>\033[0m\n"\ 34 } \ 35 /^[a-zA-Z_-]+:.*?##/ { \ 36 printf " \033[36m%-17s\033[0m %s\n", $$1, $$2 \ 37 } \ 38 /^##@/ { \ 39 printf "\n\033[1m%s\033[0m\n", substr($$0, 5) \ 40 } ' $(MAKEFILE_LIST) 41 42##@ Dependencies 43 44.PHONY: build-dev-deps 45build-dev-deps: ## Install dependencies for builds 46 go get golang.org/x/tools/cover 47 go get github.com/go-bindata/go-bindata/go-bindata 48 go get github.com/josephspurrier/goversioninfo/cmd/goversioninfo 49 50.PHONY: lint 51lint: ## Analyze and find programs in source code 52 @echo "Running ${@}" 53 @golangci-lint run 54 55.PHONY: goimports-fix 56goimports-fix: ## Applies goimports to every go file (excluding vendored files) 57 goimports -w -local storj.io $$(find . -type f -name '*.go' -not -path "*/vendor/*") 58 59.PHONY: goimports-st 60goimports-st: ## Applies goimports to every go file in `git status` (ignores untracked files) 61 @git status --porcelain -uno|grep .go|grep -v "^D"|sed -E 's,\w+\s+(.+->\s+)?,,g'|xargs -I {} goimports -w -local storj.io {} 62 63.PHONY: build-packages 64build-packages: build-packages-race build-packages-normal build-satellite-npm build-storagenode-npm build-multinode-npm build-satellite-admin-npm ## Test docker images locally 65build-packages-race: 66 go build -v ./... 67build-packages-normal: 68 go build -v -race ./... 69build-satellite-npm: 70 cd web/satellite && npm ci 71build-storagenode-npm: 72 cd web/storagenode && npm ci 73build-multinode-npm: 74 cd web/multinode && npm ci 75build-satellite-admin-npm: 76 cd satellite/admin/ui && npm ci 77 78##@ Simulator 79 80# Allow the caller to set GATEWAYPATH if desired. This controls where the new 81# go module is created to install the specific gateway version. 82ifndef GATEWAYPATH 83GATEWAYPATH=.build/gateway-tmp 84endif 85.PHONY: install-sim 86install-sim: ## install storj-sim 87 @echo "Running ${@}" 88 go install -race -v \ 89 storj.io/storj/cmd/satellite \ 90 storj.io/storj/cmd/storagenode \ 91 storj.io/storj/cmd/storj-sim \ 92 storj.io/storj/cmd/versioncontrol \ 93 storj.io/storj/cmd/uplink \ 94 storj.io/storj/cmd/identity \ 95 storj.io/storj/cmd/certificates \ 96 storj.io/storj/cmd/multinode 97 98 ## install the latest stable version of Gateway-ST 99 go install -race -v storj.io/gateway@latest 100 101##@ Test 102 103.PHONY: test 104test: ## Run tests on source code (jenkins) 105 go test -race -v -cover -coverprofile=.coverprofile ./... 106 @echo done 107 108.PHONY: test-sim 109test-sim: ## Test source with storj-sim (jenkins) 110 @echo "Running ${@}" 111 @./scripts/test-sim.sh 112 113.PHONY: test-sim-redis-unavailability 114test-sim-redis-unavailability: ## Test source with Redis availability with storj-sim (jenkins) 115 @echo "Running ${@}" 116 @./scripts/test-sim-redis-up-and-down.sh 117 118 119.PHONY: test-certificates 120test-certificates: ## Test certificate signing service and storagenode setup (jenkins) 121 @echo "Running ${@}" 122 @./scripts/test-certificates.sh 123 124.PHONY: test-sim-backwards-compatible 125test-sim-backwards-compatible: ## Test uploading a file with lastest release (jenkins) 126 @echo "Running ${@}" 127 @./scripts/test-sim-backwards.sh 128 129.PHONY: check-monitoring 130check-monitoring: ## Check for locked monkit calls that have changed 131 @echo "Running ${@}" 132 @check-monitoring ./... | diff -U0 ./monkit.lock - \ 133 || (echo "Locked monkit metrics have been changed. **Notify #team-data** and run \`go run github.com/storj/ci/check-monitoring -out monkit.lock ./...\` to update monkit.lock file." \ 134 && exit 1) 135 136.PHONY: test-wasm-size 137test-wasm-size: ## Test that the built .wasm code has not increased in size 138 @echo "Running ${@}" 139 @./scripts/test-wasm-size.sh 140 141##@ Build 142 143.PHONY: storagenode-console 144storagenode-console: 145 # build web assets 146 rm -rf web/storagenode/dist 147 # install npm dependencies and build the binaries 148 docker run --rm -i \ 149 --mount type=bind,src="${PWD}",dst=/go/src/storj.io/storj \ 150 -w /go/src/storj.io/storj/web/storagenode \ 151 -e HOME=/tmp \ 152 -u $(shell id -u):$(shell id -g) \ 153 node:16.11.1 \ 154 /bin/bash -c "npm ci && npm run build" 155 # embed web assets into go 156 go-bindata -prefix web/storagenode/ -fs -o storagenode/console/consoleassets/bindata.resource.go -pkg consoleassets web/storagenode/dist/... web/storagenode/static/... 157 # configure existing go code to know about the new assets 158 /usr/bin/env echo -e '\nfunc init() { FileSystem = AssetFile() }' >> storagenode/console/consoleassets/bindata.resource.go 159 gofmt -w -s storagenode/console/consoleassets/bindata.resource.go 160 161.PHONY: multinode-console 162multinode-console: 163 # build web assets 164 rm -rf web/multinode/dist 165 # install npm dependencies and build the binaries 166 docker run --rm -i \ 167 --mount type=bind,src="${PWD}",dst=/go/src/storj.io/storj \ 168 -w /go/src/storj.io/storj/web/multinode \ 169 -e HOME=/tmp \ 170 -u $(shell id -u):$(shell id -g) \ 171 node:16.11.1 \ 172 /bin/bash -c "npm ci && npm run build" 173 # embed web assets into go 174 go-bindata -prefix web/multinode/ -fs -o multinode/console/consoleassets/bindata.resource.go -pkg consoleassets web/multinode/dist/... web/multinode/static/... 175 # configure existing go code to know about the new assets 176 /usr/bin/env echo -e '\nfunc init() { FileSystem = AssetFile() }' >> multinode/console/consoleassets/bindata.resource.go 177 gofmt -w -s multinode/console/consoleassets/bindata.resource.go 178 179.PHONY: satellite-admin-ui 180satellite-admin-ui: 181 # build web assets 182 rm -rf satellite/admin/ui/public/build 183 # install npm dependencies for being embedded by Go embed. 184 docker run --rm -i \ 185 --mount type=bind,src="${PWD}",dst=/go/src/storj.io/storj \ 186 -w /go/src/storj.io/storj/satellite/admin/ui \ 187 -e HOME=/tmp \ 188 -u $(shell id -u):$(shell id -g) \ 189 node:16.11.1 \ 190 /bin/bash -c "npm ci && npm run build" 191 192.PHONY: satellite-wasm 193satellite-wasm: 194 docker run --rm -i -v "${PWD}":/go/src/storj.io/storj -e GO111MODULE=on \ 195 -e GOOS=js -e GOARCH=wasm -e GOARM=6 -e CGO_ENABLED=1 \ 196 -v /tmp/go-cache:/tmp/.cache/go-build -v /tmp/go-pkg:/go/pkg \ 197 -w /go/src/storj.io/storj -e GOPROXY -e TAG=${TAG} -u $(shell id -u):$(shell id -g) storjlabs/golang:${GO_VERSION} \ 198 scripts/build-wasm.sh ;\ 199 200.PHONY: images 201images: satellite-image storagenode-image uplink-image versioncontrol-image ## Build satellite, storagenode, uplink, and versioncontrol Docker images 202 echo Built version: ${TAG} 203 204.PHONY: satellite-image 205satellite-image: satellite_linux_arm satellite_linux_arm64 satellite_linux_amd64 ## Build satellite Docker image 206 ${DOCKER_BUILD} --pull=true -t storjlabs/satellite:${TAG}${CUSTOMTAG}-amd64 \ 207 -f cmd/satellite/Dockerfile . 208 ${DOCKER_BUILD} --pull=true -t storjlabs/satellite:${TAG}${CUSTOMTAG}-arm32v6 \ 209 --build-arg=GOARCH=arm --build-arg=DOCKER_ARCH=arm32v6 \ 210 -f cmd/satellite/Dockerfile . 211 ${DOCKER_BUILD} --pull=true -t storjlabs/satellite:${TAG}${CUSTOMTAG}-arm64v8 \ 212 --build-arg=GOARCH=arm64 --build-arg=DOCKER_ARCH=arm64v8 \ 213 -f cmd/satellite/Dockerfile . 214 215.PHONY: storagenode-image 216storagenode-image: storagenode_linux_arm storagenode_linux_arm64 storagenode_linux_amd64 ## Build storagenode Docker image 217 ${DOCKER_BUILD} --pull=true -t storjlabs/storagenode:${TAG}${CUSTOMTAG}-amd64 \ 218 -f cmd/storagenode/Dockerfile . 219 ${DOCKER_BUILD} --pull=true -t storjlabs/storagenode:${TAG}${CUSTOMTAG}-arm32v6 \ 220 --build-arg=GOARCH=arm --build-arg=DOCKER_ARCH=arm32v6 \ 221 -f cmd/storagenode/Dockerfile . 222 ${DOCKER_BUILD} --pull=true -t storjlabs/storagenode:${TAG}${CUSTOMTAG}-arm64v8 \ 223 --build-arg=GOARCH=arm64 --build-arg=DOCKER_ARCH=arm64v8 \ 224 -f cmd/storagenode/Dockerfile . 225.PHONY: uplink-image 226uplink-image: uplink_linux_arm uplink_linux_arm64 uplink_linux_amd64 ## Build uplink Docker image 227 ${DOCKER_BUILD} --pull=true -t storjlabs/uplink:${TAG}${CUSTOMTAG}-amd64 \ 228 -f cmd/uplink/Dockerfile . 229 ${DOCKER_BUILD} --pull=true -t storjlabs/uplink:${TAG}${CUSTOMTAG}-arm32v6 \ 230 --build-arg=GOARCH=arm --build-arg=DOCKER_ARCH=arm32v6 \ 231 -f cmd/uplink/Dockerfile . 232 ${DOCKER_BUILD} --pull=true -t storjlabs/uplink:${TAG}${CUSTOMTAG}-arm64v8 \ 233 --build-arg=GOARCH=arm64 --build-arg=DOCKER_ARCH=arm64v8 \ 234 -f cmd/uplink/Dockerfile . 235.PHONY: versioncontrol-image 236versioncontrol-image: versioncontrol_linux_arm versioncontrol_linux_arm64 versioncontrol_linux_amd64 ## Build versioncontrol Docker image 237 ${DOCKER_BUILD} --pull=true -t storjlabs/versioncontrol:${TAG}${CUSTOMTAG}-amd64 \ 238 -f cmd/versioncontrol/Dockerfile . 239 ${DOCKER_BUILD} --pull=true -t storjlabs/versioncontrol:${TAG}${CUSTOMTAG}-arm32v6 \ 240 --build-arg=GOARCH=arm --build-arg=DOCKER_ARCH=arm32v6 \ 241 -f cmd/versioncontrol/Dockerfile . 242 ${DOCKER_BUILD} --pull=true -t storjlabs/versioncontrol:${TAG}${CUSTOMTAG}-arm64v8 \ 243 --build-arg=GOARCH=arm64 --build-arg=DOCKER_ARCH=arm64v8 \ 244 -f cmd/versioncontrol/Dockerfile . 245 246.PHONY: binary 247binary: CUSTOMTAG = -${GOOS}-${GOARCH} 248binary: 249 @if [ -z "${COMPONENT}" ]; then echo "Try one of the following targets instead:" \ 250 && for b in binaries ${BINARIES}; do echo "- $$b"; done && exit 1; fi 251 mkdir -p release/${TAG} 252 mkdir -p /tmp/go-cache /tmp/go-pkg 253 rm -f cmd/${COMPONENT}/resource.syso 254 if [ "${GOARCH}" = "amd64" ]; then sixtyfour="-64"; fi; \ 255 [ "${GOOS}" = "windows" ] && [ "${GOARCH}" = "amd64" ] && goversioninfo $$sixtyfour -o cmd/${COMPONENT}/resource.syso \ 256 -original-name ${COMPONENT}_${GOOS}_${GOARCH}${FILEEXT} \ 257 -description "${COMPONENT} program for Storj" \ 258 -product-ver-major "$(shell git describe --tags --exact-match --match "v[0-9]*\.[0-9]*\.[0-9]*" | awk -F'.' 'BEGIN {v=0} {gsub("v", "", $$0); v=$$1} END {print v}' )" \ 259 -ver-major "$(shell git describe --tags --exact-match --match "v[0-9]*\.[0-9]*\.[0-9]*" | awk -F'.' 'BEGIN {v=0} {gsub("v", "", $$0); v=$$1} END {print v}' )" \ 260 -product-ver-minor "$(shell git describe --tags --exact-match --match "v[0-9]*\.[0-9]*\.[0-9]*" | awk -F'.' 'BEGIN {v=0} {v=$$2} END {print v}')" \ 261 -ver-minor "$(shell git describe --tags --exact-match --match "v[0-9]*\.[0-9]*\.[0-9]*" | awk -F'.' 'BEGIN {v=0} {v=$$2} END {print v}')" \ 262 -product-ver-patch "$(shell git describe --tags --exact-match --match "v[0-9]*\.[0-9]*\.[0-9]*" | awk -F'.' 'BEGIN {v=0} {v=$$3} END {print v}' | awk -F'-' 'BEGIN {v=0} {v=$$1} END {print v}')" \ 263 -ver-patch "$(shell git describe --tags --exact-match --match "v[0-9]*\.[0-9]*\.[0-9]*" | awk -F'.' 'BEGIN {v=0} {v=$$3} END {print v}' | awk -F'-' 'BEGIN {v=0} {v=$$1} END {print v}')" \ 264 -product-version "$(shell git describe --tags --exact-match --match "v[0-9]*\.[0-9]*\.[0-9]*" | awk -F'-' 'BEGIN {v=0} {v=$$1} END {print v}' || echo "dev" )" \ 265 -special-build "$(shell git describe --tags --exact-match --match "v[0-9]*\.[0-9]*\.[0-9]*" | awk -F'-' 'BEGIN {v=0} {v=$$2} END {print v}' )" \ 266 resources/versioninfo.json || echo "goversioninfo is not installed, metadata will not be created" 267 docker run --rm -i -v "${PWD}":/go/src/storj.io/storj -e GO111MODULE=on \ 268 -e GOOS=${GOOS} -e GOARCH=${GOARCH} -e GOARM=6 -e CGO_ENABLED=1 \ 269 -v /tmp/go-cache:/tmp/.cache/go-build -v /tmp/go-pkg:/go/pkg \ 270 -w /go/src/storj.io/storj -e GOPROXY -u $(shell id -u):$(shell id -g) storjlabs/golang:${GO_VERSION} \ 271 scripts/release.sh build $(EXTRA_ARGS) -o release/${TAG}/$(COMPONENT)_${GOOS}_${GOARCH}${FILEEXT} \ 272 storj.io/storj/cmd/${COMPONENT} 273 274 if [ "${COMPONENT}" = "satellite" ] && [ "${GOOS}" = "linux" ] && [ "${GOARCH}" = "amd64" ]; \ 275 then \ 276 echo "Building wasm code"; \ 277 $(MAKE) satellite-wasm; \ 278 fi 279 280 chmod 755 release/${TAG}/$(COMPONENT)_${GOOS}_${GOARCH}${FILEEXT} 281 [ "${FILEEXT}" = ".exe" ] && storj-sign release/${TAG}/$(COMPONENT)_${GOOS}_${GOARCH}${FILEEXT} || echo "Skipping signing" 282 rm -f release/${TAG}/${COMPONENT}_${GOOS}_${GOARCH}.zip 283 284.PHONY: binary-check 285binary-check: 286 @if [ -f release/${TAG}/${COMPONENT}_${GOOS}_${GOARCH} ] || [ -f release/${TAG}/${COMPONENT}_${GOOS}_${GOARCH}.exe ]; \ 287 then \ 288 echo "release/${TAG}/${COMPONENT}_${GOOS}_${GOARCH} exists"; \ 289 else \ 290 echo "Making ${COMPONENT}"; \ 291 $(MAKE) binary; \ 292 fi 293 294.PHONY: certificates_% 295certificates_%: 296 $(MAKE) binary-check COMPONENT=certificates GOARCH=$(word 3, $(subst _, ,$@)) GOOS=$(word 2, $(subst _, ,$@)) 297.PHONY: identity_% 298identity_%: 299 $(MAKE) binary-check COMPONENT=identity GOARCH=$(word 3, $(subst _, ,$@)) GOOS=$(word 2, $(subst _, ,$@)) 300.PHONY: inspector_% 301inspector_%: 302 $(MAKE) binary-check COMPONENT=inspector GOARCH=$(word 3, $(subst _, ,$@)) GOOS=$(word 2, $(subst _, ,$@)) 303.PHONY: satellite_% 304satellite_%: satellite-admin-ui 305 $(MAKE) binary-check COMPONENT=satellite GOARCH=$(word 3, $(subst _, ,$@)) GOOS=$(word 2, $(subst _, ,$@)) 306.PHONY: storagenode_% 307storagenode_%: storagenode-console 308 $(MAKE) binary-check COMPONENT=storagenode GOARCH=$(word 3, $(subst _, ,$@)) GOOS=$(word 2, $(subst _, ,$@)) 309.PHONY: storagenode-updater_% 310storagenode-updater_%: 311 EXTRA_ARGS="-tags=service" $(MAKE) binary-check COMPONENT=storagenode-updater GOARCH=$(word 3, $(subst _, ,$@)) GOOS=$(word 2, $(subst _, ,$@)) 312.PHONY: uplink_% 313uplink_%: 314 $(MAKE) binary-check COMPONENT=uplink GOARCH=$(word 3, $(subst _, ,$@)) GOOS=$(word 2, $(subst _, ,$@)) 315.PHONY: versioncontrol_% 316versioncontrol_%: 317 $(MAKE) binary-check COMPONENT=versioncontrol GOARCH=$(word 3, $(subst _, ,$@)) GOOS=$(word 2, $(subst _, ,$@)) 318.PHONY: multinode_% 319multinode_%: multinode-console 320 $(MAKE) binary-check COMPONENT=multinode GOARCH=$(word 3, $(subst _, ,$@)) GOOS=$(word 2, $(subst _, ,$@)) 321.PHONY: uplinkng_% 322uplinkng_%: 323 $(MAKE) binary-check COMPONENT=uplinkng GOARCH=$(word 3, $(subst _, ,$@)) GOOS=$(word 2, $(subst _, ,$@)) 324 325 326COMPONENTLIST := certificates identity inspector satellite storagenode storagenode-updater uplink versioncontrol multinode uplinkng 327OSARCHLIST := linux_amd64 linux_arm linux_arm64 windows_amd64 freebsd_amd64 328BINARIES := $(foreach C,$(COMPONENTLIST),$(foreach O,$(OSARCHLIST),$C_$O)) 329.PHONY: binaries 330binaries: ${BINARIES} ## Build certificates, identity, inspector, satellite, storagenode, uplink, versioncontrol and multinode binaries (jenkins) 331 332.PHONY: sign-windows-installer 333sign-windows-installer: 334 storj-sign release/${TAG}/storagenode_windows_amd64.msi 335 336##@ Deploy 337 338.PHONY: push-images 339push-images: ## Push Docker images to Docker Hub (jenkins) 340 # images have to be pushed before a manifest can be created 341 # satellite 342 for c in satellite storagenode uplink versioncontrol ; do \ 343 docker push storjlabs/$$c:${TAG}${CUSTOMTAG}-amd64 \ 344 && docker push storjlabs/$$c:${TAG}${CUSTOMTAG}-arm32v6 \ 345 && docker push storjlabs/$$c:${TAG}${CUSTOMTAG}-arm64v8 \ 346 && for t in ${TAG}${CUSTOMTAG} ${LATEST_TAG}; do \ 347 docker manifest create storjlabs/$$c:$$t \ 348 storjlabs/$$c:${TAG}${CUSTOMTAG}-amd64 \ 349 storjlabs/$$c:${TAG}${CUSTOMTAG}-arm32v6 \ 350 storjlabs/$$c:${TAG}${CUSTOMTAG}-arm64v8 \ 351 && docker manifest annotate storjlabs/$$c:$$t storjlabs/$$c:${TAG}${CUSTOMTAG}-amd64 --os linux --arch amd64 \ 352 && docker manifest annotate storjlabs/$$c:$$t storjlabs/$$c:${TAG}${CUSTOMTAG}-arm32v6 --os linux --arch arm --variant v6 \ 353 && docker manifest annotate storjlabs/$$c:$$t storjlabs/$$c:${TAG}${CUSTOMTAG}-arm64v8 --os linux --arch arm64 --variant v8 \ 354 && docker manifest push --purge storjlabs/$$c:$$t \ 355 ; done \ 356 ; done 357 358.PHONY: binaries-upload 359binaries-upload: ## Upload binaries to Google Storage (jenkins) 360 cd "release/${TAG}"; for f in *; do \ 361 zipname=$$(echo $${f} | sed 's/.exe//g') \ 362 && filename=$$(echo $${f} | sed 's/_.*\.exe/.exe/g' | sed 's/_.*\.msi/.msi/g' | sed 's/_.*//g') \ 363 && if [ "$${f}" != "$${filename}" ]; then \ 364 ln $${f} $${filename} \ 365 && zip -r "$${zipname}.zip" "$${filename}" \ 366 && rm $${filename} \ 367 ; else \ 368 zip -r "$${zipname}.zip" "$${filename}" \ 369 ; fi \ 370 ; done 371 cd "release/${TAG}"; gsutil -m cp -r *.zip "gs://storj-v3-alpha-builds/${TAG}/" 372 373##@ Clean 374 375.PHONY: clean 376clean: binaries-clean clean-images ## Clean docker test environment, local release binaries, and local Docker images 377 378.PHONY: binaries-clean 379binaries-clean: ## Remove all local release binaries (jenkins) 380 rm -rf release 381 382.PHONY: clean-images 383clean-images: 384 -docker rmi storjlabs/satellite:${TAG}${CUSTOMTAG} 385 -docker rmi storjlabs/storagenode:${TAG}${CUSTOMTAG} 386 -docker rmi storjlabs/uplink:${TAG}${CUSTOMTAG} 387 -docker rmi storjlabs/versioncontrol:${TAG}${CUSTOMTAG} 388 389##@ Tooling 390 391.PHONY: diagrams 392diagrams: 393 archview -root "storj.io/storj/satellite.Core" -skip-class "Peer,Master Database" -trim-prefix storj.io/storj/satellite/ ./satellite/... | dot -T svg -o satellite-core.svg 394 archview -root "storj.io/storj/satellite.API" -skip-class "Peer,Master Database" -trim-prefix storj.io/storj/satellite/ ./satellite/... | dot -T svg -o satellite-api.svg 395 archview -root "storj.io/storj/satellite.Repairer" -skip-class "Peer,Master Database" -trim-prefix storj.io/storj/satellite/ ./satellite/... | dot -T svg -o satellite-repair.svg 396 archview -skip-class "Peer,Master Database" -trim-prefix storj.io/storj/satellite/ ./satellite/... | dot -T svg -o satellite.svg 397 archview -skip-class "Peer,Master Database" -trim-prefix storj.io/storj/storagenode/ ./storagenode/... | dot -T svg -o storage-node.svg 398 399.PHONY: diagrams-graphml 400diagrams-graphml: 401 archview -root "storj.io/storj/satellite.Core" -skip-class "Peer,Master Database" -trim-prefix storj.io/storj/satellite/ -out satellite-core.graphml ./satellite/... 402 archview -root "storj.io/storj/satellite.API" -skip-class "Peer,Master Database" -trim-prefix storj.io/storj/satellite/ -out satellite-api.graphml ./satellite/... 403 archview -root "storj.io/storj/satellite.Repairer" -skip-class "Peer,Master Database" -trim-prefix storj.io/storj/satellite/ -out satellite-repair.graphml ./satellite/... 404 archview -skip-class "Peer,Master Database" -trim-prefix storj.io/storj/satellite/ -out satellite.graphml ./satellite/... 405 archview -skip-class "Peer,Master Database" -trim-prefix storj.io/storj/storagenode/ -out storage-node.graphml ./storagenode/... 406 407.PHONY: bump-dependencies 408bump-dependencies: 409 go get storj.io/common@main storj.io/private@main storj.io/uplink@main 410 go mod tidy 411 cd testsuite;\ 412 go get storj.io/common@main storj.io/storj@main storj.io/uplink@main;\ 413 go mod tidy; 414 415update-proto-lock: 416 protolock commit --ignore "satellite/internalpb,storagenode/internalpb" 417