Build App With Pake CLI #157
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | name: Build App With Pake CLI | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| platform: | |
| description: "Platform" | |
| required: true | |
| default: "macos-latest" | |
| type: choice | |
| options: | |
| - "windows-latest" | |
| - "macos-latest" | |
| - "ubuntu-24.04" | |
| url: | |
| description: "URL" | |
| required: true | |
| name: | |
| description: "Name, English, Linux no capital" | |
| required: true | |
| icon: | |
| description: "Icon, Image URL, Optional" | |
| required: false | |
| width: | |
| description: "Width, Optional" | |
| required: false | |
| default: "1200" | |
| height: | |
| description: "Height, Optional" | |
| required: false | |
| default: "780" | |
| fullscreen: | |
| description: "Fullscreen, At startup, Optional" | |
| required: false | |
| type: boolean | |
| default: false | |
| hide_title_bar: | |
| description: "Hide TitleBar, MacOS only, Optional" | |
| required: false | |
| type: boolean | |
| default: false | |
| multi_arch: | |
| description: "MultiArch, MacOS only, Optional" | |
| required: false | |
| type: boolean | |
| default: false | |
| targets: | |
| description: "Targets, Linux only, Optional" | |
| required: false | |
| default: "deb" | |
| type: choice | |
| options: | |
| - "deb" | |
| - "appimage" | |
| - "rpm" | |
| jobs: | |
| build: | |
| name: ${{ inputs.platform }} | |
| runs-on: ${{ inputs.platform }} | |
| strategy: | |
| fail-fast: false | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: "npm" | |
| - name: Install Rust for ubuntu-24.04 | |
| if: inputs.platform == 'ubuntu-24.04' | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| toolchain: stable | |
| target: x86_64-unknown-linux-musl | |
| - name: Install Rust for windows-latest | |
| if: inputs.platform == 'windows-latest' | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| toolchain: stable-x86_64-msvc | |
| target: x86_64-pc-windows-msvc | |
| - name: Install Rust for macos-latest | |
| if: inputs.platform == 'macos-latest' | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| toolchain: stable | |
| target: x86_64-apple-darwin | |
| - name: Add additional Rust target for multi-arch | |
| if: inputs.platform == 'macos-latest' && inputs.multi_arch == true | |
| run: | | |
| rustup target add aarch64-apple-darwin | |
| - name: Install dependencies (ubuntu only) | |
| if: inputs.platform == 'ubuntu-24.04' | |
| uses: awalsh128/[email protected] | |
| with: | |
| packages: libsoup-3.0-dev libdbus-1-dev libjavascriptcoregtk-4.1-dev libwebkit2gtk-4.1-dev build-essential curl wget file libxdo-dev libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev gnome-video-effects gnome-video-effects-extra | |
| version: 1.1 | |
| - name: Cache Node dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| node_modules | |
| ~/.npm | |
| key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
| restore-keys: | | |
| ${{ runner.os }}-node- | |
| - name: Install pake-cli | |
| shell: bash | |
| run: | | |
| echo "Installing latest pake-cli..." | |
| npm install pake-cli@latest --no-package-lock | |
| # Verify installation | |
| if [ ! -d "node_modules/pake-cli" ]; then | |
| echo "Error: Failed to install pake-cli" | |
| exit 1 | |
| fi | |
| echo "Listing pake-cli contents:" | |
| ls -la node_modules/pake-cli/ | head -5 | |
| echo "pake-cli installation verified" | |
| - name: Rust cache restore | |
| uses: actions/cache/[email protected] | |
| id: cache_store | |
| with: | |
| path: | | |
| ~/.cargo/bin/ | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| node_modules/pake-cli/src-tauri/target/ | |
| key: ${{ inputs.platform }}-cargo-${{ hashFiles('node_modules/pake-cli/src-tauri/Cargo.lock') }} | |
| - name: Build with pake-cli | |
| timeout-minutes: 15 | |
| run: | | |
| node ./script/build_with_pake_cli.js | |
| env: | |
| URL: ${{ inputs.url }} | |
| NAME: ${{ inputs.name }} | |
| ICON: ${{ inputs.icon }} | |
| HEIGHT: ${{ inputs.height }} | |
| WIDTH: ${{ inputs.width }} | |
| HIDE_TITLE_BAR: ${{ inputs.hide_title_bar }} | |
| FULLSCREEN: ${{ inputs.fullscreen }} | |
| MULTI_ARCH: ${{ inputs.multi_arch }} | |
| TARGETS: ${{ inputs.targets }} | |
| PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/share/pkgconfig | |
| PKG_CONFIG_ALLOW_SYSTEM_LIBS: 1 | |
| PKG_CONFIG_ALLOW_SYSTEM_CFLAGS: 1 | |
| - name: Upload archive | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: output-${{ inputs.platform }}.zip | |
| path: node_modules/pake-cli/output/* | |
| retention-days: 3 | |
| - name: Rust cache store | |
| uses: actions/cache/[email protected] | |
| if: steps.cache_store.outputs.cache-hit != 'true' | |
| with: | |
| path: | | |
| ~/.cargo/bin/ | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| node_modules/pake-cli/src-tauri/target/ | |
| key: ${{ inputs.platform }}-cargo-${{ hashFiles('node_modules/pake-cli/src-tauri/Cargo.lock') }} |