Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,19 @@ jobs:
with:
go-version: ${{ matrix.go-version }}

- name: Set Release Version
id: set_release_version
run: |
echo "RELEASE_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV

- name: Install dependencies
run: make install
run: make setup

- name: Build
run: make build-all
run: |
export AppVersion="${{ env.RELEASE_VERSION }}"
echo "Building version: $AppVersion"
make build-all

- name: Archive build artifacts
uses: actions/upload-artifact@v3
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ gozen-*
# Test binary, built with `go test -c`
*.test
*.out
coverage.out

# Directory
build/
coverage/
53 changes: 42 additions & 11 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,23 +1,54 @@
# Install dependencies
VERSION := $(or $(AppVersion), "v0.0.0")
COMMIT := $(or $(shell git rev-parse --short HEAD), "unknown")
BUILDDATE := $(shell date +%Y-%m-%d)

install:
LDFLAGS := -X 'main.AppVersion=$(VERSION)' -X 'main.CommitHash=$(COMMIT)' -X 'main.BuildDate=$(BUILDDATE)'

all: build

setup:
go mod tidy

test:
go test -v ./... -race -coverprofile=coverage.out -covermode=atomic

coverage: test
go tool cover -func=coverage.out

coverage-html: test
mkdir -p coverage
go tool cover -html=coverage.out -o coverage/index.html

coverage-serve: coverage-html
python3 -m http.server 8080 -d coverage

install: build
cp gozen /usr/local/bin/gozen
# cp man/gozen.1 /usr/local/share/man/man1/gozen.1

build:
go build -o gozen
go build -ldflags="$(LDFLAGS)" -o gozen

build-all:
GOOS=linux GOARCH=amd64 go build -o build/gozen-linux-amd64
GOOS=linux GOARCH=arm64 go build -o build/gozen-linux-arm64
GOOS=linux GOARCH=arm go build -o build/gozen-linux-arm
GOOS=darwin GOARCH=amd64 go build -o build/gozen-darwin-amd64
GOOS=darwin GOARCH=arm64 go build -o build/gozen-darwin-arm64
GOOS=windows GOARCH=amd64 go build -o build/gozen-windows-amd64.exe
GOOS=windows GOARCH=386 go build -o build/gozen-windows-i386.exe
GOOS=linux GOARCH=amd64 go build -ldflags="$(LDFLAGS)" -o build/gozen-linux-amd64
cp build/gozen-linux-amd64 build/gozen
tar -zcvf build/gozen-linux-amd64.tar.gz build/gozen-linux-amd64 man/gozen.1
GOOS=linux GOARCH=arm64 go build -ldflags="$(LDFLAGS)" -o build/gozen-linux-arm64
cp build/gozen-linux-arm64 build/gozen
tar -zcvf build/gozen-linux-arm64.tar.gz build/gozen-linux-arm64 man/gozen.1
GOOS=linux GOARCH=arm go build -ldflags="$(LDFLAGS)" -o build/gozen-linux-arm
cp build/gozen-linux-arm build/gozen
tar -zcvf build/gozen-linux-arm.tar.gz build/gozen-linux-arm man/gozen.1
GOOS=darwin GOARCH=amd64 go build -ldflags="$(LDFLAGS)" -o build/gozen-darwin-amd64
cp build/gozen-darwin-amd64 build/gozen
tar -zcvf build/gozen-darwin-amd64.tar.gz build/gozen-darwin-amd64 man/gozen.1
GOOS=darwin GOARCH=arm64 go build -ldflags="$(LDFLAGS)" -o build/gozen-darwin-arm64
cp build/gozen-darwin-arm64 build/gozen
tar -zcvf build/gozen-darwin-arm64.tar.gz build/gozen-darwin-arm64 man/gozen.1
rm build/gozen
GOOS=windows GOARCH=amd64 go build -ldflags="$(LDFLAGS)" -o build/gozen-windows-amd64.exe
GOOS=windows GOARCH=386 go build -ldflags="$(LDFLAGS)" -o build/gozen-windows-i386.exe

clean:
rm -rf gozen*
rm -rf build
rm -rf build
12 changes: 12 additions & 0 deletions cmd/create_app.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,18 @@ func (cmd *appCmd) CreateApp() error {
// Generating basic codes
cmd.helper.Write("templates/env.sample.tpl", appPath+"/.env", cmd.project)
cmd.helper.Write("templates/env.sample.tpl", appPath+"/.env.sample", cmd.project)
cmd.helper.Write("templates/env.sample.tpl", appPath+"/docker/.env", cmd.project)
cmd.helper.Write("templates/env.sample.tpl", appPath+"/docker/.env.sample", cmd.project)
cmd.helper.Write("templates/docker/Dockerfile.debug", appPath+"/docker/Dockerfile.debug", cmd.project)
cmd.helper.Write("templates/docker/Dockerfile.dev", appPath+"/docker/Dockerfile.dev", cmd.project)
cmd.helper.Write("templates/docker/Dockerfile.prod", appPath+"/docker/Dockerfile.prod", cmd.project)
cmd.helper.Write("templates/docker/docker-compose-debug.yml", appPath+"/docker/docker-compose-debug.yml", cmd.project)
cmd.helper.Write("templates/docker/docker-compose.yml", appPath+"/docker/docker-compose.yml", cmd.project)
cmd.helper.Write("templates/docker/entrypoint-debug.sh", appPath+"/docker/entrypoint-debug.sh", cmd.project)
cmd.helper.Write("templates/docker/entrypoint-dev.sh", appPath+"/docker/entrypoint-dev.sh", cmd.project)
cmd.helper.Write("templates/docker/modd-debug.conf", appPath+"/docker/modd-debug.conf", cmd.project)
cmd.helper.Write("templates/docker/modd-dev.conf", appPath+"/docker/modd-dev.conf", cmd.project)

cmd.helper.Write("templates/gitignore.tpl", appPath+"/.gitignore", cmd.project)
cmd.helper.Write("templates/Makefile.tpl", appPath+"/Makefile", cmd.project)
cmd.helper.Write("templates/go.tpl", appPath+"/go.mod", cmd.project)
Expand Down
7 changes: 7 additions & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@ import (
"github.com/urfave/cli/v2"
)

var (
AppVersion = "v0.0.0"
CommitHash = "unknown"
BuildDate = "unknown"
)

//go:embed templates/*
var templatesFS embed.FS

Expand All @@ -24,6 +30,7 @@ func main() {

clientApp := cli.NewApp()
clientApp.Name = "gozen"
clientApp.Version = AppVersion
clientApp.Commands = []*cli.Command{
{
Name: "create",
Expand Down
2 changes: 1 addition & 1 deletion templates/Makefile.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
test:
go test -v ./... -race -coverprofile=coverage.out -covermode=atomic

install:
setup:
go mod tidy

run:
Expand Down
18 changes: 18 additions & 0 deletions templates/docker/Dockerfile.debug
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
FROM golang:1.22

RUN apt-get update && \
apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent

RUN curl -sSL https://packagecloud.io/golang-migrate/migrate/gpgkey | apt-key add -
RUN echo "deb https://packagecloud.io/golang-migrate/migrate/ubuntu/ bionic main" > /etc/apt/sources.list.d/migrate.list
RUN apt-get update && \
apt-get install -y migrate


WORKDIR /app

ENTRYPOINT ["bash", "docker/entrypoint-dev.sh"]
18 changes: 18 additions & 0 deletions templates/docker/Dockerfile.dev
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
FROM golang:1.22

RUN apt-get update && \
apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent

RUN curl -sSL https://packagecloud.io/golang-migrate/migrate/gpgkey | apt-key add -
RUN echo "deb https://packagecloud.io/golang-migrate/migrate/ubuntu/ bionic main" > /etc/apt/sources.list.d/migrate.list
RUN apt-get update && \
apt-get install -y migrate


WORKDIR /app

ENTRYPOINT ["bash", "docker/entrypoint-dev.sh"]
16 changes: 16 additions & 0 deletions templates/docker/Dockerfile.prod
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Builder stage
FROM golang:1.22 as builder

WORKDIR /src
ADD . .
RUN go build -o app .

# Runner Stage
FROM alpine:edge
RUN apk add --no-cache libc6-compat
RUN apk add --no-cache tzdata
RUN mkdir /app
WORKDIR /app
COPY --from=builder /src/app /app/app
CMD ["/app/app", "start"]
EXPOSE 3000
35 changes: 35 additions & 0 deletions templates/docker/docker-compose-debug.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
version: "3"
services:
app:
networks:
- app
build:
context: .
dockerfile: Dockerfile.debug
container_name: app
security_opt:
- seccomp:unconfined
env_file: .env
ports:
- "2345:2345"
- "3000:3000"
volumes:
- "../:/app"

# app-workers:
# networks:
# - app
# build:
# context: .
# dockerfile: Dockerfile.Workers
# container_name: app-workers
# security_opt:
# - seccomp:unconfined
# env_file: .env
# volumes:
# - "../:/app"
# depends_on:
# - app

networks:
app:
34 changes: 34 additions & 0 deletions templates/docker/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
version: "3"
services:
app:
networks:
- app
build:
context: .
dockerfile: Dockerfile.dev
container_name: app
security_opt:
- seccomp:unconfined
env_file: .env
ports:
- "3000:3000"
volumes:
- "../:/app"

# app-workers:
# networks:
# - app
# build:
# context: .
# dockerfile: Dockerfile.Workers
# container_name: app-workers
# security_opt:
# - seccomp:unconfined
# env_file: .env
# volumes:
# - "../:/app"
# depends_on:
# - app

networks:
app:
18 changes: 18 additions & 0 deletions templates/docker/entrypoint-debug.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/bin/bash
cd ..
go get -u github.com/go-delve/delve/cmd/dlv
cd -
MODD_DIR=modd
cd docker
if [ ! -d "$MODD_DIR" ]; then
git clone https://github.com/cortesi/modd
git checkout 45e41bb091af8d3c7bfdc523851a9fc993df8a80
cd modd
go get mvdan.cc/sh@8aeb0734cd0f
cd -
fi
cd modd
go install ./cmd/modd
cd -
cd ..
modd -f ./docker/modd-debug.conf
15 changes: 15 additions & 0 deletions templates/docker/entrypoint-dev.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash
MODD_DIR=modd
cd docker
if [ ! -d "$MODD_DIR" ]; then
git clone https://github.com/cortesi/modd
git checkout 45e41bb091af8d3c7bfdc523851a9fc993df8a80
cd modd
go get mvdan.cc/sh@8aeb0734cd0f
cd -
fi
cd modd
go install ./cmd/modd
cd -
cd ..
modd -f ./docker/modd-dev.conf
9 changes: 9 additions & 0 deletions templates/docker/modd-debug.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
**/*.go {
# Server Configurations
prep: if pgrep $APP_NAME; then pkill $APP_NAME; fi
prep: if pgrep dlv; then pkill dlv; fi
prep: go mod tidy
prep: go build -gcflags="-N -l" -o $APP_NAME ./*.go
daemon: ./$APP_NAME start
daemon: dlv attach --headless=true --listen=:2345 --api-version=2 $(pidof $BIN_NAME)
}
7 changes: 7 additions & 0 deletions templates/docker/modd-dev.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
**/*.go {
# Server Configurations
prep: if pgrep $APP_NAME; then pkill $APP_NAME; fi
prep: go mod tidy
prep: go build -gcflags="-N -l" -o $APP_NAME ./*.go
daemon: ./$APP_NAME start
}
1 change: 1 addition & 0 deletions templates/gitignore.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
{{.AppName}}.exe
.env
.db
modd/
Loading