Compare commits
6 Commits
feature/au
...
pkg/dev/ub
Author | SHA1 | Date | |
---|---|---|---|
2ceba1f219 | |||
7122677351 | |||
0d308acd5c | |||
36c253d4d7 | |||
ed219ddd11 | |||
1d526a37d0 |
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,3 +2,4 @@
|
|||||||
/data
|
/data
|
||||||
/bin
|
/bin
|
||||||
/.env
|
/.env
|
||||||
|
/release
|
7
Makefile
7
Makefile
@ -15,6 +15,9 @@ deps: generate
|
|||||||
cd client && npm install
|
cd client && npm install
|
||||||
go get ./...
|
go get ./...
|
||||||
|
|
||||||
|
client-dist:
|
||||||
|
cd client && NODE_ENV=production npm run build
|
||||||
|
|
||||||
up: build-docker
|
up: build-docker
|
||||||
docker-compose up
|
docker-compose up
|
||||||
|
|
||||||
@ -45,6 +48,10 @@ test:
|
|||||||
hydra-shell:
|
hydra-shell:
|
||||||
docker-compose exec hydra /bin/sh
|
docker-compose exec hydra /bin/sh
|
||||||
|
|
||||||
|
.PHONY: release
|
||||||
|
release:
|
||||||
|
./misc/script/release
|
||||||
|
|
||||||
clean: down
|
clean: down
|
||||||
rm -rf client/node_modules bin data .env internal/graph/generated internal/graph/server.go
|
rm -rf client/node_modules bin data .env internal/graph/generated internal/graph/server.go
|
||||||
rm -rf vendor
|
rm -rf vendor
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "dadd-",
|
"name": "daddy",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"description": "Daddy",
|
"description": "Daddy",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
|
1
debian/compat
vendored
Normal file
1
debian/compat
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
9
|
14
debian/control
vendored
Normal file
14
debian/control
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
Source: daddy
|
||||||
|
Section: unknown
|
||||||
|
Priority: optional
|
||||||
|
Maintainer: Cadoles <contact@cadoles.com>
|
||||||
|
Build-Depends: debhelper (>= 8.0.0), wget, ca-certificates, tar
|
||||||
|
Standards-Version: 3.9.4
|
||||||
|
Homepage: http://forge.cadoles.com/Cadoles/daddy
|
||||||
|
Vcs-Git: http://forge.cadoles.com/Cadoles/daddy.git
|
||||||
|
Vcs-Browser: http://forge.cadoles.com/Cadoles/daddy
|
||||||
|
|
||||||
|
Package: daddy
|
||||||
|
Architecture: amd64
|
||||||
|
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||||
|
Description: Daddy app
|
11
debian/daddy.service
vendored
Normal file
11
debian/daddy.service
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Daddy app
|
||||||
|
After=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/bin/daddy -workdir /usr/share/daddy -config /etc/daddy/config.yml
|
||||||
|
Restart=on-failure
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
53
debian/rules
vendored
Normal file
53
debian/rules
vendored
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
#!/usr/bin/make -f
|
||||||
|
# -*- makefile -*-
|
||||||
|
|
||||||
|
# Uncomment this to turn on verbose mode.
|
||||||
|
export DH_VERBOSE=1
|
||||||
|
|
||||||
|
GO_VERSION := 1.13.5
|
||||||
|
OS := linux
|
||||||
|
ARCH := amd64
|
||||||
|
GOPATH=$(HOME)/go
|
||||||
|
|
||||||
|
ifeq (, $(shell which go 2>/dev/null))
|
||||||
|
override_dh_auto_build: install-go
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq (, $(shell which node 2>/dev/null))
|
||||||
|
override_dh_auto_build: install-nodejs
|
||||||
|
endif
|
||||||
|
|
||||||
|
%:
|
||||||
|
dh $@ --with systemd
|
||||||
|
|
||||||
|
override_dh_auto_build: $(GOPATH)
|
||||||
|
GOPATH=$(GOPATH) PATH="$(PATH):/usr/local/go/bin:$(GOPATH)/bin" go mod vendor
|
||||||
|
GOPATH=$(GOPATH) PATH="$(PATH):/usr/local/go/bin:$(GOPATH)/bin" ARCH_TARGETS=$(ARCH) make release
|
||||||
|
|
||||||
|
$(GOPATH):
|
||||||
|
mkdir -p $(GOPATH)
|
||||||
|
|
||||||
|
install-go:
|
||||||
|
wget https://dl.google.com/go/go$(GO_VERSION).$(OS)-$(ARCH).tar.gz
|
||||||
|
tar -C /usr/local -xzf go$(GO_VERSION).$(OS)-$(ARCH).tar.gz
|
||||||
|
|
||||||
|
install-nodejs:
|
||||||
|
wget -O- https://deb.nodesource.com/setup_12.x | bash -
|
||||||
|
apt-get install -y nodejs
|
||||||
|
|
||||||
|
override_dh_auto_install:
|
||||||
|
|
||||||
|
mkdir -p debian/daddy/usr/share/daddy
|
||||||
|
mkdir -p debian/daddy/etc/daddy
|
||||||
|
mkdir -p debian/daddy/usr/bin
|
||||||
|
|
||||||
|
cp -r release/server-$(OS)-$(ARCH)/* debian/daddy/usr/share/daddy/
|
||||||
|
|
||||||
|
mv debian/daddy/usr/share/daddy/bin/server debian/daddy/usr/bin/daddy
|
||||||
|
mv debian/daddy/usr/share/daddy/server.conf debian/daddy/etc/daddy/config.yml
|
||||||
|
|
||||||
|
install -d debian/daddy
|
||||||
|
|
||||||
|
override_dh_strip:
|
||||||
|
|
||||||
|
override_dh_auto_test:
|
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
3.0 (native)
|
@ -49,7 +49,7 @@ type HTTPConfig struct {
|
|||||||
type OIDCConfig struct {
|
type OIDCConfig struct {
|
||||||
ClientID string `yaml:"clientId" env:"OIDC_CLIENT_ID"`
|
ClientID string `yaml:"clientId" env:"OIDC_CLIENT_ID"`
|
||||||
ClientSecret string `yaml:"clientSecret" env:"OIDC_CLIENT_SECRET"`
|
ClientSecret string `yaml:"clientSecret" env:"OIDC_CLIENT_SECRET"`
|
||||||
IssuerURL string `ymal:"issuerUrl" env:"OIDC_ISSUER_URL"`
|
IssuerURL string `yaml:"issuerUrl" env:"OIDC_ISSUER_URL"`
|
||||||
RedirectURL string `yaml:"redirectUrl" env:"OIDC_REDIRECT_URL"`
|
RedirectURL string `yaml:"redirectUrl" env:"OIDC_REDIRECT_URL"`
|
||||||
PostLogoutRedirectURL string `yaml:"postLogoutRedirectURL" env:"OIDC_POST_LOGOUT_REDIRECT_URL"`
|
PostLogoutRedirectURL string `yaml:"postLogoutRedirectURL" env:"OIDC_POST_LOGOUT_REDIRECT_URL"`
|
||||||
}
|
}
|
||||||
|
15
misc/debian/nginx/daddy.conf
Normal file
15
misc/debian/nginx/daddy.conf
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
server {
|
||||||
|
listen 80 default_server;
|
||||||
|
server_name daddy.local;
|
||||||
|
|
||||||
|
root /usr/share/daddy/client/public;
|
||||||
|
index index.html;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri /index.html =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /api/v1/graphql {
|
||||||
|
proxy_pass http://127.0.0.1:8080/api/v1/graphql;
|
||||||
|
}
|
||||||
|
}
|
1
misc/debian/systemd/daddy.env
Normal file
1
misc/debian/systemd/daddy.env
Normal file
@ -0,0 +1 @@
|
|||||||
|
GO_ENV=prod
|
119
misc/script/release
Executable file
119
misc/script/release
Executable file
@ -0,0 +1,119 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
OS_TARGETS=(linux)
|
||||||
|
ARCH_TARGETS=${ARCH_TARGETS:-amd64 arm 386}
|
||||||
|
|
||||||
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
||||||
|
PROJECT_DIR="$DIR/../.."
|
||||||
|
|
||||||
|
function build {
|
||||||
|
|
||||||
|
local name=$1
|
||||||
|
local srcdir=$2
|
||||||
|
local os=$3
|
||||||
|
local arch=$4
|
||||||
|
|
||||||
|
local dirname="$name-$os-$arch"
|
||||||
|
local destdir="$PROJECT_DIR/release/$dirname"
|
||||||
|
|
||||||
|
rm -rf "$destdir"
|
||||||
|
mkdir -p "$destdir"
|
||||||
|
|
||||||
|
echo "building $dirname..."
|
||||||
|
|
||||||
|
CGO_ENABLED=0 GOOS="$os" GOARCH="$arch" go build \
|
||||||
|
-ldflags="-s -w -X main.GitCommit=$(current_commit_ref) -X main.ProjectVersion=$(current_version)" \
|
||||||
|
-gcflags=-trimpath="${PWD}" \
|
||||||
|
-asmflags=-trimpath="${PWD}" \
|
||||||
|
-o "$destdir/bin/$name" \
|
||||||
|
"$srcdir"
|
||||||
|
|
||||||
|
if [ ! -z "$(which upx)" ]; then
|
||||||
|
upx --best "$destdir/bin/$name"
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function current_commit_ref {
|
||||||
|
git rev-list -1 HEAD
|
||||||
|
}
|
||||||
|
|
||||||
|
function current_version {
|
||||||
|
local latest_tag=$(git describe --abbrev=0 2>/dev/null)
|
||||||
|
echo ${latest_tag:-0.0.0}
|
||||||
|
}
|
||||||
|
|
||||||
|
function copy {
|
||||||
|
|
||||||
|
local name=$1
|
||||||
|
local os=$2
|
||||||
|
local arch=$3
|
||||||
|
local src=$4
|
||||||
|
local dest=$5
|
||||||
|
|
||||||
|
local dirname="$name-$os-$arch"
|
||||||
|
local destdir="$PROJECT_DIR/release/$dirname"
|
||||||
|
|
||||||
|
echo "copying '$src' to '$destdir/$dest'..."
|
||||||
|
|
||||||
|
mkdir -p "$(dirname $destdir/$dest)"
|
||||||
|
|
||||||
|
cp -rfL $src "$destdir/$dest"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function dump_default_conf {
|
||||||
|
# Generate and copy configuration file
|
||||||
|
local command=$1
|
||||||
|
local os=$2
|
||||||
|
local arch=$3
|
||||||
|
local tmp_conf=$(mktemp)
|
||||||
|
|
||||||
|
go run "$PROJECT_DIR/cmd/$command" -dump-config > "$tmp_conf"
|
||||||
|
copy "$command" $os $arch "$tmp_conf" "$command.conf"
|
||||||
|
rm -f "$tmp_conf"
|
||||||
|
}
|
||||||
|
|
||||||
|
function compress {
|
||||||
|
|
||||||
|
local name=$1
|
||||||
|
local os=$2
|
||||||
|
local arch=$3
|
||||||
|
|
||||||
|
local dirname="$name-$os-$arch"
|
||||||
|
local destdir="$PROJECT_DIR/release/$dirname"
|
||||||
|
|
||||||
|
echo "compressing $dirname..."
|
||||||
|
tar -czf "$destdir.tar.gz" -C "$destdir/../" "$dirname"
|
||||||
|
}
|
||||||
|
|
||||||
|
function release_server {
|
||||||
|
|
||||||
|
local os=$1
|
||||||
|
local arch=$2
|
||||||
|
|
||||||
|
build 'server' "$PROJECT_DIR/cmd/server" $os $arch
|
||||||
|
|
||||||
|
dump_default_conf 'server' $os $arch
|
||||||
|
|
||||||
|
copy 'server' $os $arch "$PROJECT_DIR/README.md" "README.md"
|
||||||
|
copy 'server' $os $arch "$PROJECT_DIR/client/dist" "public"
|
||||||
|
|
||||||
|
compress 'server' $os $arch
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function main {
|
||||||
|
|
||||||
|
make client-dist
|
||||||
|
|
||||||
|
for os in ${OS_TARGETS[@]}; do
|
||||||
|
for arch in ${ARCH_TARGETS[@]}; do
|
||||||
|
release_server $os $arch
|
||||||
|
done
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
main
|
Reference in New Issue
Block a user