2020-02-17 06:44:01 +00:00
GO_VERSION ?= 1.13.8
2018-08-31 16:21:44 +01:00
GOOS ?= linux
GOARCH ?= amd64
2019-10-22 10:44:13 +01:00
GOPATH ?= $( shell go env GOPATH)
2018-07-25 22:47:02 +01:00
COMPOSE_PROJECT_NAME := ${ TAG } -$( shell git rev-parse --abbrev-ref HEAD)
2019-05-21 15:36:09 +01:00
BRANCH_NAME ?= $( shell git rev-parse --abbrev-ref HEAD | sed "s!/!-!g" )
i f e q ( $ { B R A N C H _ N A M E } , m a s t e r )
2019-03-07 18:58:55 +00:00
TAG := $( shell git rev-parse --short HEAD) -go${ GO_VERSION }
TRACKED_BRANCH := true
LATEST_TAG := latest
2018-08-22 03:54:56 +01:00
e l s e
2019-05-21 15:36:09 +01:00
TAG := $( shell git rev-parse --short HEAD) -${ BRANCH_NAME } -go${ GO_VERSION }
i f n e q ( , $( findstring release -,$ ( BRANCH_NAME ) ) )
2019-03-07 18:58:55 +00:00
TRACKED_BRANCH := true
2019-05-21 15:36:09 +01:00
LATEST_TAG := ${ BRANCH_NAME } -latest
2019-03-07 18:58:55 +00:00
e n d i f
2018-08-22 03:54:56 +01:00
e n d i f
2018-08-31 16:21:44 +01:00
CUSTOMTAG ?=
2018-07-25 22:47:02 +01:00
2018-08-31 16:21:44 +01:00
FILEEXT :=
i f e q ( $ { G O O S } , w i n d o w s )
FILEEXT := .exe
e n d i f
DOCKER_BUILD := docker build \
2019-04-08 21:01:20 +01:00
--build-arg TAG = ${ TAG }
2018-06-21 20:36:39 +01:00
2018-10-16 19:47:43 +01:00
.DEFAULT_GOAL := help
.PHONY : help
help :
@awk ' BEGIN { \
FS = ":.*##" ; \
printf "\nUsage:\n make \033[36m<target>\033[0m\n" \
} \
/^[ a-zA-Z_-] +:.*?##/ { \
printf " \033[36m%-17s\033[0m %s\n" , $$ 1, $$ 2 \
} \
/^##@/ { \
printf "\n\033[1m%s\033[0m\n" , substr( $$ 0, 5) \
} ' $( MAKEFILE_LIST)
##@ Dependencies
.PHONY : build -dev -deps
build-dev-deps : ## Install dependencies for builds
go get golang.org/x/tools/cover
2019-10-08 09:52:19 +01:00
go get github.com/go-bindata/go-bindata/go-bindata
2019-11-05 20:14:10 +00:00
go get github.com/josephspurrier/goversioninfo/cmd/goversioninfo
2018-10-16 19:47:43 +01:00
.PHONY : lint
2019-12-16 15:25:12 +00:00
lint : ## Analyze and find programs in source code
2018-04-23 17:05:52 +01:00
@echo " Running ${ @ } "
2018-09-11 14:13:25 +01:00
@golangci-lint run
2018-04-12 14:50:22 +01:00
2018-10-16 19:47:43 +01:00
.PHONY : goimports -fix
goimports-fix : ## Applies goimports to every go file (excluding vendored files)
2018-12-07 13:44:25 +00:00
goimports -w -local storj.io $$ ( find . -type f -name '*.go' -not -path "*/vendor/*" )
2018-06-13 19:22:32 +01:00
2018-12-13 20:01:43 +00:00
.PHONY : goimports -st
goimports-st : ## Applies goimports to every go file in `git status` (ignores untracked files)
2019-01-22 12:35:48 +00:00
@git status --porcelain -uno| grep .go| grep -v "^D" | sed -E 's,\w+\s+(.+->\s+)?,,g' | xargs -I { } goimports -w -local storj.io { }
2018-12-13 20:01:43 +00:00
2019-06-27 19:52:50 +01:00
.PHONY : build -packages
2020-02-03 14:40:07 +00:00
build-packages : build -packages -race build -packages -normal build -satellite -npm build -storagenode -npm ## Test docker images locally
2019-06-27 19:52:50 +01:00
build-packages-race :
2019-09-06 06:54:46 +01:00
go build -v ./...
2019-06-27 19:52:50 +01:00
build-packages-normal :
2019-09-06 06:54:46 +01:00
go build -v -race ./...
2020-02-03 14:40:07 +00:00
build-satellite-npm :
2019-09-05 14:32:46 +01:00
cd web/satellite && npm ci
2020-02-03 14:40:07 +00:00
build-storagenode-npm :
cd web/storagenode && npm ci
2019-06-27 19:52:50 +01:00
2019-01-16 23:09:57 +00:00
##@ Simulator
2019-01-16 18:50:16 +00:00
2019-01-16 23:09:57 +00:00
.PHONY : install -sim
install-sim : ## install storj-sim
2019-01-16 18:50:16 +00:00
@echo " Running ${ @ } "
2019-12-20 17:01:46 +00:00
go install -race -v \
storj.io/storj/cmd/satellite \
storj.io/storj/cmd/storagenode \
storj.io/storj/cmd/storj-sim \
storj.io/storj/cmd/versioncontrol \
storj.io/storj/cmd/uplink \
storj.io/storj/cmd/gateway \
storj.io/storj/cmd/identity \
storj.io/storj/cmd/certificates
2019-01-16 18:50:16 +00:00
2018-10-16 19:47:43 +01:00
##@ Test
2018-04-25 15:55:26 +01:00
2018-10-16 19:47:43 +01:00
.PHONY : test
2019-04-30 19:18:32 +01:00
test : ## Run tests on source code (jenkins)
2018-09-11 14:13:25 +01:00
go test -race -v -cover -coverprofile= .coverprofile ./...
2018-05-09 00:01:46 +01:00
@echo done
2018-06-05 22:06:37 +01:00
2019-01-16 23:09:57 +00:00
.PHONY : test -sim
2019-04-30 19:18:32 +01:00
test-sim : ## Test source with storj-sim (jenkins)
2019-01-08 15:24:15 +00:00
@echo " Running ${ @ } "
2019-01-16 23:09:57 +00:00
@./scripts/test-sim.sh
2019-01-08 15:24:15 +00:00
2019-09-04 18:58:38 +01:00
.PHONY : test -certificates
test-certificates : ## Test certificate signing service and storagenode setup (jenkins)
2019-01-04 17:23:23 +00:00
@echo " Running ${ @ } "
2019-09-04 18:58:38 +01:00
@./scripts/test-certificates.sh
2019-01-04 17:23:23 +00:00
2018-10-16 19:47:43 +01:00
.PHONY : test -docker
test-docker : ## Run tests in Docker
2018-07-25 22:47:02 +01:00
docker-compose up -d --remove-orphans test
docker-compose run test make test
2019-10-17 16:39:34 +01:00
.PHONY : test -libuplink -gomobile
test-libuplink-gomobile : ## Run gomobile tests
@./lib/uplink-gomobile/test-sim.sh
2019-06-04 18:12:27 +01:00
.PHONY : check -satellite -config -lock
check-satellite-config-lock : ## Test if the satellite config file has changed (jenkins)
@echo " Running ${ @ } "
@cd scripts; ./check-satellite-config-lock.sh
2018-08-23 16:48:03 +01:00
.PHONY : all -in -one
2018-10-16 19:47:43 +01:00
all-in-one : ## Deploy docker images with one storagenode locally
2019-01-03 19:54:27 +00:00
export VERSION = " ${ TAG } ${ CUSTOMTAG } " \
&& $( MAKE) satellite-image storagenode-image gateway-image \
&& docker-compose up --scale storagenode = 1 satellite gateway
.PHONY : test -all -in -one
test-all-in-one : ## Test docker images locally
export VERSION = " ${ TAG } ${ CUSTOMTAG } " \
&& $( MAKE) satellite-image storagenode-image gateway-image \
&& ./scripts/test-aio.sh
2018-06-21 20:36:39 +01:00
2019-08-07 00:03:14 +01:00
.PHONY : test -sim -backwards -compatible
test-sim-backwards-compatible : ## Test uploading a file with lastest release (jenkins)
@echo " Running ${ @ } "
@./scripts/test-sim-backwards.sh
2019-10-15 18:00:14 +01:00
.PHONY : check -monitoring
check-monitoring : ## Check for locked monkit calls that have changed
@echo " Running ${ @ } "
2019-12-16 15:25:12 +00:00
@check-monitoring ./... | diff -U0 ./monkit.lock - \
|| ( echo "Locked monkit metrics have been changed. Notify #data-science and run \`go run github.com/storj/ci/check-monitoring -out monkit.lock ./...\` to update monkit.lock file." \
2019-10-15 18:00:14 +01:00
&& exit 1)
2018-10-16 19:47:43 +01:00
##@ Build
2018-07-13 16:02:33 +01:00
2019-10-08 09:52:19 +01:00
.PHONY : storagenode -console
storagenode-console :
# build web assets
rm -rf web/storagenode/dist
# install npm dependencies and build the binaries
docker run --rm -i \
--mount type = bind,src= " ${ PWD } " ,dst= /go/src/storj.io/storj \
-w /go/src/storj.io/storj/web/storagenode \
2019-10-08 13:59:22 +01:00
-e HOME = /tmp \
-u $( shell id -u) :$( shell id -g) \
2019-10-08 09:52:19 +01:00
node:10.15.1 \
/bin/bash -c "npm ci && npm run build"
# embed web assets into go
go-bindata -prefix web/storagenode/ -fs -o storagenode/console/consoleassets/bindata.resource.go -pkg consoleassets web/storagenode/dist/... web/storagenode/static/...
# configure existing go code to know about the new assets
2019-11-05 21:40:06 +00:00
/usr/bin/env echo -e '\nfunc init() { FileSystem = AssetFile() }' >> storagenode/console/consoleassets/bindata.resource.go
2019-10-08 09:52:19 +01:00
gofmt -w -s storagenode/console/consoleassets/bindata.resource.go
2018-10-16 19:47:43 +01:00
.PHONY : images
2019-10-04 21:48:41 +01:00
images : gateway -image satellite -image storagenode -image uplink -image versioncontrol -image ## Build gateway, satellite, storagenode, uplink, and versioncontrol Docker images
2018-10-16 19:47:43 +01:00
echo Built version: ${ TAG }
2018-08-23 22:04:51 +01:00
2018-12-04 21:10:23 +00:00
.PHONY : gateway -image
2019-08-19 10:40:16 +01:00
gateway-image : gateway_linux_arm gateway_linux_arm 64 gateway_linux_amd 64 ## Build gateway Docker image
2019-04-08 21:01:20 +01:00
${ DOCKER_BUILD } --pull= true -t storjlabs/gateway:${ TAG } ${ CUSTOMTAG } -amd64 \
-f cmd/gateway/Dockerfile .
${ DOCKER_BUILD } --pull= true -t storjlabs/gateway:${ TAG } ${ CUSTOMTAG } -arm32v6 \
--build-arg= GOARCH = arm --build-arg= DOCKER_ARCH = arm32v6 \
-f cmd/gateway/Dockerfile .
2019-08-19 10:40:16 +01:00
${ DOCKER_BUILD } --pull= true -t storjlabs/gateway:${ TAG } ${ CUSTOMTAG } -aarch64 \
--build-arg= GOARCH = arm --build-arg= DOCKER_ARCH = aarch64 \
-f cmd/gateway/Dockerfile .
2018-10-16 19:47:43 +01:00
.PHONY : satellite -image
2019-08-19 10:40:16 +01:00
satellite-image : satellite_linux_arm satellite_linux_arm 64 satellite_linux_amd 64 ## Build satellite Docker image
2019-04-08 21:01:20 +01:00
${ DOCKER_BUILD } --pull= true -t storjlabs/satellite:${ TAG } ${ CUSTOMTAG } -amd64 \
-f cmd/satellite/Dockerfile .
${ DOCKER_BUILD } --pull= true -t storjlabs/satellite:${ TAG } ${ CUSTOMTAG } -arm32v6 \
--build-arg= GOARCH = arm --build-arg= DOCKER_ARCH = arm32v6 \
-f cmd/satellite/Dockerfile .
2019-08-19 10:40:16 +01:00
${ DOCKER_BUILD } --pull= true -t storjlabs/satellite:${ TAG } ${ CUSTOMTAG } -aarch64 \
--build-arg= GOARCH = arm --build-arg= DOCKER_ARCH = aarch64 \
-f cmd/satellite/Dockerfile .
2018-10-16 19:47:43 +01:00
.PHONY : storagenode -image
2019-08-19 10:40:16 +01:00
storagenode-image : storagenode_linux_arm storagenode_linux_arm 64 storagenode_linux_amd 64 ## Build storagenode Docker image
2019-04-08 21:01:20 +01:00
${ DOCKER_BUILD } --pull= true -t storjlabs/storagenode:${ TAG } ${ CUSTOMTAG } -amd64 \
-f cmd/storagenode/Dockerfile .
${ DOCKER_BUILD } --pull= true -t storjlabs/storagenode:${ TAG } ${ CUSTOMTAG } -arm32v6 \
--build-arg= GOARCH = arm --build-arg= DOCKER_ARCH = arm32v6 \
-f cmd/storagenode/Dockerfile .
2019-08-19 10:40:16 +01:00
${ DOCKER_BUILD } --pull= true -t storjlabs/storagenode:${ TAG } ${ CUSTOMTAG } -aarch64 \
--build-arg= GOARCH = arm --build-arg= DOCKER_ARCH = aarch64 \
-f cmd/storagenode/Dockerfile .
2018-10-16 19:47:43 +01:00
.PHONY : uplink -image
2019-08-19 10:40:16 +01:00
uplink-image : uplink_linux_arm uplink_linux_arm 64 uplink_linux_amd 64 ## Build uplink Docker image
2019-04-08 21:01:20 +01:00
${ DOCKER_BUILD } --pull= true -t storjlabs/uplink:${ TAG } ${ CUSTOMTAG } -amd64 \
-f cmd/uplink/Dockerfile .
${ DOCKER_BUILD } --pull= true -t storjlabs/uplink:${ TAG } ${ CUSTOMTAG } -arm32v6 \
--build-arg= GOARCH = arm --build-arg= DOCKER_ARCH = arm32v6 \
-f cmd/uplink/Dockerfile .
2019-08-19 10:40:16 +01:00
${ DOCKER_BUILD } --pull= true -t storjlabs/uplink:${ TAG } ${ CUSTOMTAG } -aarch64 \
--build-arg= GOARCH = arm --build-arg= DOCKER_ARCH = aarch64 \
-f cmd/uplink/Dockerfile .
2019-05-02 22:25:04 +01:00
.PHONY : versioncontrol -image
2019-08-19 10:40:16 +01:00
versioncontrol-image : versioncontrol_linux_arm versioncontrol_linux_arm 64 versioncontrol_linux_amd 64 ## Build versioncontrol Docker image
2019-05-02 22:25:04 +01:00
${ DOCKER_BUILD } --pull= true -t storjlabs/versioncontrol:${ TAG } ${ CUSTOMTAG } -amd64 \
-f cmd/versioncontrol/Dockerfile .
${ DOCKER_BUILD } --pull= true -t storjlabs/versioncontrol:${ TAG } ${ CUSTOMTAG } -arm32v6 \
--build-arg= GOARCH = arm --build-arg= DOCKER_ARCH = arm32v6 \
-f cmd/versioncontrol/Dockerfile .
2019-08-19 10:40:16 +01:00
${ DOCKER_BUILD } --pull= true -t storjlabs/versioncontrol:${ TAG } ${ CUSTOMTAG } -aarch64 \
--build-arg= GOARCH = arm --build-arg= DOCKER_ARCH = aarch64 \
-f cmd/versioncontrol/Dockerfile .
2018-08-27 22:06:55 +01:00
2018-08-31 16:21:44 +01:00
.PHONY : binary
binary : CUSTOMTAG = -${GOOS }-${GOARCH }
binary :
2018-09-05 21:40:47 +01:00
@if [ -z " ${ COMPONENT } " ] ; then echo "Try one of the following targets instead:" \
&& for b in binaries ${ BINARIES } ; do echo " - $$ b " ; done && exit 1; fi
2018-08-31 16:21:44 +01:00
mkdir -p release/${ TAG }
2019-06-18 18:18:10 +01:00
mkdir -p /tmp/go-cache /tmp/go-pkg
2018-10-16 19:48:17 +01:00
rm -f cmd/${ COMPONENT } /resource.syso
if [ " ${ GOARCH } " = "amd64" ] ; then sixtyfour = "-64" ; fi ; \
2019-09-29 00:53:04 +01:00
[ " ${ GOOS } " = "windows" ] && [ " ${ GOARCH } " = "amd64" ] && goversioninfo $$ sixtyfour -o cmd/${ COMPONENT } /resource.syso \
2018-10-16 19:48:17 +01:00
-original-name ${ COMPONENT } _${ GOOS } _${ GOARCH } ${ FILEEXT } \
-description " ${ COMPONENT } program for Storj " \
2020-02-05 17:12:14 +00:00
-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}' ) " \
-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}' ) " \
-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}' ) " \
-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}' ) " \
-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}' ) " \
-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}' ) " \
-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" ) " \
-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}' ) " \
2018-10-16 19:48:17 +01:00
resources/versioninfo.json || echo "goversioninfo is not installed, metadata will not be created"
2019-04-12 16:31:31 +01:00
docker run --rm -i -v " ${ PWD } " :/go/src/storj.io/storj -e GO111MODULE = on \
2018-11-26 14:11:09 +00:00
-e GOOS = ${ GOOS } -e GOARCH = ${ GOARCH } -e GOARM = 6 -e CGO_ENABLED = 1 \
2019-06-18 18:18:10 +01:00
-v /tmp/go-cache:/tmp/.cache/go-build -v /tmp/go-pkg:/go/pkg \
2019-04-12 16:31:31 +01:00
-w /go/src/storj.io/storj -e GOPROXY -u $( shell id -u) :$( shell id -g) storjlabs/golang:${ GO_VERSION } \
2019-11-02 15:38:53 +00:00
scripts/release.sh build $( EXTRA_ARGS) -o release/${ TAG } /$( COMPONENT) _${ GOOS } _${ GOARCH } ${ FILEEXT } \
2019-04-12 16:31:31 +01:00
storj.io/storj/cmd/${ COMPONENT }
2018-09-05 21:40:47 +01:00
chmod 755 release/${ TAG } /$( COMPONENT) _${ GOOS } _${ GOARCH } ${ FILEEXT }
2018-10-17 19:21:18 +01:00
[ " ${ FILEEXT } " = ".exe" ] && storj-sign release/${ TAG } /$( COMPONENT) _${ GOOS } _${ GOARCH } ${ FILEEXT } || echo "Skipping signing"
2018-08-31 16:21:44 +01:00
rm -f release/${ TAG } /${ COMPONENT } _${ GOOS } _${ GOARCH } .zip
2019-11-05 18:47:50 +00:00
.PHONY : binary -check
binary-check :
2019-11-05 20:41:02 +00:00
@if [ -f release/${ TAG } /${ COMPONENT } _${ GOOS } _${ GOARCH } ] || [ -f release/${ TAG } /${ COMPONENT } _${ GOOS } _${ GOARCH } .exe ] ; \
then \
echo " release/ ${ TAG } / ${ COMPONENT } _ ${ GOOS } _ ${ GOARCH } exists " ; \
else \
echo " Making ${ COMPONENT } " ; \
$( MAKE) binary; \
fi
2019-11-05 18:47:50 +00:00
.PHONY : certificates_ %
certificates_% :
2019-11-11 18:58:08 +00:00
$( MAKE) binary-check COMPONENT = certificates GOARCH = $( word 3, $( subst _, ,$@ ) ) GOOS = $( word 2, $( subst _, ,$@ ) )
2018-11-07 18:19:09 +00:00
.PHONY : gateway_ %
gateway_% :
2019-04-08 21:01:20 +01:00
$( MAKE) binary-check COMPONENT = gateway GOARCH = $( word 3, $( subst _, ,$@ ) ) GOOS = $( word 2, $( subst _, ,$@ ) )
2019-11-05 18:47:50 +00:00
.PHONY : identity_ %
identity_% :
2019-11-11 18:58:08 +00:00
$( MAKE) binary-check COMPONENT = identity GOARCH = $( word 3, $( subst _, ,$@ ) ) GOOS = $( word 2, $( subst _, ,$@ ) )
2019-11-05 18:47:50 +00:00
.PHONY : inspector_ %
inspector_% :
2019-11-11 18:58:08 +00:00
$( MAKE) binary-check COMPONENT = inspector GOARCH = $( word 3, $( subst _, ,$@ ) ) GOOS = $( word 2, $( subst _, ,$@ ) )
2019-11-05 18:47:50 +00:00
.PHONY : linksharing_ %
linksharing_% :
$( MAKE) binary-check COMPONENT = linksharing GOARCH = $( word 3, $( subst _, ,$@ ) ) GOOS = $( word 2, $( subst _, ,$@ ) )
2018-09-05 21:40:47 +01:00
.PHONY : satellite_ %
satellite_% :
2019-11-11 18:58:08 +00:00
$( MAKE) binary-check COMPONENT = satellite GOARCH = $( word 3, $( subst _, ,$@ ) ) GOOS = $( word 2, $( subst _, ,$@ ) )
2018-09-05 21:40:47 +01:00
.PHONY : storagenode_ %
2019-10-08 09:52:19 +01:00
storagenode_% : storagenode -console
2019-11-11 18:58:08 +00:00
$( MAKE) binary-check COMPONENT = storagenode GOARCH = $( word 3, $( subst _, ,$@ ) ) GOOS = $( word 2, $( subst _, ,$@ ) )
2019-11-05 18:47:50 +00:00
.PHONY : storagenode -updater_ %
storagenode-updater_% :
2019-11-11 18:58:08 +00:00
$( MAKE) binary-check COMPONENT = storagenode-updater GOARCH = $( word 3, $( subst _, ,$@ ) ) GOOS = $( word 2, $( subst _, ,$@ ) )
2018-09-05 21:40:47 +01:00
.PHONY : uplink_ %
uplink_% :
2019-04-08 21:01:20 +01:00
$( MAKE) binary-check COMPONENT = uplink GOARCH = $( word 3, $( subst _, ,$@ ) ) GOOS = $( word 2, $( subst _, ,$@ ) )
2019-05-02 22:25:04 +01:00
.PHONY : versioncontrol_ %
versioncontrol_% :
2019-11-11 18:58:08 +00:00
$( MAKE) binary-check COMPONENT = versioncontrol GOARCH = $( word 3, $( subst _, ,$@ ) ) GOOS = $( word 2, $( subst _, ,$@ ) )
2018-09-05 21:40:47 +01:00
2019-10-04 21:48:41 +01:00
COMPONENTLIST := certificates gateway identity inspector linksharing satellite storagenode storagenode-updater uplink versioncontrol
2019-09-29 00:53:04 +01:00
OSARCHLIST := darwin_amd64 linux_amd64 linux_arm linux_arm64 windows_amd64 freebsd_amd64
2018-09-05 21:40:47 +01:00
BINARIES := $( foreach C,$( COMPONENTLIST) ,$( foreach O,$( OSARCHLIST) ,$C_ $O ) )
2018-08-31 16:21:44 +01:00
.PHONY : binaries
2019-10-04 21:48:41 +01:00
binaries : ${BINARIES } ## Build certificates, gateway, identity, inspector, linksharing, satellite, storagenode, uplink, and versioncontrol binaries (jenkins)
2018-10-16 19:47:43 +01:00
2019-10-08 12:51:22 +01:00
.PHONY : sign -windows -installer
2019-11-04 18:24:36 +00:00
sign-windows-installer :
2019-10-08 12:51:22 +01:00
storj-sign release/${ TAG } /storagenode_windows_amd64.msi
2019-06-15 12:23:12 +01:00
.PHONY : libuplink
libuplink :
2019-08-13 13:24:31 +01:00
go build -ldflags= "-s -w" -buildmode c-shared -o uplink.so storj.io/storj/lib/uplinkc
2019-06-15 12:23:12 +01:00
cp lib/uplinkc/uplink_definitions.h uplink_definitions.h
2019-10-06 23:34:12 +01:00
.PHONY : libuplink -gomobile
libuplink-gomobile :
@./lib/uplink-gomobile/build.sh
2019-10-04 09:56:42 +01:00
2018-10-16 19:47:43 +01:00
##@ Deploy
.PHONY : push -images
push-images : ## Push Docker images to Docker Hub (jenkins)
2019-04-08 21:01:20 +01:00
# images have to be pushed before a manifest can be created
# satellite
2019-10-04 21:48:41 +01:00
for c in gateway satellite storagenode uplink versioncontrol ; do \
2019-04-15 20:04:02 +01:00
docker push storjlabs/$$ c:${ TAG } ${ CUSTOMTAG } -amd64 \
&& docker push storjlabs/$$ c:${ TAG } ${ CUSTOMTAG } -arm32v6 \
2019-08-28 13:18:56 +01:00
&& docker push storjlabs/$$ c:${ TAG } ${ CUSTOMTAG } -aarch64 \
2019-04-15 18:49:08 +01:00
&& for t in ${ TAG } ${ CUSTOMTAG } ${ LATEST_TAG } ; do \
2019-08-28 13:18:56 +01:00
docker manifest create storjlabs/$$ c:$$ t \
storjlabs/$$ c:${ TAG } ${ CUSTOMTAG } -amd64 \
storjlabs/$$ c:${ TAG } ${ CUSTOMTAG } -arm32v6 \
storjlabs/$$ c:${ TAG } ${ CUSTOMTAG } -aarch64 \
2019-04-15 19:30:36 +01:00
&& docker manifest annotate storjlabs/$$ c:$$ t storjlabs/$$ c:${ TAG } ${ CUSTOMTAG } -amd64 --os linux --arch amd64 \
2019-08-28 13:18:56 +01:00
&& docker manifest annotate storjlabs/$$ c:$$ t storjlabs/$$ c:${ TAG } ${ CUSTOMTAG } -arm32v6 --os linux --arch arm --variant v6 \
&& docker manifest annotate storjlabs/$$ c:$$ t storjlabs/$$ c:${ TAG } ${ CUSTOMTAG } -aarch64 --os linux --arch arm64 \
2019-04-15 18:49:08 +01:00
&& docker manifest push --purge storjlabs/$$ c:$$ t \
; done \
; done
2018-08-31 16:21:44 +01:00
.PHONY : binaries -upload
2018-10-16 19:47:43 +01:00
binaries-upload : ## Upload binaries to Google Storage (jenkins)
2020-01-27 19:26:57 +00:00
cd " release/ ${ TAG } " ; for f in *; do \
c = " $$ {f%%_*} " \
&& if [ " $$ {f##*.} " != " $$ {f} " ] ; then \
ln -s " $$ {f} " " $$ {f%%_*}. $$ {f##*.} " \
&& zip " $$ {f}.zip " " $$ {f%%_*}. $$ {f##*.} " \
&& rm " $$ {f%%_*}. $$ {f##*.} " \
; else \
ln -sf " $$ {f} " " $$ {f%%_*} " \
&& zip " $$ {f}.zip " " $$ {f%%_*} " \
&& rm " $$ {f%%_*} " \
; fi \
; done
2019-04-08 21:01:20 +01:00
cd " release/ ${ TAG } " ; gsutil -m cp -r *.zip " gs://storj-v3-alpha-builds/ ${ TAG } / "
2018-08-31 16:21:44 +01:00
2018-10-16 19:47:43 +01:00
##@ Clean
.PHONY : clean
clean : test -docker -clean binaries -clean clean -images ## Clean docker test environment, local release binaries, and local Docker images
2018-08-31 16:21:44 +01:00
.PHONY : binaries -clean
2018-10-16 19:47:43 +01:00
binaries-clean : ## Remove all local release binaries (jenkins)
2018-08-31 16:21:44 +01:00
rm -rf release
2018-10-16 19:47:43 +01:00
.PHONY : clean -images
clean-images :
2019-03-07 15:22:18 +00:00
-docker rmi storjlabs/gateway:${ TAG } ${ CUSTOMTAG }
-docker rmi storjlabs/satellite:${ TAG } ${ CUSTOMTAG }
-docker rmi storjlabs/storagenode:${ TAG } ${ CUSTOMTAG }
-docker rmi storjlabs/uplink:${ TAG } ${ CUSTOMTAG }
2019-05-21 12:57:20 +01:00
-docker rmi storjlabs/versioncontrol:${ TAG } ${ CUSTOMTAG }
2018-10-16 19:47:43 +01:00
.PHONY : test -docker -clean
test-docker-clean : ## Clean up Docker environment used in test-docker target
-docker-compose down --rmi all
2019-05-09 14:25:44 +01:00
##@ Tooling
2019-09-10 14:24:16 +01:00
.PHONY : diagrams
diagrams :
2020-02-01 19:12:27 +00:00
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
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
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
2019-09-10 14:24:16 +01:00
archview -skip-class "Peer,Master Database" -trim-prefix storj.io/storj/satellite/ ./satellite/... | dot -T svg -o satellite.svg
archview -skip-class "Peer,Master Database" -trim-prefix storj.io/storj/storagenode/ ./storagenode/... | dot -T svg -o storage-node.svg
.PHONY : diagrams -graphml
diagrams-graphml :
2020-02-01 19:12:27 +00:00
archview -root "storj.io/storj/satellite.Core" -skip-class "Peer,Master Database" -trim-prefix storj.io/storj/satellite/ -out satellite-core.graphml ./satellite/...
archview -root "storj.io/storj/satellite.API" -skip-class "Peer,Master Database" -trim-prefix storj.io/storj/satellite/ -out satellite-api.graphml ./satellite/...
archview -root "storj.io/storj/satellite.Repairer" -skip-class "Peer,Master Database" -trim-prefix storj.io/storj/satellite/ -out satellite-repair.graphml ./satellite/...
2019-09-10 14:24:16 +01:00
archview -skip-class "Peer,Master Database" -trim-prefix storj.io/storj/satellite/ -out satellite.graphml ./satellite/...
archview -skip-class "Peer,Master Database" -trim-prefix storj.io/storj/storagenode/ -out storage-node.graphml ./storagenode/...
2019-06-04 18:12:27 +01:00
.PHONY : update -satellite -config -lock
update-satellite-config-lock : ## Update the satellite config lock file
2019-05-09 14:25:44 +01:00
@docker run -ti --rm \
-v ${ GOPATH } /pkg/mod:/go/pkg/mod \
2019-10-22 10:44:13 +01:00
-v ${ CURDIR } :/storj \
2019-05-09 14:25:44 +01:00
-v $( shell go env GOCACHE) :/go-cache \
-e "GOCACHE=/go-cache" \
-u root:root \
golang:${ GO_VERSION } \
2019-06-04 18:12:27 +01:00
/bin/bash -c "cd /storj/scripts; ./update-satellite-config-lock.sh"