release script relocation

This commit is contained in:
Darien Raymond
2017-12-25 21:54:44 +01:00
parent e8cad4a126
commit a82ca019b2
13 changed files with 5 additions and 7 deletions
BIN
View File
Binary file not shown.
+113
View File
@@ -0,0 +1,113 @@
Ý;
CNcn
xn--fiqs8s  10010.com 100offer.com 115.com 123juzi.com 123juzi.net 123u.com 126.com 126.net 127.net 163.com  17173.com  17cdn.com 188.com 1905.com 21cn.com 2288.org 2345.com 263.net 2cto.com 3322.org
35.com
360doc.com
360buy.com 360buyimg.com 360safe.com 36kr.com
39.net 3dmgame.com 3conline.com 4399.com 500d.me
50bang.org 51.la 51credit.com  51cto.com51jingying.com  51job.com 51jobcdn.com 51wendang.com
55.com  51yes.com  55bbs.com
58.com
6rooms.com 71.am 7k7k.com
900.la 9718.com 9xu.com abchina.com acfun.tv acgvideo.com agrantsem.com  aicdn.com aixifan.com alibaba.com
alicdn.comaliimg.com.com
alipay.comalipayobjects.com
aliyun.com aliyuncdn.com aliyuncs.com
allyes.com amap.com
anjuke.com
anquan.org
appinn.com babytree.combabytreeimg.com  baidu.combaiducontent.com baidupcs.combaidustatic.combaifendian.com baifubao.com  baihe.com  baike.com baixing.com baixing.net bankcomm.combankofchina.com bcy.net  bdimg.com bdstatic.com bilibili.com cn.bing.com bitauto.combitautoimg.com bobo.com bootcss.com btcfans.com caiyunapp.com ccb.com cctv.com cctvpic.com  cdn20.com cebbank.com
ch.com chashebao.com
che168.com  china.comchinacache.comchinacache.net chinahr.comchinamobile.com chinapay.comchinatranslation.net
chinaz.com chiphell.com
chouti.com chuangxin.com chuansong.me clouddn.com cloudxns.com cmbchina.com
cnbeta.com cnbetacdn.com cnblogs.com
cnepub.com cnzz.com
coding.net coolapk.com  cqvip.com  csbew.com csdn.net
ctfile.com  ctrip.com
cubead.com  dajie.com dajieimg.com dangdang.com daocloud.io daovoice.io  dbank.com dedecms.com  dgtle.com diandian.com dianping.com
diopic.net  docin.com dockerone.com
dockone.io
donews.com
douban.com  douban.fm doubanio.com
dpfile.com
duomai.com duoshuo.com
duowan.com dxpmedia.com eastday.com
ecitic.com emarbox.comeoeandroid.com etao.com excelhome.net  fanli.com feng.com fengniao.com
fhldns.com foxmail.com geekpark.net geetest.com geilicdn.com  getui.comgoogle-analytics.com growingio.com  gtags.net
gwdang.com
hao123.com hao123img.com
haosou.com  hdslb.com  henha.com henkuai.com  hexun.com hichina.com huanqiu.com hunantv.comhuochepiao.com hupu.com hupucdn.com  huxiu.com iask.com  iciba.com idqqimg.com  ifanr.comifanrusercontent.com
ifanrx.com  ifeng.com ifengimg.com ijinshan.com
ikafan.com
imedao.com imgo.tv  imooc.com  infoq.cominfoqstatic.com  ip138.com ipinyou.com ipip.net
ip-cdn.com  iqiyi.com  irs01.com  it165.net  it168.com  it610.com  iteye.com
ithome.com
itjuzi.com
jandan.net
jd.com jb51.com jia.com jianshu.com
jianshu.io jiasuhui.com jiathis.com jiayuan.comjikexueyuan.com jisuanke.com jmstatic.com jsdelivr.net jstv.com  jumei.com  jyimg.com kaixin001.com
kanimg.com kankanews.com  kejet.net kf5.com
kimiss.com
kouclo.com
koudai.com koudai8.com ku6.com
ku6cdn.com
ku6img.com  kuqin.com lady8844.com  lagou.com
le.com leanote.com leiphone.com leju.com leturich.org letv.com letvcdn.com letvimg.com  liantu.meliaoxuefeng.com liba.com libaclub.com
liepin.com
lietou.com lightonus.com linkvans.com linuxidc.com liuxiaoer.com
lofter.com
lu.com  lufax.com lufaxcdn.com
lvmama.com  lxdns.com  lxway.com
ly.com
mayihr.com mechina.org
mediav.com
meiqia.com meika360.com meilishuo.com meishij.net meituan.com  meizu.com mgtv.com
mi.com miaopai.com miaozhen.com miui.com
mmbang.com mmbang.info
mmstat.com mogucdn.com mogujie.com mop.com
mscbsc.com mukewang.com mydrivers.com myshow360.net mzstatic.com netease.comnewbandeng.com ngacn.cc ntalker.com nvsheng.com  oeeee.com
ol-img.com
oneapm.comonlinedown.netonlinesjtu.com oschina.net
paipai.com
pcbeta.com
pchome.net
pingan.compingplusplus.com
pps.tv psbc.com
pubyun.com qbox.me
qcloud.com  qhimg.com  qhres.comqiaobutang.com
qidian.com qihucdn.com qingcloud.comqingsongchou.com  qiniu.com qiniucdn.com qiniudn.com qiniudns.com qiyi.com qiyipic.com
qtmojo.com
qq.com
qqmail.com  qunar.com qunarzz.com  qzone.com
renren.com
runoob.com ruanmei.comruby-china.org
sandai.net sanguosha.com
sanwen.netsegmentfault.comsf-express.com sharejs.com shmetro.com
shutcm.com
simei8.com sina.com sinaapp.com sinaedge.com sinaimg.com
sinajs.com szzfgjj.com  smzdm.com sohu.com  sogou.com sogoucdn.com soso.com  sspai.com starbaby.cc starbaby.comstaticfile.org stockstar.com
suning.com szfw.org t1y5.com tanx.com
tao123.com
taobao.com taobaocdn.com tbcache.com tencent.com
tenpay.com tenxcloud.com tiebaimg.com tietuku.com
tiexue.net  tmall.com  tmcdn.net topthink.com  tudou.com tudouui.com tuicool.com  tuniu.com tutuapp.com u17.com  useso.com unionpay.comunionpaysecure.com  upyun.com upaiyun.com v2ex.com  v5875.com vamaker.com  vancl.com  vcimg.com vip.comwallstreetcn.com wandoujia.com
wdjimg.com  weand.com webterren.com  weibo.com weicaifu.com weidian.com weiphone.com weiphone.net weixing.com
weiyun.com wonnder.com worktile.com
wooyun.org wrating.com
wscdns.com  wumii.comxiachufang.com  xiami.com xiaokaxiu.com
xiaomi.com xitu.com xinhuanet.com xinshipu.com xiu8.com  xnpic.com
xueqiu.com
xunlei.com xywy.com
yaolan.com  yccdn.com
yeepay.com  yesky.com  yigao.com yihaodian.comyihaodianimg.comyingjiesheng.com yinxiang.com yinyuetai.com yixi.tv  yjbys.com yhd.com
youboy.com  youku.com yunba.io yundaex.com yunshipei.com  yupoo.com  yuzua.com
yy.com
yytcdn.com
zampda.net zastatic.com
zbjimg.com
zdfans.com
zdmimg.com
zhenai.com  zhanqi.tv zhaopin.com  zhihu.com  zhimg.com zhiziyun.com  zjstv.com zhubajie.com
zrblog.net  zuche.com zuchecdn.com
+13
View File
@@ -0,0 +1,13 @@
[Unit]
Description=V2Ray Service
After=network.target
Wants=network.target
[Service]
Type=simple
PIDFile=/var/run/v2ray.pid
ExecStart=/usr/bin/v2ray/v2ray -config /etc/v2ray/config.json
Restart=on-failure
[Install]
WantedBy=multi-user.target
+150
View File
@@ -0,0 +1,150 @@
#!/bin/sh
### BEGIN INIT INFO
# Provides: v2ray
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: V2Ray proxy services
# Description: V2Ray proxy services
### END INIT INFO
# Acknowledgements: Isulew Li <netcookies@gmail.com>
DESC=v2ray
NAME=v2ray
DAEMON=/usr/bin/v2ray/v2ray
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
DAEMON_OPTS="-config /etc/v2ray/config.json"
# Exit if the package is not installed
[ -x $DAEMON ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
#
# Function that starts the daemon/service
#
do_start()
{
mkdir -p /var/log/v2ray
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
# 3 if configuration file not ready for daemon
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --background -m -- $DAEMON_OPTS \
|| return 2
# Add code here, if necessary, that waits for the process to be ready
# to handle requests from services started subsequently which depend
# on this one. As a last resort, sleep for some time.
}
#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Wait for children to finish too if this is a daemon that forks
# and if the daemon is only ever run from this initscript.
# If the above conditions are not satisfied then add some other code
# that waits for the process to drop all resources that could be
# needed by services started subsequently. A last resort is to
# sleep for some time.
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
}
#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
#
# If the daemon can reload its configuration without
# restarting (for example, when it is sent a SIGHUP),
# then implement that here.
#
start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE
return 0
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
status)
status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
;;
reload|force-reload)
#
# If do_reload() is not implemented then leave this commented out
# and leave 'force-reload' as an alias for 'restart'.
#
log_daemon_msg "Reloading $DESC" "$NAME"
do_reload
log_end_msg $?
;;
restart|force-reload)
#
# If the "reload" option is implemented then remove the
# 'force-reload' alias
#
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
echo "Usage: $SCRIPTNAME {start|stop|status|reload|restart|force-reload}" >&2
exit 3
;;
esac
+25
View File
@@ -0,0 +1,25 @@
{
"log": {
"loglevel": "warning"
},
"inbound": {
"port": 1080,
"listen": "127.0.0.1",
"protocol": "socks",
"settings": {
"auth": "noauth",
"udp": false,
"ip": "127.0.0.1"
}
},
"outbound": {
"protocol": "freedom",
"settings": {},
"tag": "direct"
},
"policy": {
"levels": {
"0": {"uplinkOnly": 0}
}
}
}
+59
View File
@@ -0,0 +1,59 @@
{
"log" : {
"access": "/var/log/v2ray/access.log",
"error": "/var/log/v2ray/error.log",
"loglevel": "warning"
},
"inbound": {
"port": 10086,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "23ad6b10-8d1a-40f7-8ad0-e3e35cd38297",
"level": 1,
"alterId": 64
}
]
}
},
"outbound": {
"protocol": "freedom",
"settings": {}
},
"outboundDetour": [
{
"protocol": "blackhole",
"settings": {},
"tag": "blocked"
}
],
"routing": {
"strategy": "rules",
"settings": {
"rules": [
{
"type": "field",
"ip": [
"0.0.0.0/8",
"10.0.0.0/8",
"100.64.0.0/10",
"127.0.0.0/8",
"169.254.0.0/16",
"172.16.0.0/12",
"192.0.0.0/24",
"192.0.2.0/24",
"192.168.0.0/16",
"198.18.0.0/15",
"198.51.100.0/24",
"203.0.113.0/24",
"::1/128",
"fc00::/7",
"fe80::/10"
],
"outboundTag": "blocked"
}
]
}
}
}
+37
View File
@@ -0,0 +1,37 @@
# V2Ray 内核
V2Ray 内核可以单独使用,也可以配置其它程序一起使用。
官网:https://www.v2ray.com/
## 使用方式
### Windows 或 macOS
压缩包内的 config.json 是默认的配置文件,无需修改即可使用。配置文件的详细信息可以在官网找到。
* Windows 中的可执行文件为 v2ray.exe 和 wv2ray.exe。双击即可运行。
* v2ray.exe 是一个命令行程序,启动后可以看到命令行界面。
* wv2ray.exe 是一个后台程序,没有界面,会在后台自动运行。
* macOS 中的可执行文件为 v2ray。右键单击,然后选择使用 Terminal 打开即可。
### Linux
压缩包中包含多个配置文件,按需使用。
可执行程序为 v2ray,启动命令:
```bash
v2ray --config=<full path>
```
## 验证文件
压缩包中的 .sig 文件为 GPG 签名文件,用来验证对应程序文件的真实性。签名公钥可以在下面的链接找到:
https://github.com/v2ray/v2ray-core/blob/master/release/verify/official_release.asc
## 问题反馈
* Github: https://github.com/v2ray/v2ray-core
* Telegram: https://t.me/projectv2ray
+46
View File
@@ -0,0 +1,46 @@
#!/bin/bash
VER=$1
PROJECT=$2
DOTCNT=$(echo $VER | grep -o "\." | wc -l)
if [ "$DOTCNT" -gt 1 ]; then
PRE="true"
else
PRE="false"
fi
if [ -z "$PROJECT" ]; then
echo "Project not specified. Exiting..."
exit 0
fi
echo Creating a new release: $VER
IFS="." read -a PARTS <<< "$VER"
MAJOR=${PARTS[0]}
MINOR=${PARTS[1]}
MINOR=$((MINOR+1))
VERN=${MAJOR}.${MINOR}
pushd $GOPATH/src/v2ray.com/core
echo "Adding a new tag: " "v$VER"
git tag -s -a "v$VER" -m "Version ${VER}"
sed -i '' "s/\(version *= *\"\).*\(\"\)/\1$VERN\2/g" core.go
echo "Commiting core.go (may not necessary)"
git commit core.go -S -m "Update version"
echo "Pushing changes"
git push --follow-tags
popd
echo "Launching build machine."
DIR="$(dirname "$0")"
RAND="$(openssl rand -hex 5)"
gcloud compute instances create "v2raycore-${RAND}" \
--machine-type=n1-highcpu-2 \
--metadata=release_tag=v${VER},prerelease=${PRE} \
--metadata-from-file=startup-script=${DIR}/release-ci.sh \
--zone=us-central1-c \
--project ${PROJECT} \
--scopes "https://www.googleapis.com/auth/compute,https://www.googleapis.com/auth/devstorage.read_write" \
+107
View File
@@ -0,0 +1,107 @@
#!/bin/bash
set -x
apt-get update
apt-get -y install jq git file p7zip-full
function getattr() {
curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/$2/attributes/$1
}
GITHUB_TOKEN=$(getattr "github_token" "project")
RELEASE_TAG=$(getattr "release_tag" "instance")
PRERELEASE=$(getattr "prerelease" "instance")
DOCKER_HUB_KEY=$(getattr "docker_hub_key" "project")
SIGN_KEY_PATH=$(getattr "sign_key_path" "project")
SIGN_KEY_PASS=$(getattr "sign_key_pass" "project")
VUSER=$(getattr "b_user" "project")
mkdir -p /v2ray/build
gsutil cp ${SIGN_KEY_PATH} /v2ray/build/sign_key.asc
echo ${SIGN_KEY_PASS} | gpg --passphrase-fd 0 --batch --import /v2ray/build/sign_key.asc
curl -L -o /v2ray/build/releases https://api.github.com/repos/v2ray/v2ray-core/releases
GO_INSTALL=golang.tar.gz
curl -L -o ${GO_INSTALL} https://storage.googleapis.com/golang/go1.9.2.linux-amd64.tar.gz
tar -C /usr/local -xzf ${GO_INSTALL}
export PATH=$PATH:/usr/local/go/bin
mkdir -p /v2ray/src
export GOPATH=/v2ray
go get -u v2ray.com/core/...
go get -u v2ray.com/ext/...
pushd $GOPATH/src/v2ray.com/core/
git checkout tags/${RELEASE_TAG}
popd
go install v2ray.com/ext/tools/build/vbuild
export TRAVIS_TAG=${RELEASE_TAG}
export GPG_SIGN_PASS=${SIGN_KEY_PASS}
export V_USER=${VUSER}
$GOPATH/bin/vbuild --os=windows --arch=x86 --zip --sign #--encrypt
$GOPATH/bin/vbuild --os=windows --arch=x64 --zip --sign #--encrypt
$GOPATH/bin/vbuild --os=macos --arch=x64 --zip --sign #--encrypt
$GOPATH/bin/vbuild --os=linux --arch=x86 --zip --sign #--encrypt
$GOPATH/bin/vbuild --os=linux --arch=x64 --zip --sign #--encrypt
$GOPATH/bin/vbuild --os=linux --arch=arm --zip --sign #--encrypt
$GOPATH/bin/vbuild --os=linux --arch=arm64 --zip --sign #--encrypt
$GOPATH/bin/vbuild --os=linux --arch=mips64 --zip --sign #--encrypt
$GOPATH/bin/vbuild --os=linux --arch=mips64le --zip --sign #--encrypt
$GOPATH/bin/vbuild --os=linux --arch=mips --zip --sign #--encrypt
$GOPATH/bin/vbuild --os=linux --arch=mipsle --zip --sign #--encrypt
$GOPATH/bin/vbuild --os=linux --arch=s390x --zip --sign #--encrypt
$GOPATH/bin/vbuild --os=freebsd --arch=x86 --zip --sign #--encrypt
$GOPATH/bin/vbuild --os=freebsd --arch=amd64 --zip --sign #--encrypt
$GOPATH/bin/vbuild --os=openbsd --arch=x86 --zip --sign #--encrypt
$GOPATH/bin/vbuild --os=openbsd --arch=amd64 --zip --sign #--encrypt
#RELBODY=$(cat $GOPATH/bin/metadata.txt | jq -R -s -c .)
JSON_DATA=$(echo "{}" | jq -c ".tag_name=\"${RELEASE_TAG}\"")
JSON_DATA=$(echo ${JSON_DATA} | jq -c ".prerelease=${PRERELEASE}")
#JSON_DATA=$(echo ${JSON_DATA} | jq -c ".body=${RELBODY}")
RELEASE_ID=$(curl --data "${JSON_DATA}" -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/v2ray/v2ray-core/releases | jq ".id")
function upload() {
FILE=$1
CTYPE=$(file -b --mime-type $FILE)
curl -H "Authorization: token ${GITHUB_TOKEN}" -H "Content-Type: ${CTYPE}" --data-binary @$FILE "https://uploads.github.com/repos/v2ray/v2ray-core/releases/${RELEASE_ID}/assets?name=$(basename $FILE)"
}
upload $GOPATH/bin/v2ray-macos.zip
upload $GOPATH/bin/v2ray-windows-64.zip
upload $GOPATH/bin/v2ray-windows-32.zip
upload $GOPATH/bin/v2ray-linux-64.zip
upload $GOPATH/bin/v2ray-linux-32.zip
upload $GOPATH/bin/v2ray-linux-arm.zip
upload $GOPATH/bin/v2ray-linux-arm64.zip
upload $GOPATH/bin/v2ray-linux-mips64.zip
upload $GOPATH/bin/v2ray-linux-mips64le.zip
upload $GOPATH/bin/v2ray-linux-mips.zip
upload $GOPATH/bin/v2ray-linux-mipsle.zip
upload $GOPATH/bin/v2ray-linux-s390x.zip
upload $GOPATH/bin/v2ray-freebsd-64.zip
upload $GOPATH/bin/v2ray-freebsd-32.zip
upload $GOPATH/bin/v2ray-openbsd-64.zip
upload $GOPATH/bin/v2ray-openbsd-32.zip
upload $GOPATH/bin/metadata.txt
if [[ "${PRERELEASE}" == "false" ]]; then
gsutil cp $GOPATH/bin/v2ray-${RELEASE_TAG}-linux-64/v2ray gs://v2ray-docker/
gsutil cp $GOPATH/bin/v2ray-${RELEASE_TAG}-linux-64/v2ctl gs://v2ray-docker/
gsutil cp $GOPATH/bin/v2ray-${RELEASE_TAG}-linux-64/geoip.dat gs://v2ray-docker/
gsutil cp $GOPATH/bin/v2ray-${RELEASE_TAG}-linux-64/geosite.dat gs://v2ray-docker/
DOCKER_HUB_API=https://registry.hub.docker.com/u/v2ray/official/trigger/${DOCKER_HUB_KEY}/
curl -H "Content-Type: application/json" --data '{"build": true}' -X POST "${DOCKER_HUB_API}"
fi
shutdown -h now
+52
View File
@@ -0,0 +1,52 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: GPGTools - https://gpgtools.org
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
80yAOiqyRyAtruVaY72n
=CVru
-----END PGP PUBLIC KEY BLOCK-----