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
5 changed files with 115 additions and 143 deletions

View File

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

12
Cargo.lock generated
View File

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

View File

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

View File

@@ -220,15 +220,15 @@ binary: clean-binary tarball
cp .build/tarball/${PKG}.tar.gz .build/binary cp .build/tarball/${PKG}.tar.gz .build/binary
tar -xzf .build/binary/${PKG}.tar.gz -C .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} build OFFLINE=$(OFFLINE) BUILD_FE=0
make -C .build/binary/${PKG} install DESTDIR=$(PWD)/.build/binary/$(PKG_NAME)_$(VERSION)_$(shell uname -m)/artifacts 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 # 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 # 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 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 # 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 ## 2.0.0 - 2024-02-05
- Refactor using Tauri - Refactor using Tauri