Bläddra i källkod

include an example cmd

teizz 3 år sedan
förälder
incheckning
c3e6bf0987
7 ändrade filer med 79 tillägg och 9 borttagningar
  1. 0 9
      build.sh
  2. 16 0
      cmd/Dockerfile
  3. 1 0
      cmd/VERSION
  4. 3 0
      cmd/build.sh
  5. 7 0
      cmd/go.mod
  6. 2 0
      cmd/go.sum
  7. 50 0
      cmd/main.go

+ 0 - 9
build.sh

@@ -1,9 +0,0 @@
-#!/usr/bin/env bash
-
-export CGO_ENABLED=0
-export GO111MODULE=off
-
-echo go build -trimpath \
-         -ldflags="all=-s -w -buildid= -X main.version=$(cat VERSION) -X main.buildtime=$(date +%FT%T%z)" \
-         -o pathway \
-         src/*.go

+ 16 - 0
cmd/Dockerfile

@@ -0,0 +1,16 @@
+FROM golang:alpine AS builder
+RUN apk --no-cache --no-progress add upx
+WORKDIR /go/build
+
+COPY . .
+RUN echo Building && \
+    go get -u && \
+    env CGO_ENABLED=0 go build -trimpath -ldflags="all=-s -w -buildid= -X main.version=v$(cat VERSION) -X main.buildtime=$(date +%FT%T%z)" -o pathway && \
+    echo Compressing && \
+    upx pathway > /dev/null
+
+FROM scratch
+COPY --from=builder /go/build/pathway /pathway
+
+EXPOSE 8080
+CMD ["/pathway"]

+ 1 - 0
cmd/VERSION

@@ -0,0 +1 @@
+3.0

+ 3 - 0
cmd/build.sh

@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+export CGO_ENABLED=0
+go build -trimpath -ldflags="all=-s -w -buildid= -X main.version=v$(cat VERSION) -X main.buildtime=$(date +%FT%T%z)" -o pathway

+ 7 - 0
cmd/go.mod

@@ -0,0 +1,7 @@
+module main
+
+go 1.16
+
+require (
+    git.nxdomain.nl/mattijs/pathway v0.1.2
+)

+ 2 - 0
cmd/go.sum

@@ -0,0 +1,2 @@
+git.nxdomain.nl/mattijs/pathway v0.1.2 h1:EXt0JaDlS4gPvQgGcyslYaLgRC2/AZPC+/8VDba3+bY=
+git.nxdomain.nl/mattijs/pathway v0.1.2/go.mod h1:3FllmtSFlVdPPdXmtL+N7V0qdaTtYB/zLyM8uQr+50o=

+ 50 - 0
cmd/main.go

@@ -0,0 +1,50 @@
+package main
+
+import (
+	"log"
+	"net/http"
+
+	"git.nxdomain.nl/mattijs/pathway"
+)
+
+var (
+	// variables to set during build-time
+	debugging = ""
+	version   = "0.0-undefined"
+	buildtime = "0000-00-00T00:00:00+0000"
+)
+
+func okHandler(w http.ResponseWriter, r *http.Request) {
+	w.WriteHeader(http.StatusOK)
+	w.Write([]byte("ok"))
+}
+
+func emptyHandler(w http.ResponseWriter, r *http.Request) {
+	w.WriteHeader(http.StatusOK)
+}
+
+func main() {
+	info("pathway version:%s buildtime:%s", version, buildtime)
+
+	paths := pathway.New()
+
+	http.HandleFunc("/health", okHandler)
+	http.HandleFunc("/favicon.ico", emptyHandler)
+	http.HandleFunc("/robots.txt", emptyHandler)
+	http.HandleFunc("/", paths.ServeHTTP)
+
+	err := http.ListenAndServe(":8080", nil)
+	if err != nil {
+		info("%s", err.Error())
+	}
+}
+
+func info(msg string, args ...interface{}) {
+	log.Printf("INFO | "+msg, args...)
+}
+
+func debug(msg string, args ...interface{}) {
+	if len(debugging) > 0 {
+		log.Printf("DEBUG | "+msg, args...)
+	}
+}