From 7fef5964dadc5b38ece16b004900e1f2610fee30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Jochum?= Date: Sat, 10 Sep 2022 03:15:24 +0200 Subject: [PATCH] Rename ServerConfig->RouterConfig, smaller build fixes --- .gitignore | 6 +++--- README.md | 12 +++++++----- Taskfile.yml | 13 +++++-------- cmd/microrouterd/main.go | 6 +++--- docker/builder/Dockerfile | 8 +++++--- docker/builder/scripts/protoc_gen.sh | 2 ++ docker/builder/scripts/upgrade_deps.sh | 10 ++++++++++ docker/{go-micro-router => router}/Dockerfile | 0 internal/config/config.go | 8 ++++---- internal/config/load.go | 2 +- internal/handler/handler.go | 2 +- 11 files changed, 41 insertions(+), 28 deletions(-) create mode 100755 docker/builder/scripts/protoc_gen.sh create mode 100755 docker/builder/scripts/upgrade_deps.sh rename docker/{go-micro-router => router}/Dockerfile (100%) diff --git a/.gitignore b/.gitignore index e702ecf..ec27e15 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ -.task/ +.DS_STORE -!.gitkeep +.task/ -.env \ No newline at end of file +!.gitkeep \ No newline at end of file diff --git a/README.md b/README.md index 1bcb346..7194360 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ It looks for services that host "proto/routerclientpb/routerclientpb.RouterClien Have a look at [internalService](https://github.com/go-micro/router/blob/master/cmd/microrouterd/main.go#L35) or the author's FOSS project [microlobby](https://github.com/pcdummy/microlobby). -Here some code from the microlobby project +Here's some code from the microlobby project ```go import ( "github.com/go-micro/router" @@ -82,20 +82,22 @@ func main() { } ``` -## Build podman/docker image +## Developers corner -### Prerequesits +### Build podman/docker image + +#### Prerequesits - podman - [Task](https://taskfile.dev/#/installation) -### Build +#### Build ```bash task ``` -### Remove everything except the resulting podman images created by task +#### Remove everything except the resulting podman images created by task ```bash task rm diff --git a/Taskfile.yml b/Taskfile.yml index b510b44..b605ccf 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -29,9 +29,9 @@ tasks: deps: - volume cmds: - - podman build -v "{{.VOLUME_PATH}}:/go:rw" -t docker.io/pcdummy/go-micro-router-builder:latest -f ./docker/builder/Dockerfile . + - podman build -v "{{.VOLUME_PATH}}:/go:rw" -t docker.io/pcdummy/go-micro-router-builder:latest -f ./docker/builder/Dockerfile ./docker/builder/ sources: - - ./docker/builder/Dockerfile + - ./docker/builder/**/* vars: VOLUME_PATH: sh: podman volume inspect micro_router_go --format "{{"{{"}}.Mountpoint{{"}}"}}" @@ -53,16 +53,13 @@ tasks: cmds: - task: builder vars: - CLI_ARGS: /bin/sh -c 'cd ./internal/proto/routerclientpb; protoc --proto_path=/go/bin:. --micro_out=paths=source_relative:. --go_out=paths=source_relative:. routerclientpb.proto' - - task: builder - vars: - CLI_ARGS: /bin/sh -c 'cd ./internal/proto/routerserverpb; protoc --proto_path=/go/bin:. --micro_out=paths=source_relative:. --go_out=paths=source_relative:. routerserverpb.proto' + CLI_ARGS: /scripts/protoc_gen.sh build:podman: deps: - protoc cmds: - - podman build -v "$PWD:/code:rw" -v "{{.VOLUME_PATH}}:/go:rw" --build-arg CACHEBUST={{.DATE}} --build-arg VERSION={{.VERSION}} -t docker.io/pcdummy/go-micro-router:latest -f ./docker/go-micro-router/Dockerfile . + - podman build -v "$PWD:/code:rw" -v "{{.VOLUME_PATH}}:/go:rw" --build-arg CACHEBUST={{.DATE}} --build-arg VERSION={{.VERSION}} -t docker.io/pcdummy/go-micro-router:latest -f ./docker/router/Dockerfile . vars: DATE: sh: date +%s @@ -103,7 +100,7 @@ tasks: cmds: - task: builder vars: - CLI_ARGS: go get -u ./... + CLI_ARGS: /scripts/upgrade_deps.sh rm: desc: Remove all persistent data diff --git a/cmd/microrouterd/main.go b/cmd/microrouterd/main.go index faeeea5..a801b4f 100644 --- a/cmd/microrouterd/main.go +++ b/cmd/microrouterd/main.go @@ -33,7 +33,7 @@ func internalService(engine *gin.Engine) { routerserverpb.RegisterRouterServerServiceHandler(srv.Server(), routerHandler) r := router.NewHandler( - config.GetServerConfig().RouterURI, + config.GetRouterConfig().RouterURI, router.NewRoute( router.Method(router.MethodGet), router.Path("/routes"), @@ -68,7 +68,7 @@ func main() { logger.Fatal(err) } - if config.GetServerConfig().Env == config.EnvProd { + if config.GetRouterConfig().Env == config.EnvProd { gin.SetMode(gin.ReleaseMode) } @@ -76,7 +76,7 @@ func main() { opts := []micro.Option{ micro.Name(config.Name), micro.Version(config.Version), - micro.Address(config.GetServerConfig().Address), + micro.Address(config.GetRouterConfig().Address), micro.Action(func(c *cli.Context) error { r.Use(gin.Logger(), gin.Recovery()) diff --git a/docker/builder/Dockerfile b/docker/builder/Dockerfile index 9dda364..f5f3514 100644 --- a/docker/builder/Dockerfile +++ b/docker/builder/Dockerfile @@ -7,12 +7,14 @@ RUN apt-get update --allow-releaseinfo-change && \ cd /tmp && wget https://github.com/protocolbuffers/protobuf/releases/download/v21.5/protoc-21.5-linux-x86_64.zip && \ unzip protoc-21.5-linux-x86_64.zip -d /usr/local/ && chmod +x /usr/local/bin/protoc +VOLUME [ "/code", "/go" ] + # RUN go mod download ENV GOPATH="/go" -VOLUME [ "/code", "/go" ] - # Install protoc-gen-go + protoc-gen-micro RUN cd /tmp; go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28; go install github.com/go-micro/generator/cmd/protoc-gen-micro@v1.0.0 -WORKDIR /code \ No newline at end of file +WORKDIR /code + +COPY ./scripts /scripts \ No newline at end of file diff --git a/docker/builder/scripts/protoc_gen.sh b/docker/builder/scripts/protoc_gen.sh new file mode 100755 index 0000000..813674d --- /dev/null +++ b/docker/builder/scripts/protoc_gen.sh @@ -0,0 +1,2 @@ +#!/bin/sh +find . -name '*.proto' -print0 | xargs -0 -I {} /bin/sh -c 'cd $(dirname $1); PATH=$PATH:/go/bin protoc --micro_out=paths=source_relative:. --go_out=paths=source_relative:. $(basename $1)' '_' '{}' \ No newline at end of file diff --git a/docker/builder/scripts/upgrade_deps.sh b/docker/builder/scripts/upgrade_deps.sh new file mode 100755 index 0000000..8c10a9e --- /dev/null +++ b/docker/builder/scripts/upgrade_deps.sh @@ -0,0 +1,10 @@ +#!/bin/bash +set -ex + +go mod tidy -go=1.19 + +for i in $(find . -name 'main.go'); do + pushd $(dirname $i) + CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go get -installsuffix cgo -ldflags="-w -s" -u ./... + popd +done \ No newline at end of file diff --git a/docker/go-micro-router/Dockerfile b/docker/router/Dockerfile similarity index 100% rename from docker/go-micro-router/Dockerfile rename to docker/router/Dockerfile diff --git a/internal/config/config.go b/internal/config/config.go index af6d9a7..85f3c5d 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -15,10 +15,10 @@ const ( ) type Config struct { - Server ServerConfig + Router RouterConfig } -type ServerConfig struct { +type RouterConfig struct { Env string Address string RouterURI string @@ -29,6 +29,6 @@ func GetConfig() Config { return *_cfg } -func GetServerConfig() ServerConfig { - return _cfg.Server +func GetRouterConfig() RouterConfig { + return _cfg.Router } diff --git a/internal/config/load.go b/internal/config/load.go index c1edfcd..765d6d7 100644 --- a/internal/config/load.go +++ b/internal/config/load.go @@ -18,7 +18,7 @@ import ( // internal instance of Config var _cfg *Config = &Config{ - Server: ServerConfig{ + Router: RouterConfig{ Env: EnvProd, Address: ":8080", RouterURI: "router", diff --git a/internal/handler/handler.go b/internal/handler/handler.go index 101a9be..2a46335 100644 --- a/internal/handler/handler.go +++ b/internal/handler/handler.go @@ -86,7 +86,7 @@ func (h *Handler) Start() error { } } - time.Sleep(time.Duration(config.GetServerConfig().RefreshSeconds) * time.Second) + time.Sleep(time.Duration(config.GetRouterConfig().RefreshSeconds) * time.Second) } }()