Skip to content

Commit 6e4701b

Browse files
authored
Build: do NOT rely on GOPATH & refine user-package.sh (v2ray#270)
* Build: do NOT rely on GOPATH * Format pipelines
1 parent 884feea commit 6e4701b

File tree

5 files changed

+57
-76
lines changed

5 files changed

+57
-76
lines changed

Diff for: azure-pipelines.yml

+14-22
Original file line numberDiff line numberDiff line change
@@ -7,41 +7,32 @@ trigger:
77
- refs/tags/*
88

99
pool:
10-
vmImage: 'ubuntu-latest'
10+
vmImage: "ubuntu-latest"
1111

1212
variables:
1313
- group: GithubToken
14-
- name: GOPATH
15-
value: '$(system.defaultWorkingDirectory)/gopath'
16-
- name: BAZEL_VER
17-
value: '3.5.0'
1814

1915
steps:
2016
- checkout: self
2117
- task: GoTool@0
2218
inputs:
23-
version: '1.15.2'
19+
version: "1.15.2"
2420
- script: |
2521
go version
26-
mkdir -p $GOPATH/src/v2ray.com
27-
ln -s $(pwd) $GOPATH/src/v2ray.com/core
28-
ls -lah $GOPATH/src/v2ray.com/core
29-
cd $GOPATH/src/v2ray.com/core || exit 1
3022
go mod download
31-
workingDirectory: '$(system.defaultWorkingDirectory)'
32-
displayName: 'Fetch sources'
23+
workingDirectory: $(system.defaultWorkingDirectory)
24+
displayName: "Fetch sources"
3325
- script: |
34-
cd ./src/v2ray.com/core || exit 1
35-
bazel build --action_env=GOPATH=$GOPATH --action_env=PATH=$PATH --action_env=SPWD=$PWD --action_env=GOCACHE=$(go env GOCACHE) --spawn_strategy local //release:all
36-
workingDirectory: '$(GOPATH)'
37-
displayName: 'Build Binaries'
26+
bazel build --action_env=PATH=$PATH --action_env=GOPATH=$(go env GOPATH) --action_env=GOCACHE=$(go env GOCACHE) --action_env=SPWD=$(pwd) --spawn_strategy local //release:all
27+
workingDirectory: $(system.defaultWorkingDirectory)
28+
displayName: "Build Binaries"
3829
- script: |
39-
cd ./src/v2ray.com/core || exit 1
4030
echo $RELEASE_TAG
4131
./release/bleedingrelease.sh
42-
workingDirectory: '$(GOPATH)'
43-
displayName: 'Generate Bleeding Edge Release'
32+
workingDirectory: $(system.defaultWorkingDirectory)
33+
displayName: "Generate Bleeding Edge Release"
4434
env:
35+
WORKDIR: $(system.defaultWorkingDirectory)
4536
GITHUB_TOKEN: $(GITHUB_TOKEN)
4637
PRERELEASE: true
4738
RELEASE_TAG: unstable-$(Build.SourceVersion)
@@ -50,13 +41,14 @@ steps:
5041
GITHUB_REPO_OWNER: v2fly
5142
GITHUB_REPO_NAME: v2ray-core
5243
- script: |
53-
cd ./src/v2ray.com/core || exit 1
5444
echo $RELEASE_TAG
5545
./release/tagrelease.sh
56-
workingDirectory: '$(GOPATH)'
57-
displayName: 'Generate Tag Release'
46+
workingDirectory: $(system.defaultWorkingDirectory)
47+
displayName: "Generate Tag Release"
5848
env:
49+
WORKDIR: $(system.defaultWorkingDirectory)
5950
GITHUB_TOKEN: $(GITHUB_TOKEN)
6051
PRERELEASE: true
6152
RELEASE_TAG: unstable-$(Build.SourceVersion)
53+
RELEASE_SHA: $(Build.SourceVersion)
6254
TRIGGER_REASON: $(Build.SourceBranch)

Diff for: infra/bazel/build.bzl

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ def _go_command(ctx):
66
output_file = ctx.actions.declare_file(ctx.attr.os + "/" + ctx.attr.arch + "/" + ctx.attr.ver + "/" + output)
77
pkg = ctx.attr.pkg
88

9-
ld_flags = "-s -w"
9+
ld_flags = "-s -w -buildid="
1010
if ctx.attr.ld:
1111
ld_flags = ld_flags + " " + ctx.attr.ld
1212

Diff for: release/bleedingrelease.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/bash
22

3-
RELBODY="https://www.v2ray.com/chapter_00/01_versions.html"
3+
RELBODY="https://github.com/v2fly/v2ray-core/commit/${RELEASE_SHA}"
44
JSON_DATA=$(echo "{}" | jq -c ".tag_name=\"${RELEASE_TAG}\"")
55
JSON_DATA=$(echo ${JSON_DATA} | jq -c ".prerelease=${PRERELEASE}")
66
JSON_DATA=$(echo ${JSON_DATA} | jq -c ".body=\"${RELBODY}\"")
@@ -28,7 +28,7 @@ function upload() {
2828
uploadfile $DGST
2929
}
3030

31-
ART_ROOT=$GOPATH/src/v2ray.com/core/bazel-bin/release
31+
ART_ROOT=${WORKDIR}/bazel-bin/release
3232

3333
pushd ${ART_ROOT}
3434
{

Diff for: release/tagrelease.sh

+9-14
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ CONST_refs="refs"
44

55
TRIGGER_REASON_A=${TRIGGER_REASON:0:${#CONST_refs}}
66

7-
if [ $TRIGGER_REASON_A != $CONST_refs ]
8-
then
7+
if [ $TRIGGER_REASON_A != $CONST_refs ]; then
98
echo "not a tag: $TRIGGER_REASON_A"
109
exit
1110
fi
@@ -14,21 +13,18 @@ CONST_refsB="refs/tags/"
1413

1514
TRIGGER_REASON_B=${TRIGGER_REASON:0:${#CONST_refsB}}
1615

17-
if [ $TRIGGER_REASON_B != $CONST_refsB ]
18-
then
16+
if [ $TRIGGER_REASON_B != $CONST_refsB ]; then
1917
echo "not a tag (B)"
2018
exit
2119
fi
2220

23-
2421
GITHUB_RELEASE_TAG=${TRIGGER_REASON:${#CONST_refsB}:25}
2522

2623
echo ${GITHUB_RELEASE_TAG}
2724

28-
2925
RELEASE_DATA=$(curl -H "Authorization: token ${GITHUB_TOKEN}" -X GET https://api.github.com/repos/v2fly/v2ray-core/releases/tags/${GITHUB_RELEASE_TAG})
3026
echo $RELEASE_DATA
31-
RELEASE_ID=$(echo $RELEASE_DATA| jq ".id")
27+
RELEASE_ID=$(echo $RELEASE_DATA | jq ".id")
3228

3329
echo $RELEASE_ID
3430

@@ -44,16 +40,15 @@ function uploadfile() {
4440
function upload() {
4541
FILE=$1
4642
DGST=$1.dgst
47-
openssl dgst -md5 $FILE | sed 's/([^)]*)//g' >> $DGST
48-
openssl dgst -sha1 $FILE | sed 's/([^)]*)//g' >> $DGST
49-
openssl dgst -sha256 $FILE | sed 's/([^)]*)//g' >> $DGST
50-
openssl dgst -sha512 $FILE | sed 's/([^)]*)//g' >> $DGST
43+
openssl dgst -md5 $FILE | sed 's/([^)]*)//g' >>$DGST
44+
openssl dgst -sha1 $FILE | sed 's/([^)]*)//g' >>$DGST
45+
openssl dgst -sha256 $FILE | sed 's/([^)]*)//g' >>$DGST
46+
openssl dgst -sha512 $FILE | sed 's/([^)]*)//g' >>$DGST
5147
uploadfile $FILE
5248
uploadfile $DGST
5349
}
5450

55-
ART_ROOT=$GOPATH/src/v2ray.com/core/bazel-bin/release
56-
51+
ART_ROOT=${WORKDIR}/bazel-bin/release
5752

5853
pushd ${ART_ROOT}
5954
{
@@ -83,7 +78,7 @@ pushd ${ART_ROOT}
8378
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-openbsd-32.zip
8479
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-dragonfly-64.zip
8580
} >Release.unsigned.unsorted
86-
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen sort < Release.unsigned.unsorted > Release.unsigned
81+
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen sort <Release.unsigned.unsorted >Release.unsigned
8782

8883
popd
8984

Diff for: release/user-package.sh

+31-37
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#!/usr/bin/env bash
2-
# Bash3 Boilerplate. Copyright (c) 2014, kvz.io
32

43
set -o errexit
54
set -o pipefail
@@ -8,74 +7,72 @@ set -o nounset
87

98
trap 'echo -e "Aborted, error $? in command: $BASH_COMMAND"; trap ERR; exit 1' ERR
109

11-
# Set magic variables for current file & dir
12-
__dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
13-
__file="${__dir}/$(basename "${BASH_SOURCE[0]}")"
14-
__base="$(basename "${__file}" .sh)"
15-
__root="$(cd "$(dirname "${__dir}")" && pwd)" # <-- change this as it depends on your app
16-
17-
1810
NOW=$(date '+%Y%m%d-%H%M%S')
1911
TMP=$(mktemp -d)
2012
SRCDIR=$(pwd)
2113

2214
CODENAME="user"
2315
BUILDNAME=$NOW
24-
VERSIONTAG=$(git describe --tags)
25-
GOPATH=$(go env GOPATH)
2616

27-
cleanup () { rm -rf "$TMP"; }
17+
cleanup() { rm -rf "$TMP"; }
2818
trap cleanup INT TERM ERR
2919

3020
get_source() {
31-
echo ">>> Getting v2ray sources ..."
32-
go get -insecure -v -t v2ray.com/core/...
33-
SRCDIR="$GOPATH/src/v2ray.com/core"
21+
echo ">>> Getting v2ray sources..."
22+
git clone https://github.com/v2fly/v2ray-core.git
23+
pushd v2ray-core
24+
go mod download
3425
}
3526

3627
build_v2() {
37-
pushd "$SRCDIR"
38-
LDFLAGS="-s -w -X v2ray.com/core.codename=${CODENAME} -X v2ray.com/core.build=${BUILDNAME} -X v2ray.com/core.version=${VERSIONTAG}"
28+
if [[ $nosource != 1 ]]; then
29+
pushd ${SRCDIR}/v2ray-core
30+
local VERSIONTAG=$(git describe --abbrev=0 --tags)
31+
else
32+
echo ">>> Use current directory as WORKDIR"
33+
local VERSIONTAG=$(git describe --abbrev=0 --tags)
34+
fi
35+
36+
LDFLAGS="-s -w -buildid= -X v2ray.com/core.codename=${CODENAME} -X v2ray.com/core.build=${BUILDNAME} -X v2ray.com/core.version=${VERSIONTAG}"
3937

4038
echo ">>> Compile v2ray ..."
4139
env CGO_ENABLED=0 go build -o "$TMP"/v2ray"${EXESUFFIX}" -ldflags "$LDFLAGS" ./main
42-
if [[ $GOOS == "windows" ]];then
43-
env CGO_ENABLED=0 go build -o "$TMP"/wv2ray"${EXESUFFIX}" -ldflags "-H windowsgui $LDFLAGS" ./main
40+
if [[ $GOOS == "windows" ]]; then
41+
env CGO_ENABLED=0 go build -o "$TMP"/wv2ray"${EXESUFFIX}" -ldflags "-H windowsgui $LDFLAGS" ./main
4442
fi
4543

4644
echo ">>> Compile v2ctl ..."
4745
env CGO_ENABLED=0 go build -o "$TMP"/v2ctl"${EXESUFFIX}" -tags confonly -ldflags "$LDFLAGS" ./infra/control/main
48-
popd
4946
}
5047

5148
build_dat() {
52-
echo ">>> Downloading newest geoip ..."
49+
echo ">>> Download latest geoip..."
5350
curl -s -L -o "$TMP"/geoip.dat "https://github.com/v2fly/geoip/raw/release/geoip.dat"
5451

55-
echo ">>> Downloading newest geosite ..."
52+
echo ">>> Download latest geosite..."
5653
curl -s -L -o "$TMP"/geosite.dat "https://github.com/v2fly/domain-list-community/raw/release/dlc.dat"
5754
}
5855

5956
copyconf() {
6057
echo ">>> Copying config..."
61-
pushd "$SRCDIR"/release/config
62-
tar c --exclude "*.dat" . | tar x -C "$TMP"
58+
pushd ./release/config
59+
tar c --exclude "*.dat" --exclude "systemd/**" . | tar x -C "$TMP"
6360
}
6461

6562
packzip() {
6663
echo ">>> Generating zip package"
6764
pushd "$TMP"
68-
local PKG=${__dir}/v2ray-custom-${GOARCH}-${GOOS}-${PKGSUFFIX}${NOW}.zip
65+
local PKG=${SRCDIR}/v2ray-custom-${GOARCH}-${GOOS}-${PKGSUFFIX}${NOW}.zip
6966
zip -r "$PKG" .
70-
echo ">>> Generated: $(basename "$PKG")"
67+
echo ">>> Generated: $(basename "$PKG") at $(dirname "$PKG")"
7168
}
7269

7370
packtgz() {
7471
echo ">>> Generating tgz package"
7572
pushd "$TMP"
76-
local PKG=${__dir}/v2ray-custom-${GOARCH}-${GOOS}-${PKGSUFFIX}${NOW}.tar.gz
73+
local PKG=${SRCDIR}/v2ray-custom-${GOARCH}-${GOOS}-${PKGSUFFIX}${NOW}.tar.gz
7774
tar cvfz "$PKG" .
78-
echo ">>> Generated: $(basename "$PKG")"
75+
echo ">>> Generated: $(basename "$PKG") at $(dirname "$PKG")"
7976
}
8077

8178
packtgzAbPath() {
@@ -86,7 +83,6 @@ packtgzAbPath() {
8683
echo ">>> Generated: $ABPATH"
8784
}
8885

89-
9086
pkg=zip
9187
nosource=0
9288
nodat=0
@@ -97,7 +93,7 @@ EXESUFFIX=
9793
PKGSUFFIX=
9894

9995
for arg in "$@"; do
100-
case $arg in
96+
case $arg in
10197
arm*)
10298
GOARCH=$arg
10399
;;
@@ -136,11 +132,11 @@ case $arg in
136132
buildname=*)
137133
BUILDNAME=${arg##buildname=}
138134
;;
139-
esac
135+
esac
140136
done
141137

142138
if [[ $nosource != 1 ]]; then
143-
get_source
139+
get_source
144140
fi
145141

146142
export GOOS GOARCH
@@ -149,21 +145,19 @@ echo "PKG ARGS: pkg=${pkg}"
149145
build_v2
150146

151147
if [[ $nodat != 1 ]]; then
152-
build_dat
148+
build_dat
153149
fi
154150

155151
if [[ $noconf != 1 ]]; then
156-
copyconf
152+
copyconf
157153
fi
158154

159155
if [[ $pkg == "zip" ]]; then
160-
packzip
156+
packzip
161157
elif [[ $pkg == "tgz" ]]; then
162-
packtgz
158+
packtgz
163159
else
164160
packtgzAbPath "$pkg"
165161
fi
166162

167-
168163
cleanup
169-

0 commit comments

Comments
 (0)