build release from Makefile

Signed-off-by: peter-tank <30540412+peter-tank@users.noreply.github.com>
This commit is contained in:
peter-tank
2020-07-12 12:57:37 +00:00
parent fccba27a47
commit 2fedceeb40
3 changed files with 100 additions and 74 deletions
+4 -3
View File
@@ -21,10 +21,11 @@ jobs:
git checkout $tag_name
- name: Build
run: |
./release.sh
make geosite.dat geoip.dat
make release -j$(nproc)
set -x
assets=()
for asset in ./release/*; do
for asset in ./*.zip; do
assets+=("-a" "$asset")
done
tag_name="${GITHUB_REF##*/}"
@@ -35,4 +36,4 @@ jobs:
uses: actions/upload-artifact@v1
with:
name: dist-release
path: ./release
path: ./bin
+96 -27
View File
@@ -1,17 +1,41 @@
NAME=trojan-go
PACKAGE_NAME=github.com/p4gefau1t/trojan-go
VERSION=`git describe --dirty`
COMMIT=`git rev-parse HEAD`
NAME := trojan-go
PACKAGE_NAME := github.com/p4gefau1t/trojan-go
VERSION := `echo git describe --dirty`
COMMIT := `echo git rev-parse HEAD`
BIN_DIR=bin
VAR_SETTING=-X $(PACKAGE_NAME)/constant.Version=$(VERSION) -X $(PACKAGE_NAME)/constant.Commit=$(COMMIT)
GOBUILD=CGO_ENABLED=0 go build -tags "full" -ldflags="-s -w $(VAR_SETTING)" -o $(BIN_DIR)/$(NAME)
GOPATH ?=
ifneq ($(strip $(GOPATH)), )
GO_DIR := $(GOPATH)/bin/
endif
normal: clean
$(GOBUILD)
MAKEDEPEND = $(GODIR)go
GO_MINIMUM := go1.14
GO_VERSION != $(GO_DIR)go version | cut -d' ' -f3
GOMETALINTER := $(GO_DIR)gometalinter
PLATFORM := linux
BIN_DIR := bin
VAR_SETTING := -X $(PACKAGE_NAME)/constant.Version=$(VERSION) -X $(PACKAGE_NAME)/constant.Commit=$(COMMIT)
GOBUILD = env CGO_ENABLED=0 $(GO_DIR)go build -tags "full" -ldflags="-s -w $(VAR_SETTING)" -o $(BIN_DIR)
.PHONY: depends trojan-go release
normal: clean trojan-go
depends: geosite.dat geoip.dat
$(info GO_DIR: $(GO_DIR))
$(info Current Go Verison: $(GO_VERSION))
ifneq ($(GO_VERSION), $(lastword $(sort $(GO_MINIMUM) $(GO_VERSION))))
$(error Requires $(GO_MINIMUM) for module fingerprint/tls)
endif
realclean: distclean
rm -f *.dat
distclean: clean
rm -f *.zip
clean:
-rm -rf $(BIN_DIR)
rm -rf $(BIN_DIR)
geoip.dat:
wget https://github.com/v2ray/geoip/raw/release/geoip.dat
@@ -19,6 +43,18 @@ geoip.dat:
geosite.dat:
wget https://github.com/v2ray/domain-list-community/raw/release/dlc.dat -O geosite.dat
lint:
$(GO_DIR)go get -u github.com/alecthomas/gometalinter
$(GOMETALINTER) --install &> /dev/null
$(GOMETALINTER) ./... --vendor
test: depends
@$(GO_DIR)go test ./...
trojan-go: depends
mkdir -p $(BIN_DIR)
$(GOBUILD)
install: $(BIN_DIR)/$(NAME) geoip.dat geosite.dat
mkdir -p /etc/$(NAME)
mkdir -p /usr/share/$(NAME)
@@ -42,53 +78,86 @@ uninstall:
rm /usr/bin/geoip.dat
rm /usr/bin/geosite.dat
%.zip: % geosite.dat geoip.dat
@zip -du $(NAME)-$@ -j $(BIN_DIR)/$</*
@zip -du $(NAME)-$@ example/*
@-zip -du $(NAME)-$@ *.dat
@echo "<<< ---- $(NAME)-$@"
release: depends darwin-amd64.zip linux-386.zip linux-amd64.zip \
linux-arm.zip linux-armv5.zip linux-armv6.zip linux-armv7.zip linux-armv8.zip \
linux-mips-softfloat.zip linux-mips-hardfloat.zip linux-mipsle-softfloat.zip linux-mipsle-hardfloat.zip \
linux-mips64.zip linux-mips64le.zip freebsd-386.zip freebsd-amd64.zip \
windows-386.zip windows-amd64.zip
darwin-amd64:
GOARCH=amd64 GOOS=darwin $(GOBUILD)
mkdir -p $(BIN_DIR)/$@
GOARCH=amd64 GOOS=darwin $(GOBUILD)/$@
linux-386:
GOARCH=386 GOOS=linux $(GOBUILD)
mkdir -p $(BIN_DIR)/$@
GOARCH=386 GOOS=linux $(GOBUILD)/$@
linux-amd64:
GOARCH=amd64 GOOS=linux $(GOBUILD)
mkdir -p $(BIN_DIR)/$@
GOARCH=amd64 GOOS=linux $(GOBUILD)/$@
linux-arm:
mkdir -p $(BIN_DIR)/$@
GOARCH=arm GOOS=linux $(GOBUILD)/$@
linux-armv5:
GOARCH=arm GOOS=linux GOARM=5 $(GOBUILD)
mkdir -p $(BIN_DIR)/$@
GOARCH=arm GOOS=linux GOARM=5 $(GOBUILD)/$@
linux-armv6:
GOARCH=arm GOOS=linux GOARM=6 $(GOBUILD)
mkdir -p $(BIN_DIR)/$@
GOARCH=arm GOOS=linux GOARM=6 $(GOBUILD)/$@
linux-armv7:
GOARCH=arm GOOS=linux GOARM=7 $(GOBUILD)
mkdir -p $(BIN_DIR)/$@
GOARCH=arm GOOS=linux GOARM=7 $(GOBUILD)/$@
linux-armv8:
GOARCH=arm64 GOOS=linux $(GOBUILD)
mkdir -p $(BIN_DIR)/$@
GOARCH=arm64 GOOS=linux $(GOBUILD)/$@
linux-mips-softfloat:
GOARCH=mips GOMIPS=softfloat GOOS=linux $(GOBUILD)
mkdir -p $(BIN_DIR)/$@
GOARCH=mips GOMIPS=softfloat GOOS=linux $(GOBUILD)/$@
linux-mips-hardfloat:
GOARCH=mips GOMIPS=hardfloat GOOS=linux $(GOBUILD)
mkdir -p $(BIN_DIR)/$@
GOARCH=mips GOMIPS=hardfloat GOOS=linux $(GOBUILD)/$@
linux-mipsle-softfloat:
GOARCH=mipsle GOMIPS=softfloat GOOS=linux $(GOBUILD)
mkdir -p $(BIN_DIR)/$@
GOARCH=mipsle GOMIPS=softfloat GOOS=linux $(GOBUILD)/$@
linux-mipsle-hardfloat:
GOARCH=mipsle GOMIPS=hardfloat GOOS=linux $(GOBUILD)
mkdir -p $(BIN_DIR)/$@
GOARCH=mipsle GOMIPS=hardfloat GOOS=linux $(GOBUILD)/$@
linux-mips64:
GOARCH=mips64 GOOS=linux $(GOBUILD)
mkdir -p $(BIN_DIR)/$@
GOARCH=mips64 GOOS=linux $(GOBUILD)/$@
linux-mips64le:
GOARCH=mips64le GOOS=linux $(GOBUILD)
mkdir -p $(BIN_DIR)/$@
GOARCH=mips64le GOOS=linux $(GOBUILD)/$@
freebsd-386:
GOARCH=386 GOOS=freebsd $(GOBUILD)
mkdir -p $(BIN_DIR)/$@
GOARCH=386 GOOS=freebsd $(GOBUILD)/$@
freebsd-amd64:
GOARCH=amd64 GOOS=freebsd $(GOBUILD)
mkdir -p $(BIN_DIR)/$@
GOARCH=amd64 GOOS=freebsd $(GOBUILD)/$@
windows-386:
GOARCH=386 GOOS=windows $(GOBUILD).exe
mkdir -p $(BIN_DIR)/$@
GOARCH=386 GOOS=windows $(GOBUILD)/$@
windows-amd64:
GOARCH=amd64 GOOS=windows $(GOBUILD).exe
mkdir -p $(BIN_DIR)/$@
GOARCH=amd64 GOOS=windows $(GOBUILD)/$@
-44
View File
@@ -1,44 +0,0 @@
#!/bin/bash
PLATFORMS="$PLATFORMS darwin-amd64"
PLATFORMS="$PLATFORMS linux-386"
PLATFORMS="$PLATFORMS linux-amd64"
PLATFORMS="$PLATFORMS linux-armv5"
PLATFORMS="$PLATFORMS linux-armv6"
PLATFORMS="$PLATFORMS linux-armv7"
PLATFORMS="$PLATFORMS linux-armv8"
PLATFORMS="$PLATFORMS linux-mips-softfloat"
PLATFORMS="$PLATFORMS linux-mips-hardfloat"
PLATFORMS="$PLATFORMS linux-mipsle-softfloat"
PLATFORMS="$PLATFORMS linux-mipsle-hardfloat"
PLATFORMS="$PLATFORMS linux-mips64"
PLATFORMS="$PLATFORMS linux-mips64le"
PLATFORMS="$PLATFORMS freebsd-386"
PLATFORMS="$PLATFORMS freebsd-amd64"
PLATFORMS="$PLATFORMS windows-386"
PLATFORMS="$PLATFORMS windows-amd64"
rm -rdf release
rm -rdf temp
mkdir release
mkdir temp
wget https://github.com/v2ray/domain-list-community/raw/release/dlc.dat -O temp/geosite.dat
wget https://github.com/v2ray/geoip/raw/release/geoip.dat -O temp/geoip.dat
for PLATFORM in $PLATFORMS; do
make clean
eval "make $PLATFORM" || FAILURES="${PLATFORM}"
if [[ "${FAILURES}" != "" ]]; then
echo "failed on: ${FAILURES}"
exit 1
fi
ZIP_FILENAME=trojan-go-$PLATFORM.zip
zip -j release/$ZIP_FILENAME bin/*
zip release/$ZIP_FILENAME example/*
zip -j release/$ZIP_FILENAME temp/*
done
make clean
rm -rdf temp