Make 7.6.7 default and support multi-arch build in github action

Resolve #99, #128, #258
This commit is contained in:
Hagb
2023-06-25 00:31:43 +08:00
parent b93d0d5aaf
commit 59265bfd7d
17 changed files with 103 additions and 42 deletions

View File

@@ -4,6 +4,7 @@ on: workflow_dispatch
env:
IMAGE_NAME: hagb/docker-easyconnect
ARCHS: mips64le arm64 i386 amd64
jobs:
build:
@@ -24,25 +25,83 @@ jobs:
run: |
docker-build() {
#docker pull $1
docker build -t $1 --build-arg BUILD_ENV=actions "${@:2}"
docker buildx build --build-arg BUILD_ENV=actions "$@"
}
pirefix=""
latest_name="latest"
if [ "$(git branch --show-current)" = develop ]; then prefix=dev- ; latest_name=dev ; fi
branch="$(git branch --show-current)"
case "$branch" in
master) prefix= ;;
develop) prefix=dev- ;;
*) prefix="$branch"- ;;
esac
docker-build hagb/docker-easyconnect:build -f Dockerfile.build .
build() {
for ver in 7.6.3 7.6.7; do
docker-build --platform "$1" -t hagb/docker-easyconnect:build -f Dockerfile.build $(cat build-args/$ver-"$1".txt) .
docker-build --platform "$1" -t ${{ env.IMAGE_NAME }}:${prefix}$ver-"$1" $(cat build-args/$ver-"$1".txt) -f Dockerfile .
docker-build --platform "$1" -t ${{ env.IMAGE_NAME }}:${prefix}vncless-$ver-"$1" $(cat build-args/$ver-"$1".txt) -f Dockerfile.vncless .
done
docker-build ${{ env.IMAGE_NAME }}:${prefix}cli -f Dockerfile.cli .
if [ amd64 = "$1" ]; then
docker-build -t ${{ env.IMAGE_NAME }}:${prefix}cli -f Dockerfile.cli .
fi
}
docker-build ${{ env.IMAGE_NAME }}:${prefix}7.6.3 --build-arg EC_URL=$(cat ec_urls/7.6.3.txt) -f Dockerfile .
docker-build ${{ env.IMAGE_NAME }}:${prefix}7.6.7 --build-arg EC_URL=$(cat ec_urls/7.6.7.txt) -f Dockerfile .
sudo apt-get -y install binfmt-support qemu-user-static
docker-build ${{ env.IMAGE_NAME }}:${prefix}vncless-7.6.3 --build-arg EC_URL=$(cat ec_urls/7.6.3.txt) -f Dockerfile.vncless .
docker-build ${{ env.IMAGE_NAME }}:${prefix}vncless-7.6.7 --build-arg EC_URL=$(cat ec_urls/7.6.7.txt) -f Dockerfile.vncless .
for arch in ${{ env.ARCHS }}; do
build $arch
done
docker tag ${{ env.IMAGE_NAME }}:${prefix}7.6.3 ${{ env.IMAGE_NAME }}:${latest_name}
docker image rm hagb/docker-easyconnect:build
- name: Push Docker image
run: |
branch="$(git branch --show-current)"
case "$branch" in
master)
prefix=
default=latest
;;
develop)
prefix=dev-
default=dev
;;
*)
prefix="$branch"-
default="$branch"
;;
esac
token="$( curl -sH "Content-Type: application/json" \
-X POST -d "{\"username\": \"${{ secrets.DOCKERHUB_USERNAME }}\", \"password\": \"${{ secrets.DOCKERHUB_TOKEN }}\"}" \
https://hub.docker.com/v2/users/login/ |
jq -r .token )"
docker push --all-tags ${{ env.IMAGE_NAME }}
for ver in 7.6.3 7.6.7; do
for vncless in "" vncless-; do
for arch in ${{ env.ARCHS }}; do
docker manifest create ${{ env.IMAGE_NAME }}:${prefix}${vncless}${ver} --amend ${{ env.IMAGE_NAME }}:${prefix}${vncless}${ver}-${arch}
done
docker manifest push ${{ env.IMAGE_NAME }}:${prefix}${vncless}${ver}
if [ 7.6.7 = $ver ]; then
if [ -n "$vncless" ]; then
tag=${prefix}vncless
else
tag=$default
fi
for arch in ${{ env.ARCHS }}; do
docker manifest create ${{ env.IMAGE_NAME }}:$tag --amend ${{ env.IMAGE_NAME }}:${prefix}${vncless}${ver}-${arch}
done
docker manifest push ${{ env.IMAGE_NAME }}:$tag
fi
for arch in ${{ env.ARCHS }}; do
curl -sH "Content-Type: application/json" -X DELETE -H "Authorization: JWT $token" \
https://hub.docker.com/v2/repositories/${{ env.IMAGE_NAME }}/tags/${prefix}${vncless}${ver}-${arch}/
done
done
done

View File

@@ -19,7 +19,7 @@
``` bash
docker run --device /dev/net/tun --cap-add NET_ADMIN -ti -p 127.0.0.1:1080:1080 -p 127.0.0.1:8888:8888 -e EC_VER=7.6.3 -e CLI_OPTS="-d vpnaddress -u username -p password" hagb/docker-easyconnect:cli
```
其中 `-e EC_VER=7.6.3` 表示使用 `7.6.3` 版本的 EasyConnect请根据实际情况修改版本号
其中 `-e EC_VER=7.6.7` 表示使用 `7.6.7` 版本的 EasyConnect请根据实际情况修改版本号(选择 `7.6.7` 或 `7.6.3`
3. 根据提示输入服务器地址、登录凭据;
4. 浏览器或其他支持的应用可配置socks5代理可以通过插件配置地址 `127.0.0.1`, 端口 `1080`;也可以使用 http 代理,地址 `127.0.0.1`, 端口 `8888`。
5. 如需为 socks5 设置密码,可在 `docker run` 命令后追加 `-e SOCKS_USER="youruser" -e SOCKS_PASSWD="thepassword"`。
@@ -27,7 +27,7 @@
### 图形界面版
1. [安装Docker并运行](https://docs.docker.com/get-docker/)
2. 在终端输入: `docker run --device /dev/net/tun --cap-add NET_ADMIN -ti -e PASSWORD=xxxx -v $HOME/.ecdata:/root -p 127.0.0.1:5901:5901 -p 127.0.0.1:1080:1080 -p 127.0.0.1:8888:8888 hagb/docker-easyconnect:7.6.3`(末尾 EasyConnect 版本号 `7.6.3` 请根据实际情况修改);
2. 在终端输入: `docker run --device /dev/net/tun --cap-add NET_ADMIN -ti -e PASSWORD=xxxx -v $HOME/.ecdata:/root -p 127.0.0.1:5901:5901 -p 127.0.0.1:1080:1080 -p 127.0.0.1:8888:8888 hagb/docker-easyconnect:7.6.7`(末尾 EasyConnect 版本号 `7.6.7` 请根据实际情况修改);
3. 使用vnc客户端连接vnc 地址127.0.0.1, 端口: 5901, 密码 xxxx ;
4. 成功连上后你应该能看到easyconnect的登录窗口填写并登录easyconnect
5. 浏览器或其他支持的应用可配置socks5代理可以通过插件配置地址 `127.0.0.1`, 端口 `1080`;也可以使用 http 代理,地址 `127.0.0.1`, 端口 `8888`。
@@ -37,7 +37,7 @@
## EasyConnect 版本
[`ec_urls`](ec_urls) 目录中以`版本号.txt`为文件名的文本文件保存了下载链接。(欢迎提交 issue 或 PR
[`build-args`](./build-args) 目录中以`版本号-架构.txt`为文件名的文本文件中包含下载链接。(欢迎提交 issue 或 PR
### 已经过测试的版本
@@ -59,9 +59,9 @@ docker pull hagb/docker-easyconnect:TAG
其中 TAG 可以是如下值(不带 VNC 服务端的 image 比带 VNC 服务端的 image 小):
- `latest`: 默认值,带 VNC 服务端的`7.6.3`版 image
- `latest`: 默认值,带 VNC 服务端的`7.6.7`版 image
- `cli`: 多版本(`7.6.3`, `7.6.7`, `7.6.8`)纯命令行版
- `vncless`: 不带 VNC 服务端的`7.6.3`版 image
- `vncless`: 不带 VNC 服务端的`7.6.7`版 image
- `7.6.3`: 带 VNC 服务端的`7.6.3`版 image
- `vncless-7.6.3`: 不带 VNC 服务端的`7.6.3`版 image
- `7.6.7`: 带 VNC 服务端的`7.6.7`版 image

View File

@@ -0,0 +1 @@
--build-arg EC_URL=http://download.sangfor.com.cn/download/product/sslvpn/pkg/linux_01/EasyConnect_x64.deb

View File

@@ -0,0 +1 @@
--build-arg EC_URL=https://download.sangfor.com.cn/download/product/sslvpn/SSLVPN%E4%BF%A1%E5%88%9B%E5%AE%A2%E6%88%B7%E7%AB%AF/%E7%BB%9F%E4%BF%A1UOS%20%E9%B2%B2%E9%B9%8F%20SSL%20VPN%E5%AE%A2%E6%88%B7%E7%AB%AF.zip --build-arg EC_DEB_PATH=UOS_EasyConnect_arm64.deb

View File

@@ -0,0 +1 @@
--build-arg EC_URL=http://download.sangfor.com.cn/download/product/sslvpn/pkg/linux_01/EasyConnect_x86.deb

View File

@@ -0,0 +1 @@
--build-arg EC_URL=https://download.sangfor.com.cn/download/product/sslvpn/SSLVPN%E4%BF%A1%E5%88%9B%E5%AE%A2%E6%88%B7%E7%AB%AF/%E7%BB%9F%E4%BF%A1UOS%20%E9%BE%99%E8%8A%AF%20SSL%20VPN%E5%AE%A2%E6%88%B7%E7%AB%AF.zip --build-arg EC_DEB_PATH=02-升级包及安装文件/EasyConnect.deb

View File

@@ -0,0 +1 @@
--build-arg EC_URL=http://download.sangfor.com.cn/download/product/sslvpn/pkg/linux_01/EasyConnect_x64.deb --build-arg EC_HOST=amd64

View File

@@ -0,0 +1 @@
--build-arg EC_URL=http://download.sangfor.com.cn/download/product/sslvpn/pkg/linux_767/EasyConnect_x64_7_6_7_3.deb

View File

@@ -0,0 +1 @@
--build-arg EC_URL=https://download.sangfor.com.cn/download/product/sslvpn/SSLVPN%E4%BF%A1%E5%88%9B%E5%AE%A2%E6%88%B7%E7%AB%AF/%E7%BB%9F%E4%BF%A1UOS%20%E6%B5%B7%E6%80%9D%E9%BA%92%E9%BA%9F990%20SSL%20VPN%E5%AE%A2%E6%88%B7%E7%AB%AF.zip --build-arg EC_DEB_PATH=02-升级包及安装文件/EasyConnect_UOS_arm64-20220302.deb

View File

@@ -0,0 +1 @@
--build-arg EC_URL=http://download.sangfor.com.cn/download/product/sslvpn/pkg/linux_767/EasyConnect_x86_7_6_7_3.deb

View File

@@ -0,0 +1 @@
--build-arg https://download.sangfor.com.cn/download/product/sslvpn/SSLVPN%E4%BF%A1%E5%88%9B%E5%AE%A2%E6%88%B7%E7%AB%AF/%E7%BB%9F%E4%BF%A1UOS%20%E9%BE%99%E8%8A%AF%20SSL%20VPN%E5%AE%A2%E6%88%B7%E7%AB%AF%EF%BC%88M767%E5%8F%8A%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC%EF%BC%89.zip --build-arg EC_DEB_PATH=02-升级包及安装文件/EasyConnect_mips64.deb

View File

@@ -0,0 +1 @@
--build-arg EC_URL=http://download.sangfor.com.cn/download/product/sslvpn/pkg/linux_767/EasyConnect_x64_7_6_7_3.deb --build-arg EC_HOST=amd64

View File

@@ -8,14 +8,10 @@ else
busybox unzip -p EasyConnect.zip "${EC_DEB_PATH}" > EasyConnect.deb &&
rm EasyConnect.zip
fi &&
if is_echost_foreign; then
dpkg-deb -R EasyConnect.deb / &&
/DEBIAN/postinst &&
rm -r /DEBIAN &&
extra_bins=EasyMonitor ./build-scripts/mk-qemu-wrapper.sh
else
dpkg -i EasyConnect.deb
fi &&
dpkg-deb -R EasyConnect.deb / &&
/DEBIAN/postinst &&
rm -r /DEBIAN &&
extra_bins=EasyMonitor ./build-scripts/mk-qemu-wrapper.sh
rm EasyConnect.deb &&
rm -f /usr/share/sangfor/EasyConnect/resources/conf/easy_connect.json &&

View File

@@ -12,7 +12,7 @@
- `EC_DEB_PATH`(仅适用于图形界面版): 默认为空。非空时表示 `EC_URL` 是一个 zip 包的地址(见<https://github.com/Hagb/docker-easyconnect/issues/25#issuecomment-1233369467>),而 `EC_DEB_PATH` 则是 zip 包中的 EasyConnect 的 deb 包的路径。
- `EC_HOST`: EasyConnect deb 包的架构,默认为空表示 deb 包架构与容器运行的架构一致;以 Debian 包管理器的架构名可准,可选项为:`aarch64``amd64``armel``armhf``i386``misp64el`
- `EC_URL`(仅适用于图形界面版): EasyConnect 的 deb 包下载地址(`EC_DEB_PATH` 非空时则是包含 deb 包的 zip 包下载地址),各版本的下载地址可见于 [../ec\_urls/](../ec_urls/)。
- `EC_URL`(仅适用于图形界面版): EasyConnect 的 deb 包下载地址(`EC_DEB_PATH` 非空时则是包含 deb 包的 zip 包下载地址),各版本的下载地址可见于 [../build-args/](../build-args/)。
- `ELECTRON_URL`(仅适用于图形界面版): [electron](https://github.com/electron/electron/releases) 的下载地址,用于在非 amd64 架构中将 EasyConnect 前端自带的 electron 替换成可原生执行的 electron使用 qemu 时原生 electron 可以减小翻译开销;来自 EasyConnect 的 electron 在 Debian bookworm 上有段错误的现象),有一些注意事项:
- `armel``armhf``arm64``mips64el``amd64``i386` 架构无需设定该参数,构建脚本中已经预设(有特殊需要可以使用该参数覆盖预设值)
@@ -41,8 +41,8 @@
``` bash
git clone https://github.com/hagb/docker-easyconnect.git
cd docker-easyconnect
docker image build -f Dockerfile.build -t hagb/docker-easyconnect:build .
docker image build --tag hagb/docker-easyconnect -f Dockerfile.cli .
docker image build -f Dockerfile.build -t hagb/docker-easyconnect:build --build-arg EC_HOST=amd64 .
docker image build --tag hagb/docker-easyconnect -f Dockerfile.cli --build-arg EC_HOST=amd64 .
```
### 带 VNC 服务端
@@ -50,9 +50,8 @@ docker image build --tag hagb/docker-easyconnect -f Dockerfile.cli .
``` bash
git clone https://github.com/hagb/docker-easyconnect.git
cd docker-easyconnect
docker image build -f Dockerfile.build -t hagb/docker-easyconnect:build .
EC_VER=7.6.3 # 此变量填写 ec_urls 文件夹中的版本,`7.6.3`或`7.6.7`
docker image build --build-arg EC_URL=$(cat ec_urls/${EC_VER}.txt) --tag hagb/docker-easyconnect -f Dockerfile .
docker image build $(cat build-args/7.6.7-amd64.txt) -f Dockerfile.build -t hagb/docker-easyconnect:build .
docker image build $(cat build-args/7.6.7-amd64.txt) --tag hagb/docker-easyconnect -f Dockerfile .
```
### 使用 X11 socket 而无 VNC 服务端
@@ -60,8 +59,7 @@ docker image build --build-arg EC_URL=$(cat ec_urls/${EC_VER}.txt) --tag hagb/do
``` bash
git clone https://github.com/hagb/docker-easyconnect.git
cd docker-easyconnect
docker image build -f Dockerfile.build -t hagb/docker-easyconnect:build .
EC_VER=7.6.3 # 此变量填写 ec_urls 文件夹中的版本,`7.6.3`或`7.6.7`
docker image build --build-arg EC_URL=$(cat ec_urls/${EC_VER}.txt) --tag hagb/docker-easyconnect -f Dockerfile.vncless .
docker image build $(cat build-args/7.6.7-amd64.txt) -f Dockerfile.build -t hagb/docker-easyconnect:build .
docker image build $(cat build-args/7.6.7-amd64.txt) --tag hagb/docker-easyconnect -f Dockerfile.vncless .
```

View File

@@ -137,19 +137,19 @@ ip rule add iif lo table 3
### 纯命令行
下列例子可启动纯命令行的 EasyConnect `7.6.3``-e EC_VER=7.6.3`),并且退出后不会自动重启(`-e EXIT=1`)。
下列例子可启动纯命令行的 EasyConnect `7.6.7``-e EC_VER=7.6.7`),并且退出后不会自动重启(`-e EXIT=1`)。
``` bash
touch ~/.easyconn
docker run --device /dev/net/tun --cap-add NET_ADMIN -ti -v $HOME/.easyconn:/root/.easyconn -e EC_VER=7.6.3 -e EXIT=1 -p 127.0.0.1:1080:1080 hagb/docker-easyconnect:cli
docker run --device /dev/net/tun --cap-add NET_ADMIN -ti -v $HOME/.easyconn:/root/.easyconn -e EC_VER=7.6.7 -e EXIT=1 -p 127.0.0.1:1080:1080 hagb/docker-easyconnect:cli
```
### tinyproxy
下列例子可启动纯命令行的 EasyConnect `7.6.3` 并且对宿主主机提供 http 代理
下列例子可启动纯命令行的 EasyConnect `7.6.7` 并且对宿主主机提供 http 代理
``` bash
$ touch ~/.easyconn
$ docker run --device /dev/net/tun --cap-add NET_ADMIN -ti -v $HOME/.easyconn:/root/.easyconn -p 127.0.0.1:8888:8888 -e EC_VER=7.6.3 ztongxue/docker-easyconnect-tinyproxy:cli
$ docker run --device /dev/net/tun --cap-add NET_ADMIN -ti -v $HOME/.easyconn:/root/.easyconn -p 127.0.0.1:8888:8888 -e EC_VER=7.6.7 ztongxue/docker-easyconnect-tinyproxy:cli
```
程序内直接使用代理地址 127.0.0.1:8888 即可。例如在 python requests 中使用:
@@ -160,16 +160,16 @@ requests.get('https://www.hao123.com', proxies={'http': '127.0.0.1:8888'})
你也可以改成你需要宿主主机代理端口,例如你想对程序暴露的代理端口为 8118 ,只需要在启动容器的时候,指定一下端口即可。👇
```
$ docker run --device /dev/net/tun --cap-add NET_ADMIN -ti -v $HOME/.easyconn:/root/.easyconn -p 127.0.0.1:8118:8888 -e EC_VER=7.6.3 ztongxue/docker-easyconnect-tinyproxy:cli
$ docker run --device /dev/net/tun --cap-add NET_ADMIN -ti -v $HOME/.easyconn:/root/.easyconn -p 127.0.0.1:8118:8888 -e EC_VER=7.6.7 ztongxue/docker-easyconnect-tinyproxy:cli
```
### X11 socket
在当前桌面环境中启动 EasyConnect `7.6.3` 前端,并且该前端退出后不会自动重启(`-e EXIT=1`EasyConnect 要进行浏览器弹窗时会弹出含链接的文本框(`-e URLWIN=1`)。
在当前桌面环境中启动 EasyConnect 前端,并且该前端退出后不会自动重启(`-e EXIT=1`EasyConnect 要进行浏览器弹窗时会弹出含链接的文本框(`-e URLWIN=1`)。
``` bash
xhost +LOCAL:
docker run --device /dev/net/tun --cap-add NET_ADMIN -ti -v /tmp/.X11-unix:/tmp/.X11-unix -v $HOME/.Xauthority:/root/.Xauthority -e EXIT=1 -e DISPLAY=$DISPLAY -e URLWIN=1 -e TYPE=x11 -v $HOME/.ecdata:/root -p 127.0.0.1:1080:1080 hagb/docker-easyconnect:vncless-7.6.3
docker run --device /dev/net/tun --cap-add NET_ADMIN -ti -v /tmp/.X11-unix:/tmp/.X11-unix -v $HOME/.Xauthority:/root/.Xauthority -e EXIT=1 -e DISPLAY=$DISPLAY -e URLWIN=1 -e TYPE=x11 -v $HOME/.ecdata:/root -p 127.0.0.1:1080:1080 hagb/docker-easyconnect:vncless
xhost -LOCAL:
```

View File

@@ -1 +0,0 @@
http://download.sangfor.com.cn/download/product/sslvpn/pkg/linux_01/EasyConnect_x64.deb

View File

@@ -1 +0,0 @@
http://download.sangfor.com.cn/download/product/sslvpn/pkg/linux_767/EasyConnect_x64_7_6_7_3.deb