Skip to content

Commit

Permalink
Publish binaries to GitHub Releases (#766)
Browse files Browse the repository at this point in the history
Signed-off-by: Jon Carl <jon.carl.42@gmail.com>
  • Loading branch information
Jon Carl authored and yurishkuro committed Apr 21, 2018
1 parent 8375fe5 commit 222db21
Show file tree
Hide file tree
Showing 3 changed files with 117 additions and 12 deletions.
18 changes: 18 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ matrix:
- go: 1.9
env:
- DOCKER=true
- DEPLOY=true
- go: 1.9
env:
- ES_INTEGRATION_TEST=true
Expand Down Expand Up @@ -54,9 +55,26 @@ script:
- if [ "$DOCKER" == true ]; then bash ./scripts/travis/build-docker-images.sh ; else echo 'skipping docker images'; fi
- if [ "$ES_INTEGRATION_TEST" == true ]; then bash ./scripts/travis/es-integration-test.sh ; else echo 'skipping elastic search integration test'; fi
- if [ "$HOTROD" == true ]; then bash ./scripts/travis/hotrod-integration-test.sh ; else echo 'skipping hotrod example'; fi
- if [ "$DEPLOY" == true ]; then make build-binaries-linux build-binaries-windows build-binaries-darwin ; else echo 'skipping linux'; fi

after_success:
- if [ "$COVERAGE" == true ]; then travis_retry goveralls -coverprofile=cover.out -service=travis-ci || true ; else echo 'skipping coverage'; fi

after_failure:
- if [ "$CROSSDOCK" == true ]; then make crossdock-logs ; else echo 'skipping crossdock'; fi

before_deploy:
- bash ./scripts/travis/package-deploy.sh

deploy:
provider: releases
api_key:
secure: YOUR_API_KEY_ENCRYPTED
file_glob: true
file:
- deploy/*.tar.gz
skip_cleanup: true
on:
tags: true
repo: jaegertracing/jaeger
branch: master
44 changes: 32 additions & 12 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -143,30 +143,46 @@ build_ui:
rm -rf jaeger-ui-build && mkdir jaeger-ui-build
cp -r jaeger-ui/build jaeger-ui-build/

.PHONY: build-all-in-one
build-all-in-one: build_ui
CGO_ENABLED=0 installsuffix=cgo go build -o ./cmd/standalone/standalone-$(GOOS) $(BUILD_INFO) ./cmd/standalone/main.go

.PHONY: build-all-in-one-linux
build-all-in-one-linux: build_ui
CGO_ENABLED=0 GOOS=linux installsuffix=cgo go build -o ./cmd/standalone/standalone-linux $(BUILD_INFO) ./cmd/standalone/main.go
build-all-in-one-linux:
GOOS=linux $(MAKE) build-all-in-one

.PHONY: build-agent-linux
build-agent-linux:
CGO_ENABLED=0 GOOS=linux installsuffix=cgo go build -o ./cmd/agent/agent-linux $(BUILD_INFO) ./cmd/agent/main.go
.PHONY: build-agent
build-agent:
CGO_ENABLED=0 installsuffix=cgo go build -o ./cmd/agent/agent-$(GOOS) $(BUILD_INFO) ./cmd/agent/main.go

.PHONY: build-query-linux
build-query-linux:
CGO_ENABLED=0 GOOS=linux installsuffix=cgo go build -o ./cmd/query/query-linux $(BUILD_INFO) ./cmd/query/main.go
.PHONY: build-query
build-query:
CGO_ENABLED=0 installsuffix=cgo go build -o ./cmd/query/query-$(GOOS) $(BUILD_INFO) ./cmd/query/main.go

.PHONY: build-collector-linux
build-collector-linux:
CGO_ENABLED=0 GOOS=linux installsuffix=cgo go build -o ./cmd/collector/collector-linux $(BUILD_INFO) ./cmd/collector/main.go
.PHONY: build-collector
build-collector:
CGO_ENABLED=0 installsuffix=cgo go build -o ./cmd/collector/collector-$(GOOS) $(BUILD_INFO) ./cmd/collector/main.go

.PHONY: docker-no-ui
docker-no-ui: build-agent-linux build-collector-linux build-query-linux build-crossdock-linux
docker-no-ui: build-binaries-linux build-crossdock-linux
mkdir -p jaeger-ui-build/build/
make docker-images-only

.PHONY: docker
docker: build_ui docker-no-ui

.PHONY: build-binaries-linux
build-binaries-linux:
GOOS=linux $(MAKE) build-agent build-collector build-query build-all-in-one

.PHONY: build-binaries-windows
build-binaries-windows:
GOOS=windows $(MAKE) build-agent build-collector build-query build-all-in-one

.PHONY: build-binaries-darwin
build-binaries-darwin:
GOOS=darwin $(MAKE) build-agent build-collector build-query build-all-in-one

.PHONY: docker-images-only
docker-images-only:
cp -r jaeger-ui-build/build/ cmd/query/jaeger-ui-build
Expand Down Expand Up @@ -262,3 +278,7 @@ install-mockery:
.PHONY: generate-mocks
generate-mocks: install-mockery
$(MOCKERY) -all -dir ./pkg/es/ -output ./pkg/es/mocks && rm pkg/es/mocks/ClientBuilder.go

.PHONY: echo-version
echo-version:
@echo $(GIT_CLOSEST_TAG)
67 changes: 67 additions & 0 deletions scripts/travis/package-deploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
#!/bin/bash

# stage-file copies the file $1 with the specified path $2
# if no file exists it will silently continue
function stage-file {
if [ -f $1 ]; then
echo "Copying $1 to $2"
cp $1 $2
else
echo "$1 does not exist. Continuing on."
fi
}

# stage-platform-files stages the different the platform ($1) into the package
# staging dir ($2). If you pass in a file extension ($3) it will be used when
# copying on the source
function stage-platform-files {
local PLATFORM=$1
local PACKAGE_STAGING_DIR=$2
local FILE_EXTENSION=$3

stage-file ./cmd/standalone/standalone-$PLATFORM $PACKAGE_STAGING_DIR/jaeger-standalone$FILE_EXTENSION
stage-file ./cmd/agent/agent-$PLATFORM $PACKAGE_STAGING_DIR/jaeger-agent$FILE_EXTENSION
stage-file ./cmd/query/query-$PLATFORM $PACKAGE_STAGING_DIR/jaeger-query$FILE_EXTENSION
stage-file ./cmd/collector/collector-$PLATFORM $PACKAGE_STAGING_DIR/jaeger-collector$FILE_EXTENSION
}

# package pulls built files for the platform ($1). If you pass in a file
# extension ($2) it will be used on the binaries
function package {
local PLATFORM=$1
local FILE_EXTENSION=$2

local PACKAGE_STAGING_DIR=$DEPLOY_STAGING_DIR/$PLATFORM
mkdir $PACKAGE_STAGING_DIR

stage-platform-files $PLATFORM $PACKAGE_STAGING_DIR $FILE_EXTENSION

local PACKAGE_FILES=$(ls -A $PACKAGE_STAGING_DIR/*) 2>/dev/null

if [ "$PACKAGE_FILES" ]; then
local ARCHIVE_NAME="jaeger-$VERSION-$PLATFORM-amd64.tar.gz"
echo "Packaging the following files into $ARCHIVE_NAME:"
echo $PACKAGE_FILES
tar -czvf ./deploy/$ARCHIVE_NAME $PACKAGE_FILES
else
echo "Will not package or deploy $PLATFORM files as there are no files to package!"
fi
}

# script start

DEPLOY_STAGING_DIR=./deploy-staging
VERSION="$(make echo-version | awk 'match($0, /([0-9]*\.[0-9]*\.[0-9]*)$/) { print substr($0, RSTART, RLENGTH) }')"
echo "Working on version: $VERSION"

# make needed directories
mkdir deploy
mkdir $DEPLOY_STAGING_DIR

if [ "$DEPLOY" = true ]; then
package linux
package darwin
package windows .exe
else
echo "Skipping the packaging of binaries as \$DEPLOY was not true."
fi

0 comments on commit 222db21

Please sign in to comment.