add makefile

This commit is contained in:
Page Fault
2020-06-28 07:21:00 +00:00
parent df12fb0042
commit 4c71889998
14 changed files with 184 additions and 122 deletions
+10 -14
View File
@@ -11,32 +11,28 @@ assignees: ''
我们建议您按照下方模板填写 Bug Report,以便我们收集更多的有效信息
# 简单描述这个 Bug:
## 简单描述这个 Bug
## 如何复现这个 Bug
# 如何复现这个 Bug
在此描述复现这个Bug所需要的操作步骤
1.
2.
3.
4.
### 服务器和客户端环境信息
## 服务器和客户端环境信息
在此描述你的服务器和客户端所处的网络环境,系统架构,以及其他信息
### 服务端和客户端日志
## 服务端和客户端日志
粘贴**故障发生时**,服务端和客户端日志
### 服务端和客户端配置文件
## 服务端和客户端配置文件
可以复现该问题的客户端和服务端的完整配置
可以复现该问题的客户端和服务端的完整配置(请隐去域名和IP等隐私信息)
### 服务端和客户端版本信息
## 服务端和客户端版本信息
请执行 ./trojan-go -version并将输出完整粘贴在此处
请执行./trojan-go -version并将输出完整粘贴在此处
### 其他信息
## 其他信息
你认为对我们修复bug有帮助的任何信息都可以在这里写出来
+3 -3
View File
@@ -23,9 +23,9 @@ jobs:
- name: Test
run: go test ./...
- name: Build
run: mkdir dist && go build -tags "full" -o dist
run: make
- name: Upload Binary
uses: actions/upload-artifact@v1
with:
name: dist-${{ matrix.platform }}
path: ./dist/
name: bin-${{ matrix.platform }}
path: ./bin/
+1 -1
View File
@@ -21,7 +21,7 @@ jobs:
git checkout $tag_name
- name: Build
run: |
./build-all.sh
./release.sh
set -x
assets=()
for asset in ./release/*; do
+4 -4
View File
@@ -2,13 +2,13 @@ FROM golang:alpine AS builder
WORKDIR /
RUN apk add --update git &&\
git clone --depth=1 https://github.com/p4gefau1t/trojan-go.git &&\
cd trojan-go && mkdir release && go build -tags "full" -ldflags "-s -w" -o release &&\
wget https://github.com/v2ray/domain-list-community/raw/release/dlc.dat -O release/geosite.dat &&\
wget https://github.com/v2ray/geoip/raw/release/geoip.dat -O release/geoip.dat
cd trojan-go && make &&\
wget https://github.com/v2ray/domain-list-community/raw/release/dlc.dat -O bin/geosite.dat &&\
wget https://github.com/v2ray/geoip/raw/release/geoip.dat -O bin/geoip.dat
FROM alpine
WORKDIR /
COPY --from=builder /trojan-go/release /usr/local/bin/
COPY --from=builder /trojan-go/bin /usr/local/bin/
COPY --from=builder /trojan-go/example/server.json /etc/trojan-go/config.json
ENTRYPOINT ["/usr/local/bin/trojan-go", "-config"]
+92
View File
@@ -0,0 +1,92 @@
NAME=trojan-go
PACKAGE_NAME=github.com/p4gefau1t/trojan-go
VERSION=`git describe`
COMMIT=`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)
normal: clean
$(GOBUILD)
clean:
-rm -frd $(BIN_DIR)
geoip.dat:
wget https://github.com/v2ray/geoip/raw/release/geoip.dat
geosite.dat:
wget https://github.com/v2ray/domain-list-community/raw/release/dlc.dat -O geosite.dat
install: $(BIN_DIR)/$(NAME) geoip.dat geosite.dat
mkdir -p /etc/$(NAME)
mkdir -p /usr/share/$(NAME)
cp example/*.json /etc/$(NAME)
cp $(BIN_DIR)/$(NAME) /usr/bin/$(NAME)
cp example/$(NAME).service /etc/systemd/system
cp example/$(NAME)@.service /etc/systemd/system
cp geosite.dat /usr/share/$(NAME)/geosite.dat
cp geoip.dat /usr/share/$(NAME)/geoip.dat
ln -fs /usr/share/$(NAME)/geoip.dat /usr/bin/
ln -fs /usr/share/$(NAME)/geosite.dat /usr/bin/
uninstall:
rm /etc/systemd/system/$(NAME).service
rm /etc/systemd/system/$(NAME)@.service
rm /usr/bin/$(NAME)
rm -rd /etc/$(NAME)
rm -rd /usr/share/$(NAME)
rm /usr/bin/geoip.dat
rm /usr/bin/geosite.dat
darwin-amd64:
GOARCH=amd64 GOOS=darwin $(GOBUILD)
linux-386:
GOARCH=386 GOOS=linux $(GOBUILD)
linux-amd64:
GOARCH=amd64 GOOS=linux $(GOBUILD)
linux-armv5:
GOARCH=arm GOOS=linux GOARM=5 $(GOBUILD)
linux-armv6:
GOARCH=arm GOOS=linux GOARM=6 $(GOBUILD)
linux-armv7:
GOARCH=arm GOOS=linux GOARM=7 $(GOBUILD)
linux-armv8:
GOARCH=arm64 GOOS=linux $(GOBUILD)
linux-mips-softfloat:
GOARCH=mips GOMIPS=softfloat GOOS=linux $(GOBUILD)
linux-mips-hardfloat:
GOARCH=mips GOMIPS=hardfloat GOOS=linux $(GOBUILD)
linux-mipsle-softfloat:
GOARCH=mipsle GOMIPS=softfloat GOOS=linux $(GOBUILD)
linux-mipsle-hardfloat:
GOARCH=mipsle GOMIPS=hardfloat GOOS=linux $(GOBUILD)
linux-mips64:
GOARCH=mips64 GOOS=linux $(GOBUILD)
linux-mips64le:
GOARCH=mips64le GOOS=linux $(GOBUILD)
freebsd-386:
GOARCH=386 GOOS=freebsd $(GOBUILD)
freebsd-amd64:
GOARCH=amd64 GOOS=freebsd $(GOBUILD)
windows-386:
GOARCH=386 GOOS=windows $(GOBUILD)
windows-amd64:
GOARCH=amd64 GOOS=windows $(GOBUILD)
+9
View File
@@ -340,9 +340,18 @@ Trojan-Go支持可插拔的传输层插件,并支持Shadowsocks [SIP003](https
确保你的Go版本 >= 1.14,推荐使用snap安装Go保持与上游同步。
下面的命令使用```make```进行编译
```shell
git clone https://github.com/p4gefau1t/trojan-go.git
cd trojan-go
make
make install #安装systemd服务等,可选
```
你也可以使用Go自行编译和安装
```shell
go build -tags "full"
```
-77
View File
@@ -1,77 +0,0 @@
#!/bin/bash
PLATFORMS="darwin/amd64 darwin/386"
PLATFORMS="$PLATFORMS windows/amd64 windows/386"
PLATFORMS="$PLATFORMS windows/arm"
PLATFORMS="$PLATFORMS linux/amd64 linux/386"
PLATFORMS="$PLATFORMS linux/ppc64 linux/ppc64le"
PLATFORMS="$PLATFORMS linux/mips64 linux/mips64le"
PLATFORMS="$PLATFORMS linux/mips linux/mipsle"
PLATFORMS="$PLATFORMS linux/arm64 linux/arm"
PLATFORMS="$PLATFORMS linux/s390x"
PLATFORMS="$PLATFORMS dragonfly/amd64"
PLATFORMS="$PLATFORMS openbsd/arm64 openbsd/arm"
PLATFORMS="$PLATFORMS openbsd/amd64 openbsd/386"
PLATFORMS="$PLATFORMS freebsd/amd64 freebsd/386"
PLATFORMS="$PLATFORMS freebsd/arm64 freebsd/arm"
type setopt >/dev/null 2>&1
rm -rd release
rm -rd temp
rm ./*.dat
mkdir release
mkdir temp
wget https://github.com/v2ray/domain-list-community/raw/release/dlc.dat -O geosite.dat
wget https://github.com/v2ray/geoip/raw/release/geoip.dat -O geoip.dat
SCRIPT_NAME=`basename "$0"`
FAILURES=""
PACKAGE_NAME="github.com/p4gefau1t/trojan-go"
VERSION=`git describe`
COMMIT=`git rev-parse HEAD`
VAR_SETTING=""
VAR_SETTING="$VAR_SETTING -X $PACKAGE_NAME/constant.Version=$VERSION"
VAR_SETTING="$VAR_SETTING -X $PACKAGE_NAME/constant.Commit=$COMMIT"
for PLATFORM in $PLATFORMS; do
GOOS=${PLATFORM%/*}
GOARCH=${PLATFORM#*/}
ZIP_FILENAME="trojan-go-${GOOS}-${GOARCH}.zip"
CMD="CGO_ENABLED=0 GOOS=${GOOS} GOARCH=${GOARCH} go build -tags \"full\" -o temp -ldflags=\"-s -w ${VAR_SETTING}\""
echo "${CMD}"
eval $CMD || FAILURES="${FAILURES} ${PLATFORM}"
zip -j release/$ZIP_FILENAME temp/* ./*.dat
zip release/$ZIP_FILENAME example/*
sha1sum release/$ZIP_FILENAME >> release/checksum.sha1
rm temp/*
done
# arm
PLATFORMS_ARM="windows linux freebsd netbsd"
for GOOS in $PLATFORMS_ARM; do
# build for each ARM version
GOARCH="arm"
for GOARM in 7 6 5; do
ZIP_FILENAME="trojan-go-${GOOS}-${GOARCH}v${GOARM}.zip"
CMD="CGO_ENABLED=0 GOARM=${GOARM} GOOS=${GOOS} GOARCH=${GOARCH} go build -tags \"full\" -o temp -ldflags \"-s -w ${VAR_SETTING}\""
echo "${CMD}"
eval "${CMD}" || FAILURES="${FAILURES} ${GOOS}/${GOARCH}v${GOARM}"
zip -j release/$ZIP_FILENAME temp/* ./*.dat
zip release/$ZIP_FILENAME example/*
sha1sum release/$ZIP_FILENAME >> release/checksum.sha1
rm temp/*
done
done
# eval errors
if [[ "${FAILURES}" != "" ]]; then
echo ""
echo "${SCRIPT_NAME} failed on: ${FAILURES}"
fi
-11
View File
@@ -1,11 +0,0 @@
#!/bin/bash
PACKAGE_NAME="github.com/p4gefau1t/trojan-go"
VERSION=`git describe`
COMMIT=`git rev-parse HEAD`
VAR_SETTING=""
VAR_SETTING="$VAR_SETTING -X $PACKAGE_NAME/constant.Version=$VERSION"
VAR_SETTING="$VAR_SETTING -X $PACKAGE_NAME/constant.Commit=$COMMIT"
CGO_ENABLED=0 go build -tags "full" -ldflags="-s -w $VAR_SETTING"
+9 -4
View File
@@ -6,14 +6,19 @@ weight: 10
编译需要Go版本号高于1.14.x,请在编译前确认你的编译器版本。推荐使用snap安装和更新go。
编译过程非常简单
编译方式非常简单,可以使用Makefile预设步骤进行编译:
```shell
make
make install #安装systemd服务等,可选
```
或者直接使用Go进行编译:
```shell
go build -tags "full" #编译完整版本
```
build.sh中的命令禁用了cgo并去除可执行文件的调试符号以减小体积。
可以通过指定GOOS和GOARCH环境变量,指定交叉编译的目标操作系统和架构,例如
```shell
@@ -21,7 +26,7 @@ GOOS=windows GOARCH=386 go build -tags "full" #windows x86
GOOS=linux GOARCH=arm64 go build -tags "full" #linux arm64
```
你可以使用build-all.sh进行批量的多个平台的交叉编译,release版本使用了这个脚本进行构建。
你可以使用release.sh进行批量的多个平台的交叉编译,release版本使用了这个脚本进行构建。
Trojan-Go的大多数模块是可插拔的。在build文件夹下可以找到各个模块的导入声明。如果你不需要其中某些功能,或者需要缩小可执行文件的体积,可以使用构建标签(tags)进行模块的自定义,例如
+5 -3
View File
@@ -10,10 +10,10 @@
"ssl": {
"sni": "your-domain-name.com"
},
"mux" :{
"mux": {
"enabled": true
},
"router":{
"router": {
"enabled": true,
"bypass": [
"geoip:cn",
@@ -27,6 +27,8 @@
"proxy": [
"geosite:geolocation-!cn"
],
"default_policy": "proxy"
"default_policy": "proxy",
"geoip": "/usr/share/trojan-go/geoip.dat",
"geosite": "/usr/share/trojan-go/geosite.dat"
}
}
+5 -3
View File
@@ -12,10 +12,12 @@
"key": "your_key.key",
"sni": "your-domain-name.com"
},
"router":{
"router": {
"enabled": true,
"block": [
"geoip:private"
]
],
"geoip": "/usr/share/trojan-go/geoip.dat",
"geosite": "/usr/share/trojan-go/geosite.dat"
}
}
}
+1 -1
View File
@@ -6,7 +6,7 @@ Wants=network-online.target
[Service]
Type=simple
User=root
User=nobody
ExecStart=/usr/bin/trojan-go -config /etc/trojan-go/config.json
Restart=on-failure
RestartSec=10
+1 -1
View File
@@ -6,7 +6,7 @@ After=network.target network-online.target nss-lookup.target mysql.service maria
[Service]
Type=simple
StandardError=journal
User=root
User=nobody
AmbientCapabilities=CAP_NET_BIND_SERVICE
ExecStart=/usr/bin/trojan-go -config /etc/trojan-go/%i.json
ExecReload=/bin/kill -HUP $MAINPID
Executable
+44
View File
@@ -0,0 +1,44 @@
#!/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/trojan-go
zip release/$ZIP_FILENAME example/*
zip -j release/$ZIP_FILENAME temp/*
done
make clean
rm -rdf temp