mirror of
				https://github.com/yuezk/GlobalProtect-openconnect.git
				synced 2025-05-20 07:26:58 -04:00 
			
		
		
		
	Add github actions
This commit is contained in:
		
							
								
								
									
										245
									
								
								.github/workflows/build.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										245
									
								
								.github/workflows/build.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,245 @@
 | 
			
		||||
name: Build GPGUI
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    branches:
 | 
			
		||||
      - main
 | 
			
		||||
    tags:
 | 
			
		||||
      - v*.*.*
 | 
			
		||||
jobs:
 | 
			
		||||
  # Include arm64 if ref is a tag
 | 
			
		||||
  setup-matrix:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    outputs:
 | 
			
		||||
      matrix: ${{ steps.set-matrix.outputs.matrix }}
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Set up matrix
 | 
			
		||||
        id: set-matrix
 | 
			
		||||
        run: |
 | 
			
		||||
          if [[ "${{ github.ref }}" == "refs/tags/"* ]]; then
 | 
			
		||||
            echo "matrix=[\"amd64\", \"arm64\"]" >> $GITHUB_OUTPUT
 | 
			
		||||
          else
 | 
			
		||||
            echo "matrix=[\"amd64\"]" >> $GITHUB_OUTPUT
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
  build-fe:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout gpgui repo
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        with:
 | 
			
		||||
          token: ${{ secrets.GH_PAT }}
 | 
			
		||||
          repository: yuezk/gpgui
 | 
			
		||||
 | 
			
		||||
      - name: Install Node.js
 | 
			
		||||
        uses: actions/setup-node@v4
 | 
			
		||||
        with:
 | 
			
		||||
          node-version: 18
 | 
			
		||||
 | 
			
		||||
      - uses: pnpm/action-setup@v2
 | 
			
		||||
        with:
 | 
			
		||||
          version: 8
 | 
			
		||||
 | 
			
		||||
      - name: Install dependencies
 | 
			
		||||
        run: |
 | 
			
		||||
          cd app
 | 
			
		||||
          pnpm install
 | 
			
		||||
      - name: Build
 | 
			
		||||
        run: |
 | 
			
		||||
          cd app
 | 
			
		||||
          pnpm run build
 | 
			
		||||
 | 
			
		||||
      - name: Upload artifacts
 | 
			
		||||
        uses: actions/upload-artifact@v4
 | 
			
		||||
        with:
 | 
			
		||||
          name: gpgui-fe
 | 
			
		||||
          path: app/dist
 | 
			
		||||
 | 
			
		||||
  build-tauri:
 | 
			
		||||
    needs: [setup-matrix, build-fe]
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    strategy:
 | 
			
		||||
      matrix:
 | 
			
		||||
        arch: ${{ fromJson(needs.setup-matrix.outputs.matrix) }}
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout gpgui repo
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        with:
 | 
			
		||||
          token: ${{ secrets.GH_PAT }}
 | 
			
		||||
          repository: yuezk/gpgui
 | 
			
		||||
          path: gpgui
 | 
			
		||||
 | 
			
		||||
      - name: Checkout gp repo
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        with:
 | 
			
		||||
          token: ${{ secrets.GH_PAT }}
 | 
			
		||||
          repository: yuezk/GlobalProtect-openconnect
 | 
			
		||||
          path: gp
 | 
			
		||||
 | 
			
		||||
      - name: Download gpgui-fe artifact
 | 
			
		||||
        uses: actions/download-artifact@v4
 | 
			
		||||
        with:
 | 
			
		||||
          name: gpgui-fe
 | 
			
		||||
          path: gpgui/app/dist
 | 
			
		||||
 | 
			
		||||
      - name: Set up QEMU
 | 
			
		||||
        uses: docker/setup-qemu-action@v3
 | 
			
		||||
        with:
 | 
			
		||||
          platforms: ${{ matrix.arch }}
 | 
			
		||||
 | 
			
		||||
      - name: Login to Docker Hub
 | 
			
		||||
        uses: docker/login-action@v3
 | 
			
		||||
        with:
 | 
			
		||||
          username: ${{ secrets.DOCKER_HUB_USERNAME }}
 | 
			
		||||
          password: ${{ secrets.DOCKER_HUB_TOKEN }}
 | 
			
		||||
 | 
			
		||||
      - name: Build Tauri in Docker
 | 
			
		||||
        run: |
 | 
			
		||||
          docker run \
 | 
			
		||||
            --rm \
 | 
			
		||||
            -v $(pwd):/${{ github.workspace }} \
 | 
			
		||||
            -w ${{ github.workspace }} \
 | 
			
		||||
            -e CI=true \
 | 
			
		||||
            --platform linux/${{ matrix.arch }} \
 | 
			
		||||
            yuezk/gpdev:main \
 | 
			
		||||
            "./gpgui/scripts/build.sh"
 | 
			
		||||
 | 
			
		||||
      - name: Upload artifacts
 | 
			
		||||
        uses: actions/upload-artifact@v4
 | 
			
		||||
        with:
 | 
			
		||||
          name: artifact-${{ matrix.arch }}-tauri
 | 
			
		||||
          path: |
 | 
			
		||||
            gpgui/.tmp/artifact
 | 
			
		||||
 | 
			
		||||
  package-rpm:
 | 
			
		||||
    needs: [setup-matrix, build-tauri]
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    strategy:
 | 
			
		||||
      matrix:
 | 
			
		||||
        arch: ${{ fromJson(needs.setup-matrix.outputs.matrix) }}
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout gpgui repo
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        with:
 | 
			
		||||
          token: ${{ secrets.GH_PAT }}
 | 
			
		||||
          repository: yuezk/gpgui
 | 
			
		||||
          path: gpgui
 | 
			
		||||
 | 
			
		||||
      - name: Download artifact-${{ matrix.arch }}
 | 
			
		||||
        uses: actions/download-artifact@v4
 | 
			
		||||
        with:
 | 
			
		||||
          name: artifact-${{ matrix.arch }}-tauri
 | 
			
		||||
          path: gpgui/.tmp/artifact
 | 
			
		||||
 | 
			
		||||
      - name: Set up QEMU
 | 
			
		||||
        uses: docker/setup-qemu-action@v3
 | 
			
		||||
        with:
 | 
			
		||||
          platforms: ${{ matrix.arch }}
 | 
			
		||||
 | 
			
		||||
      - name: Login to Docker Hub
 | 
			
		||||
        uses: docker/login-action@v3
 | 
			
		||||
        with:
 | 
			
		||||
          username: ${{ secrets.DOCKER_HUB_USERNAME }}
 | 
			
		||||
          password: ${{ secrets.DOCKER_HUB_TOKEN }}
 | 
			
		||||
 | 
			
		||||
      - name: Create RPM package
 | 
			
		||||
        run: |
 | 
			
		||||
          docker run \
 | 
			
		||||
            --rm \
 | 
			
		||||
            -v $(pwd):/${{ github.workspace }} \
 | 
			
		||||
            -w ${{ github.workspace }} \
 | 
			
		||||
            --platform linux/${{ matrix.arch }} \
 | 
			
		||||
            yuezk/gpdev:rpm-builder \
 | 
			
		||||
            "./gpgui/scripts/build-rpm.sh"
 | 
			
		||||
 | 
			
		||||
      - name: Upload rpm artifacts
 | 
			
		||||
        uses: actions/upload-artifact@v4
 | 
			
		||||
        with:
 | 
			
		||||
          name: artifact-${{ matrix.arch }}-rpm
 | 
			
		||||
          path: |
 | 
			
		||||
            gpgui/.tmp/artifact/*.rpm
 | 
			
		||||
 | 
			
		||||
  package-pkgbuild:
 | 
			
		||||
    needs: [setup-matrix, build-tauri]
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    strategy:
 | 
			
		||||
      matrix:
 | 
			
		||||
        arch: ${{ fromJson(needs.setup-matrix.outputs.matrix) }}
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout gpgui repo
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        with:
 | 
			
		||||
          token: ${{ secrets.GH_PAT }}
 | 
			
		||||
          repository: yuezk/gpgui
 | 
			
		||||
          path: gpgui
 | 
			
		||||
 | 
			
		||||
      - name: Download artifact-${{ matrix.arch }}
 | 
			
		||||
        uses: actions/download-artifact@v4
 | 
			
		||||
        with:
 | 
			
		||||
          name: artifact-${{ matrix.arch }}-tauri
 | 
			
		||||
          path: gpgui/.tmp/artifact
 | 
			
		||||
 | 
			
		||||
      - name: Set up QEMU
 | 
			
		||||
        uses: docker/setup-qemu-action@v3
 | 
			
		||||
        with:
 | 
			
		||||
          platforms: ${{ matrix.arch }}
 | 
			
		||||
 | 
			
		||||
      - name: Login to Docker Hub
 | 
			
		||||
        uses: docker/login-action@v3
 | 
			
		||||
        with:
 | 
			
		||||
          username: ${{ secrets.DOCKER_HUB_USERNAME }}
 | 
			
		||||
          password: ${{ secrets.DOCKER_HUB_TOKEN }}
 | 
			
		||||
 | 
			
		||||
      - name: Generate PKGBUILD
 | 
			
		||||
        run: |
 | 
			
		||||
          ./gpgui/scripts/generate-pkgbuild.sh
 | 
			
		||||
 | 
			
		||||
      - name: Build PKGBUILD package
 | 
			
		||||
        run: |
 | 
			
		||||
          # Generate PKGBUILD to .tmp/pkgbuild
 | 
			
		||||
          ./gpgui/scripts/generate-pkgbuild.sh
 | 
			
		||||
 | 
			
		||||
          # Build package
 | 
			
		||||
          docker run \
 | 
			
		||||
            --rm \
 | 
			
		||||
            -v $(pwd)/gpgui/.tmp/pkgbuild:/pkgbuild \
 | 
			
		||||
            --platform linux/${{ matrix.arch }} \
 | 
			
		||||
            yuezk/gpdev:pkgbuild
 | 
			
		||||
 | 
			
		||||
      - name: Upload pkgbuild artifacts
 | 
			
		||||
        uses: actions/upload-artifact@v4
 | 
			
		||||
        with:
 | 
			
		||||
          name: artifact-${{ matrix.arch }}-pkgbuild
 | 
			
		||||
          path: |
 | 
			
		||||
            gpgui/.tmp/pkgbuild/*.pkg.tar.zst
 | 
			
		||||
 | 
			
		||||
  gh-release:
 | 
			
		||||
    if: startsWith(github.ref, 'refs/tags/')
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    needs:
 | 
			
		||||
      - package-rpm
 | 
			
		||||
      - package-pkgbuild
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Download artifact
 | 
			
		||||
        uses: actions/download-artifact@v4
 | 
			
		||||
        with:
 | 
			
		||||
          path: artifact
 | 
			
		||||
          pattern: artifact-*
 | 
			
		||||
          merge-multiple: true
 | 
			
		||||
 | 
			
		||||
      - name: Generate checksum
 | 
			
		||||
        uses: jmgilman/actions-generate-checksum@v1
 | 
			
		||||
        with:
 | 
			
		||||
          output: checksums.txt
 | 
			
		||||
          patterns: |
 | 
			
		||||
            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: |
 | 
			
		||||
            checksums.txt
 | 
			
		||||
            artifact/*
 | 
			
		||||
		Reference in New Issue
	
	Block a user