Skip to content

Commit

Permalink
Publish release v2.108.3
Browse files Browse the repository at this point in the history
  • Loading branch information
Uri-Margalit-bloXroute committed Jan 24, 2022
1 parent 3bf81f9 commit a2db18e
Show file tree
Hide file tree
Showing 198 changed files with 24,805 additions and 1 deletion.
73 changes: 73 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
ARG GO_VERSION=alpine
ARG BASE=golang:alpine

FROM ${BASE} as builder

RUN apk update \
&& apk add --no-cache \
linux-headers \
gcc \
libtool \
openssl-dev \
libffi \
tini \
git \
'su-exec>=0.2' \
&& apk add --no-cache --virtual .build_deps build-base libffi-dev

# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
RUN addgroup -g 502 -S bloxroute \
&& adduser -u 502 -S -G bloxroute bloxroute \
&& mkdir -p /app/bloxroute/logs \
&& chown -R bloxroute:bloxroute /app/bloxroute

# Move to working directory
WORKDIR /app/bloxroute

# Download dependency using go mod
COPY go.mod .
COPY go.sum .
RUN go mod download
COPY --chown=bloxroute:bloxroute Makefile .
RUN make third_party_utils

COPY --chown=bloxroute:bloxroute . .
RUN make gateway
RUN chown bloxroute:bloxroute ./bin/gateway
RUN chown bloxroute:bloxroute ./bin/bxcli

FROM golang:${GO_VERSION}

RUN apk update \
&& apk add --no-cache \
linux-headers \
gcc \
libtool \
openssl-dev \
libffi \
tini \
git \
'su-exec>=0.2' \
&& apk add --no-cache --virtual .build_deps build-base libffi-dev

# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
RUN addgroup -g 502 -S bloxroute \
&& adduser -u 502 -S -G bloxroute bloxroute \
&& mkdir -p /app/bloxroute/logs \
&& chown -R bloxroute:bloxroute /app/bloxroute

# Move to working directory
WORKDIR /app/bloxroute
RUN chmod +s /bin/ping
RUN chmod +s /bin/busybox

COPY --from=builder /app/bloxroute/bin/bxcli /app/bloxroute/bin/bxcli
COPY --from=builder /app/bloxroute/bin/gateway /app/bloxroute/bin/gateway

COPY docker-entrypoint.sh /usr/local/bin/

ENV PATH="/app/bloxroute/bin:${PATH}"

EXPOSE 1801 5001

ENTRYPOINT ["/sbin/tini", "--", "/bin/sh", "/usr/local/bin/docker-entrypoint.sh"]
109 changes: 109 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
MODULE = $(shell env GO111MODULE=on $(GO) list -m)
DATE ?= $(shell date +%FT%T%z)
VERSION ?= $(shell git describe --tags --always --dirty --match=v2* 2> /dev/null || \
cat $(CURDIR)/.version 2> /dev/null || echo v2.1.1.2)
PKGS = $(or $(PKG),$(shell env GO111MODULE=on $(GO) list ./...))
TESTPKGS = $(shell env GO111MODULE=on $(GO) list -f \
'{{ if or .TestGoFiles .XTestGoFiles }}{{ .ImportPath }}{{ end }}' \
$(PKGS))
BIN = $(CURDIR)/bin

GO = go
TIMEOUT = 15
V = 0
Q = $(if $(filter 1,$V),,@)
M = $(shell printf "\033[34;1m▶\033[0m")

export GO111MODULE=on

.PHONY: all
all: gateway
gateway: third_party_utils ; $(info $(M) building gateway executable) @ ## Build program binary
$Q $(GO) build \
-tags release \
-ldflags '-X $(MODULE)/version.BuildVersion=$(VERSION) -X $(MODULE)/version.BuildDate=$(DATE)' \
-o $(BIN) ./cmd/...

# Tools
third_party_utils: $(BIN)/golint

$(BIN):
@mkdir -p $@
$(BIN)/%: | $(BIN) ; $(info $(M) building $(PACKAGE))
$Q tmp=$$(mktemp -d); \
env GO111MODULE=off GOPATH=$$tmp GOBIN=$(BIN) $(GO) get $(PACKAGE) \
|| ret=$$?; \
rm -rf $$tmp ; exit $$ret

GOLINT = $(BIN)/golint
$(BIN)/golint: PACKAGE=golang.org/x/lint/golint

GOCOV = $(BIN)/gocov
$(BIN)/gocov: PACKAGE=github.com/axw/gocov/...

GOCOVXML = $(BIN)/gocov-xml
$(BIN)/gocov-xml: PACKAGE=github.com/AlekSi/gocov-xml

GO2XUNIT = $(BIN)/go2xunit
$(BIN)/go2xunit: PACKAGE=github.com/tebeka/go2xunit

# Tests

TEST_TARGETS := test-default test-bench test-short test-verbose test-race test-integration
.PHONY: $(TEST_TARGETS) test-xml check test tests
test-bench: ARGS=-run=__absolutelynothing__ -bench=. ## Run benchmarks
test-short: ARGS=-short ## Run only short tests
test-verbose: ARGS=-v ## Run tests in verbose mode with coverage reporting
test-race: ARGS=-race ## Run tests with race detector
test-integration: ARGS=-tags="integration" ./...
$(TEST_TARGETS): NAME=$(MAKECMDGOALS:test-%=%)
$(TEST_TARGETS): test
check test tests: fmt lint ; $(info $(M) running $(NAME:%=% )tests) @ ## Run tests
$Q $(GO) test -timeout $(TIMEOUT)s $(ARGS) $(TESTPKGS)

test-xml: fmt lint | $(GO2XUNIT) ; $(info $(M) running xUnit tests) @ ## Run tests with xUnit output
$Q mkdir -p test
$Q 2>&1 $(GO) test -timeout $(TIMEOUT)s -v $(TESTPKGS) | tee test/tests.output
$(GO2XUNIT) -fail -input test/tests.output -output test/tests.xml

COVERAGE_MODE = atomic
COVERAGE_PROFILE = $(COVERAGE_DIR)/profile.out
COVERAGE_XML = $(COVERAGE_DIR)/coverage.xml
COVERAGE_HTML = $(COVERAGE_DIR)/index.html
.PHONY: test-coverage test-coverage-tools
test-coverage-tools: | $(GOCOV) $(GOCOVXML)
test-coverage: COVERAGE_DIR := $(CURDIR)/test/coverage.$(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
test-coverage: fmt lint test-coverage-tools ; $(info $(M) running coverage tests) @ ## Run coverage tests
$Q mkdir -p $(COVERAGE_DIR)
$Q $(GO) test \
-coverpkg=$$($(GO) list -f '{{ join .Deps "\n" }}' $(TESTPKGS) | \
grep '^$(MODULE)/' | \
tr '\n' ',' | sed 's/,$$//') \
-covermode=$(COVERAGE_MODE) \
-coverprofile="$(COVERAGE_PROFILE)" $(TESTPKGS)
$Q $(GO) tool cover -html=$(COVERAGE_PROFILE) -o $(COVERAGE_HTML)
$Q $(GOCOV) convert $(COVERAGE_PROFILE) | $(GOCOVXML) > $(COVERAGE_XML)

.PHONY: lint
lint: | $(GOLINT) ; $(info $(M) running golint) @ ## Run golint
$Q $(GOLINT) -set_exit_status $(PKGS)

.PHONY: fmt
fmt: ; $(info $(M) running gofmt) @ ## Run gofmt on all source files
$Q $(GO) fmt $(PKGS)

# Misc

.PHONY: clean
clean: ; $(info $(M) cleaning) @ ## Cleanup everything
@rm -rf $(BIN)
@rm -rf test/tests.* test/coverage.*

.PHONY: help
help:
@grep -hE '^[ a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-17s\033[0m %s\n", $$1, $$2}'

.PHONY: version
version:
@echo $(VERSION)
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
# gateway
# gateway
Binary file added bin/bxcli
Binary file not shown.
Binary file added bin/gateway
Binary file not shown.
Binary file added bin/golint
Binary file not shown.
Loading

0 comments on commit a2db18e

Please sign in to comment.