name: tauri_app_build on: push: branches: - 'releases/**' jobs: build: strategy: matrix: os: [windows-latest,ubuntu-22.04] runs-on: ${{ matrix.os }} permissions: contents: write steps: - name: Check-out repository uses: actions/checkout@v3 - run: echo "VERSION=$(jq -r '.package.version' vue/src-tauri/tauri.conf.json)" >> "$GITHUB_ENV" if: matrix.os == 'ubuntu-22.04' - run: echo "VERSION=$(jq -r '.package.version' vue/src-tauri/tauri.conf.json)" >> $env:GITHUB_ENV if: matrix.os == 'windows-latest' - name: Setup Python uses: actions/setup-python@v4 with: python-version: '3.10' cache: 'pip' cache-dependency-path: | **/requirements*.txt - name: Install Dependencies run: | pip install -r requirements.txt - name: Build Executable uses: Nuitka/Nuitka-Action@main with: nuitka-version: main script-name: app.py output-file: iib_api_server output-dir: out include-module: imageio.plugins.pyav include-data-dir: | vue/dist=vue/dist - run: cp out/iib_api_server out/iib_app_cli-${{ env.VERSION }}-${{ runner.os }} if: matrix.os == 'ubuntu-22.04' - run: cp out/iib_api_server.exe out/iib_app_cli-${{ env.VERSION }}-${{ runner.os }}.exe if: matrix.os == 'windows-latest' - name: Upload Server Artifacts uses: actions/upload-artifact@v4 with: name: iib_app_cli_${{ runner.os }} path: | out/iib_app_cli-${{ env.VERSION }}-${{ runner.os }} out/iib_app_cli-${{ env.VERSION }}-${{ runner.os }}.exe - name: Upload Server Artifacts uses: actions/upload-artifact@v4 with: name: iib_api_server-${{ env.VERSION }}-${{ runner.os }} path: | out/iib_api_server.exe out/iib_api_server - run: mv out/iib_api_server.exe vue/src-tauri/iib_api_server-x86_64-pc-windows-msvc.exe if: matrix.os == 'windows-latest' - run: mv out/iib_api_server vue/src-tauri/iib_api_server-x86_64-unknown-linux-gnu if: matrix.os == 'ubuntu-22.04' - name: Install frontend dependencies run: yarn install working-directory: vue - name: Rust setup uses: dtolnay/rust-toolchain@stable - name: Use Node.js uses: actions/setup-node@v3 with: node-version: 18 - name: Rust cache uses: swatinem/rust-cache@v2 with: workspaces: './vue/src-tauri -> target' - name: Install dependencies (ubuntu only) if: matrix.os == 'ubuntu-22.04' run: | sudo apt-get update sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libayatana-appindicator3-dev librsvg2-dev patchelf - name: Build the app run: | yarn tauri-build working-directory: vue - name: Upload Artifacts uses: actions/upload-artifact@v4 with: name: bundle-${{ env.VERSION }}-${{ runner.os }} path: | vue/src-tauri/target/release/bundle/nsis/Infinite Image Browsing_${{ env.VERSION }}_x64-setup.exe vue/src-tauri/target/release/bundle/deb/infinite-image-browsing_${{ env.VERSION }}_amd64.deb build-by-pyinstaller: strategy: matrix: os: [windows-latest] runs-on: ${{ matrix.os }} permissions: contents: write steps: - name: Check-out repository uses: actions/checkout@v3 - run: echo "VERSION=$(jq -r '.package.version' vue/src-tauri/tauri.conf.json)" >> $env:GITHUB_ENV - name: Setup Python uses: actions/setup-python@v4 with: python-version: '3.10' cache: 'pip' cache-dependency-path: | **/requirements*.txt - name: Install Dependencies run: | pip install -r requirements.txt - uses: sayyid5416/pyinstaller@v1 with: spec: 'app.py' upload_exe_with_name: 'My executable' options: --onefile --additional-hooks-dir=pyinstaller_hooks - run: mv dist/app.exe vue/src-tauri/iib_api_server-x86_64-pc-windows-msvc.exe - name: Install frontend dependencies run: yarn install working-directory: vue - name: Rust setup uses: dtolnay/rust-toolchain@stable - name: Use Node.js uses: actions/setup-node@v3 with: node-version: 18 - name: Rust cache uses: swatinem/rust-cache@v2 with: workspaces: './vue/src-tauri -> target' - name: Install dependencies (ubuntu only) if: matrix.os == 'ubuntu-22.04' run: | sudo apt-get update sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libayatana-appindicator3-dev librsvg2-dev patchelf - name: Build the app run: | yarn tauri-build working-directory: vue - run: | cd vue/src-tauri/target/release/bundle/nsis mv "Infinite Image Browsing_${{ env.VERSION }}_x64-setup.exe" "Infinite Image Browsing_${{ env.VERSION }}_x64-setup-pyinstaller.exe" - name: Upload Artifacts uses: actions/upload-artifact@v4 with: name: bundle-${{ env.VERSION }}-${{ runner.os }}-pre path: | vue/src-tauri/target/release/bundle/nsis/Infinite Image Browsing_${{ env.VERSION }}_x64-setup-pyinstaller.exe release: needs: [build-by-pyinstaller, build] runs-on: ubuntu-latest permissions: contents: write steps: - name: Check-out repository uses: actions/checkout@v3 - run: echo "VERSION=$(jq -r '.package.version' vue/src-tauri/tauri.conf.json)" >> "$GITHUB_ENV" - name: Delete drafts uses: hugo19941994/delete-draft-releases@v1.0.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - uses: actions/download-artifact@v4 with: name: bundle-${{ env.VERSION }}-Windows path: artifacts - uses: actions/download-artifact@v4 with: name: bundle-${{ env.VERSION }}-Windows-pre path: artifacts - uses: actions/download-artifact@v4 with: name: bundle-${{ env.VERSION }}-Linux path: artifacts - uses: actions/download-artifact@v4 with: name: iib_app_cli_Windows path: artifacts - uses: actions/download-artifact@v4 with: name: iib_app_cli_Linux path: artifacts - name: Release uses: softprops/action-gh-release@v1 with: draft: true tag_name: v${{ env.VERSION }} files: artifacts/**/*