Compare commits

..

2 Commits

Author SHA1 Message Date
Kevin Yue
167a8f4037 Release 2.1.0 2024-02-26 23:45:37 +08:00
Kevin Yue
47776d54d9 Improve packaging (#328)
* Add gpgui-helper (#326)

* Add packaging
2024-02-26 23:33:39 +08:00
8 changed files with 125 additions and 144 deletions

View File

@@ -35,23 +35,25 @@ jobs:
- uses: pnpm/action-setup@v2
with:
version: 8
- name: Prepare workspace
run: rm -rf source && mkdir source
- name: Checkout GlobalProtect-openconnect
uses: actions/checkout@v3
with:
token: ${{ secrets.GH_PAT }}
repository: yuezk/GlobalProtect-openconnect
path: gp
path: source/gp
- name: Create tarball
run: |
cd gp
cd source/gp
make tarball
- name: Upload tarball
uses: actions/upload-artifact@v3
with:
name: artifact-tarball
name: artifact-source
if-no-files-found: error
path: |
gp/.build/tarball/*.tar.gz
source/gp/.build/tarball/*.tar.gz
build-deb:
needs:
@@ -61,38 +63,30 @@ jobs:
matrix:
os: ${{fromJson(needs.setup-matrix.outputs.matrix)}}
runs-on: ${{ matrix.os }}
container:
image: yuezk/gpdev:main
credentials:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
steps:
- name: Prepare workspace
run: rm -rf build-deb && mkdir build-deb
- name: Download tarball
uses: actions/download-artifact@v3
with:
name: artifact-tarball
- name: Build DEB package
name: artifact-source
path: build-deb
- name: Docker Login
run: echo ${{ secrets.DOCKER_HUB_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
- name: Build DEB package in Docker
run: |
tar -xzf *.tar.gz
cd globalprotect-openconnect-*
make deb BUILD_FE=0
- name: Install DEB package
docker run --rm -v $(pwd)/build-deb:/deb yuezk/gpdev:deb-builder
- name: Install DEB package in Docker
run: |
cd globalprotect-openconnect-*/
sudo dpkg -i .build/deb/*.deb
gpclient --version
gpservice --version
gpauth --version
gpgui-helper --version
docker run --rm -v $(pwd)/build-deb:/deb yuezk/gpdev:deb-builder \
bash -c "sudo dpkg -i /deb/*.deb; gpclient --version; gpservice --version; gpauth --version; gpgui-helper --version;"
- name: Upload DEB package
uses: actions/upload-artifact@v3
with:
name: artifact-deb-${{ matrix.os }}
if-no-files-found: error
path: |
globalprotect-openconnect-*/.build/deb/*.deb
build-deb/*.deb
build-rpm:
needs:
@@ -102,40 +96,30 @@ jobs:
matrix:
os: ${{fromJson(needs.setup-matrix.outputs.matrix)}}
runs-on: ${{ matrix.os }}
container:
image: yuezk/gpdev:rpm-builder
credentials:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
steps:
- name: Prepare workspace
run: rm -rf build-rpm && mkdir build-rpm
- name: Download tarball
uses: actions/download-artifact@v3
with:
name: artifact-tarball
- name: Build RPM package
name: artifact-source
path: build-rpm
- name: Docker Login
run: echo ${{ secrets.DOCKER_HUB_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
- name: Build RPM package in Docker
run: |
tar -xzf globalprotect-openconnect-*.tar.gz
cd globalprotect-openconnect-*/
make rpm BUILD_FE=0
- name: Install RPM package
docker run --rm -v $(pwd)/build-rpm:/rpm yuezk/gpdev:rpm-builder
- name: Install RPM package in Docker
run: |
cd globalprotect-openconnect-*/
ls -l .build/rpm
sudo rpm -i ".build/rpm/globalprotect-openconnect*.$(uname -m).rpm"
gpclient --version
gpservice --version
gpauth --version
gpgui-helper --version
docker run --rm -v $(pwd)/build-rpm:/rpm yuezk/gpdev:rpm-builder \
bash -c "sudo rpm -i /rpm/*.$(uname -m).rpm; gpclient --version; gpservice --version; gpauth --version; gpgui-helper --version;"
- name: Upload RPM package
uses: actions/upload-artifact@v3
with:
name: artifact-rpm-${{ matrix.os }}
if-no-files-found: error
path: |
globalprotect-openconnect-*/.build/rpm/*.rpm
build-rpm/*.rpm
build-pkgbuild:
needs:
@@ -145,38 +129,30 @@ jobs:
matrix:
os: ${{fromJson(needs.setup-matrix.outputs.matrix)}}
runs-on: ${{ matrix.os }}
container:
image: yuezk/gpdev:pkgbuild
credentials:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
steps:
- name: Prepare workspace
run: rm -rf build-pkgbuild && mkdir build-pkgbuild
- name: Download tarball
uses: actions/download-artifact@v3
with:
name: artifact-tarball
- name: Build PKGBUILD package
name: artifact-source
path: build-pkgbuild
- name: Docker Login
run: echo ${{ secrets.DOCKER_HUB_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
- name: Build PKGBUILD package in Docker
run: |
tar -xzf globalprotect-openconnect-*.tar.gz
cd globalprotect-openconnect-*/
make pkgbuild BUILD_FE=0
- name: Install PKGBUILD package
docker run --rm -v $(pwd)/build-pkgbuild:/pkgbuild yuezk/gpdev:pkgbuild
- name: Install PKGBUILD package in Docker
run: |
cd globalprotect-openconnect-*/
sudo pacman -U --noconfirm .build/pkgbuild/*.pkg.tar.zst
gpclient --version
gpservice --version
gpauth --version
gpgui-helper --version
docker run --rm -v $(pwd)/build-pkgbuild:/pkgbuild yuezk/gpdev:pkgbuild \
bash -c "sudo pacman -U --noconfirm /pkgbuild/*.pkg.tar.zst; gpclient --version; gpservice --version; gpauth --version; gpgui-helper --version;"
- name: Upload PKGBUILD package
uses: actions/upload-artifact@v3
with:
name: artifact-pkgbuild-${{ matrix.os }}
if-no-files-found: error
path: |
globalprotect-openconnect-*/.build/pkgbuild/*.pkg.tar.zst
build-pkgbuild/*.pkg.tar.zst
build-binary:
needs:
@@ -186,39 +162,33 @@ jobs:
matrix:
os: ${{fromJson(needs.setup-matrix.outputs.matrix)}}
runs-on: ${{ matrix.os }}
container:
image: yuezk/gpdev:main
credentials:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
steps:
- name: Download tarball
uses: actions/download-artifact@v3
with:
name: artifact-tarball
- name: Build binary using OFFLINE mode
run: |
tar -xzf globalprotect-openconnect-*.tar.gz
cd globalprotect-openconnect-*/
make binary OFFLINE=1
- name: Install binary
run: |
cd globalprotect-openconnect-*/
cd .build/binary/globalprotect-openconnect_*_$(uname -m)
sudo make install
gpclient --version
gpservice --version
gpauth --version
gpgui-helper --version
- name: Upload binary
uses: actions/upload-artifact@v3
with:
name: artifact-binary-${{ matrix.os }}
if-no-files-found: error
path: |
globalprotect-openconnect-*/.build/binary/*.bin.tar.xz*
- name: Prepare workspace
run: rm -rf build-binary && mkdir build-binary
- name: Download tarball
uses: actions/download-artifact@v3
with:
name: artifact-source
path: build-binary
- name: Docker Login
run: echo ${{ secrets.DOCKER_HUB_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
- name: Build binary in Docker
run: |
docker run --rm -v $(pwd)/build-binary:/binary yuezk/gpdev:binary-builder
- name: Install binary in Docker
run: |
cd build-binary
tar -xJf ./*.bin.tar.xz
docker run --rm -v $(pwd):/binary yuezk/gpdev:binary-builder \
bash -c "cd /binary/globalprotect-openconnect*/ && sudo make install && gpclient --version && gpservice --version && gpauth --version && gpgui-helper --version;"
- name: Upload binary
uses: actions/upload-artifact@v3
with:
name: artifact-binary-${{ matrix.os }}
if-no-files-found: error
path: |
build-binary/*.bin.tar.xz
build-binary/*.bin.tar.xz.sha256
build-gpgui:
needs:
@@ -227,40 +197,47 @@ jobs:
matrix:
os: ${{fromJson(needs.setup-matrix.outputs.matrix)}}
runs-on: ${{ matrix.os }}
container:
image: yuezk/gpdev:main
credentials:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
steps:
- uses: pnpm/action-setup@v2
with:
version: 8
- name: Prepare workspace
run: rm -rf gpgui-source && mkdir gpgui-source
- name: Checkout GlobalProtect-openconnect
uses: actions/checkout@v3
with:
token: ${{ secrets.GH_PAT }}
repository: yuezk/GlobalProtect-openconnect
path: gp
path: gpgui-source/gp
- name: Checkout gpgui
uses: actions/checkout@v3
with:
token: ${{ secrets.GH_PAT }}
repository: yuezk/gpgui
path: gpgui
- name: Build gpgui
path: gpgui-source/gpgui
- name: Tarball
run: |
cd gpgui
make package
./target/release/gpgui --version
cd gpgui-source
tar -czf gpgui.tar.gz gpgui gp
- name: Docker Login
run: echo ${{ secrets.DOCKER_HUB_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
- name: Build gpgui in Docker
run: |
docker run --rm -v $(pwd)/gpgui-source:/gpgui yuezk/gpdev:gpgui-builder
- name: Install gpgui in Docker
run: |
cd gpgui-source
tar -xJf *.bin.tar.xz
docker run --rm -v $(pwd):/gpgui yuezk/gpdev:gpgui-builder \
bash -c "cd /gpgui/gpgui_*/ && ./gpgui --version"
- name: Upload gpgui
uses: actions/upload-artifact@v3
with:
name: artifact-gpgui-${{ matrix.os }}
if-no-files-found: error
path: |
gpgui/.build/package/*.tar.xz*
gpgui-source/*.bin.tar.xz
gpgui-source/*.bin.tar.xz.sha256
gh-release:
if: startsWith(github.ref, 'refs/tags/')
@@ -273,21 +250,17 @@ jobs:
- build-gpgui
steps:
- name: Download all artifacts
uses: actions/download-artifact@v3
with:
path: artifact
- name: Create GH release
uses: softprops/action-gh-release@v1
with:
token: ${{ secrets.GH_PAT }}
prerelease: ${{ contains(github.ref, 'latest') }}
fail_on_unmatched_files: true
files: |
artifact/artifact-*/globalprotect-openconnect-*/.build/deb/*.deb
artifact/artifact-*/globalprotect-openconnect-*/.build/rpm/*.rpm
artifact/artifact-*/globalprotect-openconnect-*/.build/pkgbuild/*.pkg.tar.zst
artifact/artifact-*/globalprotect-openconnect-*/.build/binary/*.bin.tar.xz*
artifact/artifact-*/*.bin.tar.xz*
artifact/artifact-*/*.tar.gz
- name: Prepare workspace
run: rm -rf build-artifact && mkdir build-artifact
- name: Download all artifacts
uses: actions/download-artifact@v3
with:
path: build-artifact
- name: Create GH release
uses: softprops/action-gh-release@v1
with:
token: ${{ secrets.GH_PAT }}
prerelease: ${{ contains(github.ref, 'latest') }}
fail_on_unmatched_files: true
files: |
build-artifact/artifact-*/*

12
Cargo.lock generated
View File

@@ -1423,7 +1423,7 @@ dependencies = [
[[package]]
name = "gpapi"
version = "2.0.0"
version = "2.1.0"
dependencies = [
"anyhow",
"base64 0.21.5",
@@ -1455,7 +1455,7 @@ dependencies = [
[[package]]
name = "gpauth"
version = "2.0.0"
version = "2.1.0"
dependencies = [
"anyhow",
"clap",
@@ -1475,7 +1475,7 @@ dependencies = [
[[package]]
name = "gpclient"
version = "2.0.0"
version = "2.1.0"
dependencies = [
"anyhow",
"clap",
@@ -1496,7 +1496,7 @@ dependencies = [
[[package]]
name = "gpgui-helper"
version = "2.0.0"
version = "2.1.0"
dependencies = [
"anyhow",
"clap",
@@ -1514,7 +1514,7 @@ dependencies = [
[[package]]
name = "gpservice"
version = "2.0.0"
version = "2.1.0"
dependencies = [
"anyhow",
"axum",
@@ -2519,7 +2519,7 @@ dependencies = [
[[package]]
name = "openconnect"
version = "2.0.0"
version = "2.1.0"
dependencies = [
"cc",
"is_executable",

View File

@@ -5,7 +5,7 @@ members = ["crates/*", "apps/gpclient", "apps/gpservice", "apps/gpauth", "apps/g
[workspace.package]
rust-version = "1.70"
version = "2.0.0"
version = "2.1.0"
authors = ["Kevin Yue <k3vinyue@gmail.com>"]
homepage = "https://github.com/yuezk/GlobalProtect-openconnect"
edition = "2021"

View File

@@ -220,15 +220,15 @@ binary: clean-binary tarball
cp .build/tarball/${PKG}.tar.gz .build/binary
tar -xzf .build/binary/${PKG}.tar.gz -C .build/binary
mkdir -p .build/binary/$(PKG_NAME)_$(VERSION)_$(shell uname -m)/artifacts
mkdir -p .build/binary/$(PKG_NAME)_$(VERSION)/artifacts
make -C .build/binary/${PKG} build OFFLINE=$(OFFLINE)
make -C .build/binary/${PKG} install DESTDIR=$(PWD)/.build/binary/$(PKG_NAME)_$(VERSION)_$(shell uname -m)/artifacts
make -C .build/binary/${PKG} build OFFLINE=$(OFFLINE) BUILD_FE=0
make -C .build/binary/${PKG} install DESTDIR=$(PWD)/.build/binary/$(PKG_NAME)_$(VERSION)/artifacts
cp packaging/binary/Makefile.in .build/binary/$(PKG_NAME)_$(VERSION)_$(shell uname -m)/Makefile
cp packaging/binary/Makefile.in .build/binary/$(PKG_NAME)_$(VERSION)/Makefile
# Create a tarball for the binary package
tar -cJf .build/binary/$(PKG_NAME)_$(VERSION)_$(shell uname -m).bin.tar.xz -C .build/binary $(PKG_NAME)_$(VERSION)_$(shell uname -m)
tar -cJf .build/binary/$(PKG_NAME)_$(VERSION)_$(shell uname -m).bin.tar.xz -C .build/binary $(PKG_NAME)_$(VERSION)
# Generate sha256sum
cd .build/binary && sha256sum $(PKG_NAME)_$(VERSION)_$(shell uname -m).bin.tar.xz | cut -d' ' -f1 > $(PKG_NAME)_$(VERSION)_$(shell uname -m).bin.tar.xz.sha256

View File

@@ -1,5 +1,11 @@
# Changelog
## 2.1.0 - 2024-02-27
- Update distribution channel for `gpgui` to complaint with the GPL-3 license.
- Add `mtu` option.
- Retry auth if failed to obtain the auth cookie
## 2.0.0 - 2024-02-05
- Refactor using Tauri

View File

@@ -1,6 +1,6 @@
#!/usr/bin/make -f
export OFFLINE = @OFFLINE@
export OFFLINE = @OFFLINE@ BUILD_FE=0
%:
dh $@

View File

@@ -25,7 +25,7 @@ build() {
# Must unset the CFLAGS, otherwise the build fails
unset CFLAGS
make build OFFLINE=@OFFLINE@
make build OFFLINE=@OFFLINE@ BUILD_FE=0
}
package() {

View File

@@ -35,7 +35,9 @@ A GUI for GlobalProtect VPN, based on OpenConnect, supports the SSO authenticati
%setup
%build
make build OFFLINE=@OFFLINE@
# The injected RUSTFLAGS could fail the build
unset RUSTFLAGS
make build OFFLINE=@OFFLINE@ BUILD_FE=0
%install
%make_install