3
0

Inject version & build-time info and show it on startup & on /version endpoint

This commit is contained in:
Denis Arh 2018-10-13 19:05:54 +02:00
parent aebe0348b7
commit 602f77c2f1
10 changed files with 46 additions and 22 deletions

View File

@ -1,2 +1,4 @@
.idea
build
codegen
codegen
var

View File

@ -1,5 +1,4 @@
## builder image
FROM golang:1.10-alpine AS builder
WORKDIR /go/src/github.com/crusttech/crust
@ -8,18 +7,18 @@ ENV CGO_ENABLED=0
COPY . .
RUN mkdir /build; go build -o /build/auth cmd/auth/*.go
RUN apk update && apk upgrade && apk add --no-cache git
RUN mkdir /build; \
go build \
-ldflags "-X github.com/crusttech/crust/internal/version.BuildTime="`date +%FT%T%z`" -X github.com/crusttech/crust/internal/version.Version="`git describe --always --tags` \
-o /build/auth cmd/auth/*.go
## target image
FROM alpine:3.7
ENV PATH="/crust:{$PATH}"
WORKDIR /crust
# @todo copy crm/types, migrations
COPY --from=builder /build/* /crust/
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt

View File

@ -1,5 +1,4 @@
## builder image
FROM golang:1.10-alpine AS builder
WORKDIR /go/src/github.com/crusttech/crust
@ -8,18 +7,18 @@ ENV CGO_ENABLED=0
COPY . .
RUN mkdir /build; go build -o /build/crm cmd/crm/*.go
RUN apk update && apk upgrade && apk add --no-cache git
RUN mkdir /build; \
go build \
-ldflags "-X github.com/crusttech/crust/internal/version.BuildTime="`date +%FT%T%z`" -X github.com/crusttech/crust/internal/version.Version="`git describe --always --tags` \
-o /build/crm cmd/crm/*.go
## target image
FROM alpine:3.7
ENV PATH="/crust:{$PATH}"
WORKDIR /crust
# @todo copy crm/types, migrations
COPY --from=builder /build/* /crust/
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt

View File

@ -1,5 +1,4 @@
## builder image
FROM golang:1.10-alpine AS builder
WORKDIR /go/src/github.com/crusttech/crust
@ -8,18 +7,18 @@ ENV CGO_ENABLED=0
COPY . .
RUN mkdir /build; go build -o /build/sam cmd/sam/*.go
RUN apk update && apk upgrade && apk add --no-cache git
RUN mkdir /build; \
go build \
-ldflags "-X github.com/crusttech/crust/internal/version.BuildTime="`date +%FT%T%z`" -X github.com/crusttech/crust/internal/version.Version="`git describe --always --tags` \
-o /build/sam cmd/sam/*.go
## target image
FROM alpine:3.7
ENV PATH="/crust:{$PATH}"
WORKDIR /crust
# @todo copy crm/types, migrations
COPY --from=builder /build/* /crust/
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt

View File

@ -10,6 +10,7 @@ import (
"github.com/crusttech/crust/internal/config"
"github.com/crusttech/crust/internal/metrics"
"github.com/crusttech/crust/internal/version"
)
func mountRoutes(r chi.Router, opts *config.HTTP, mounts ...func(r chi.Router)) {
@ -30,6 +31,7 @@ func mountSystemRoutes(r chi.Router, opts *config.HTTP) {
r.Handle("/metrics", metrics.Handler())
}
r.Mount("/debug", middleware.Profiler())
r.Get("/version", version.HttpHandler)
}
func printRoutes(r chi.Router, opts *config.HTTP) {

View File

@ -8,11 +8,14 @@ import (
"github.com/crusttech/crust/internal/auth"
"github.com/crusttech/crust/internal/rbac"
"github.com/crusttech/crust/internal/version"
)
func main() {
config := flags("sam", service.Flags, auth.Flags, rbac.Flags)
log.Printf("Starting sam, version: %v, built on: %v", version.Version, version.BuildTime)
// log to stdout not stderr
log.SetOutput(os.Stdout)
log.SetFlags(log.LstdFlags | log.Lshortfile)

View File

@ -10,6 +10,7 @@ import (
"github.com/crusttech/crust/internal/config"
"github.com/crusttech/crust/internal/metrics"
"github.com/crusttech/crust/internal/version"
)
func mountRoutes(r chi.Router, opts *config.HTTP, mounts ...func(r chi.Router)) {
@ -30,6 +31,7 @@ func mountSystemRoutes(r chi.Router, opts *config.HTTP) {
r.Handle("/metrics", metrics.Handler())
}
r.Mount("/debug", middleware.Profiler())
r.Get("/version", version.HttpHandler)
}
func printRoutes(r chi.Router, opts *config.HTTP) {

View File

@ -0,0 +1,19 @@
package version
import (
"net/http"
"github.com/titpetric/factory/resputil"
)
var (
BuildTime = "undefined"
Version = "undefined"
)
func HttpHandler(w http.ResponseWriter, r *http.Request) {
resputil.JSON(w, struct {
BuildTime string `json:"buildTime"`
Version string `json:"version"`
}{BuildTime, Version})
}

View File

@ -10,6 +10,7 @@ import (
"github.com/crusttech/crust/internal/config"
"github.com/crusttech/crust/internal/metrics"
"github.com/crusttech/crust/internal/version"
)
func mountRoutes(r chi.Router, opts *config.HTTP, mounts ...func(r chi.Router)) {
@ -32,6 +33,7 @@ func mountSystemRoutes(r chi.Router, opts *config.HTTP) {
r.Handle("/metrics", metrics.Handler())
}
r.Mount("/debug", middleware.Profiler())
r.Get("/version", version.HttpHandler)
}
func printRoutes(r chi.Router, opts *config.HTTP) {

View File

@ -4,7 +4,6 @@ import (
"context"
"fmt"
"github.com/davecgh/go-spew/spew"
"github.com/pkg/errors"
"github.com/titpetric/factory"
@ -121,8 +120,6 @@ func (svc *channel) preloadExtras(cc types.ChannelSet) (err error) {
return
}
spew.Dump(cc.FindById(55955117148471560))
return
}