fix error #146
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: Deploy React App with GitHub Pages | |
| on: | |
| push: | |
| branches: ["main"] | |
| workflow_dispatch: | |
| permissions: | |
| contents: write | |
| pages: write | |
| id-token: write | |
| concurrency: | |
| group: "pages" | |
| cancel-in-progress: false | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v3 | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v3 | |
| with: | |
| node-version: '20' | |
| - name: Install dependencies | |
| run: npm install | |
| - name: Build app | |
| run: npm run build | |
| - name: Upload artifact | |
| uses: actions/upload-pages-artifact@v2 | |
| with: | |
| name: github-pages | |
| path: ./build | |
| deploy: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v3 | |
| - name: Download artifact | |
| uses: actions/download-artifact@v3 | |
| with: | |
| name: github-pages | |
| - name: Deploy to GitHub Pages | |
| uses: actions/deploy-pages@v1 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| build-electron-win: | |
| needs: deploy | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| platform: [win] | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v3 | |
| - name: Install dependencies | |
| run: npm install | |
| - name: Install Wine | |
| run: | | |
| sudo dpkg --add-architecture i386 | |
| sudo apt update | |
| sudo apt install -y wine64 wine32 | |
| - name: Build | |
| run: npm run build | |
| - name: Build Electron App | |
| run: | | |
| case ${{ matrix.platform }} in | |
| win) GH_TOKEN=${{ secrets.GITHUB_TOKEN }} npm run dist -- --win;; | |
| mac) GH_TOKEN=${{ secrets.GITHUB_TOKEN }} npm run dist -- --mac ;; | |
| linux) GH_TOKEN=${{ secrets.GITHUB_TOKEN }} npm run dist -- --linux AppImage ;; | |
| esac | |
| - name: Archive Build Outputs | |
| run: | | |
| mkdir -p artifacts | |
| case ${{ matrix.platform }} in | |
| win) mv dist/*.exe artifacts/ ;; | |
| mac) mv dist/*.dmg artifacts/ ;; | |
| linux) mv dist/*.AppImage artifacts/ ;; | |
| esac | |
| - name: Upload Build Outputs | |
| uses: actions/upload-artifact@v3 | |
| with: | |
| name: ${{ matrix.platform }}-builds | |
| path: artifacts | |
| - name: Extract version from package.json | |
| id: extract_version | |
| run: | | |
| VERSION=$(node -p "require('./package.json').version") | |
| echo "Version extracted: $VERSION" | |
| echo "::set-output name=version::$VERSION" | |
| echo "VERSION=$VERSION" >> $GITHUB_ENV | |
| build-tauri: | |
| needs: deploy | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| platform: [windows-latest] | |
| steps: | |
| # Step 1: Checkout Code | |
| - name: Checkout code | |
| uses: actions/checkout@v3 | |
| # Step 2: Set up Rust | |
| - name: Set up Rust | |
| uses: actions-rs/toolchain@v1 | |
| with: | |
| toolchain: stable | |
| profile: minimal | |
| components: rustfmt, clippy, llvm-tools # Added llvm-tools as an example | |
| - name: Install GDK and dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| libgtk-3-dev \ | |
| libsoup-3.0-dev \ | |
| libjavascriptcoregtk-4.1-dev \ | |
| libtasn1-dev | |
| # - name: Build WebKitGTK from source | |
| # run: | | |
| # sudo apt-get update | |
| # sudo apt-get install -y \ | |
| # cmake \ | |
| # ninja-build \ | |
| # libgtk-3-dev \ | |
| # libsoup-3.0-dev \ | |
| # libglib2.0-dev \ | |
| # libwebkit2gtk-4.0-dev \ | |
| # gobject-introspection \ | |
| # libcairo2-dev \ | |
| # libpango1.0-dev | |
| # git clone https://github.com/WebKit/WebKit.git | |
| # cd WebKit | |
| # Tools/Scripts/build-webkit --gtk | |
| - name: Set PKG_CONFIG_PATH | |
| run: | | |
| export PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig" # Adjust this path if necessary | |
| echo "PKG_CONFIG_PATH set to $PKG_CONFIG_PATH" | |
| # Step 3: Install and build | |
| - name: Install dependencies | |
| run: npm install | |
| - name: Build | |
| run: npm run build | |
| - name: Build the application | |
| run: | | |
| cd src-tauri | |
| cargo build --release | |
| cd .. | |
| - name: Install Tauri dependencies | |
| run: | | |
| # Install dependencies for building Tauri apps | |
| cargo install tauri-cli | |
| # Step 4: Build Tauri App | |
| - name: Build Tauri App | |
| run: cargo tauri build | |
| # Step 5: Archive Build Artifacts | |
| - name: Archive artifacts | |
| uses: actions/upload-artifact@v3 | |
| with: | |
| name: app-windows-msi | |
| path: src-tauri/target/release/bundle/msi/* | |
| - name: Archive artifacts | |
| uses: actions/upload-artifact@v3 | |
| with: | |
| name: app-windows-nsis | |
| path: src-tauri/target/release/bundle/nsis/* | |
| build-electron: | |
| needs: build-electron-win | |
| runs-on: macos-latest | |
| strategy: | |
| matrix: | |
| platform: [mac, linux] | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v3 | |
| - name: Install dependencies | |
| run: npm install | |
| - name: Build | |
| run: npm run build | |
| - name: Build Electron App | |
| run: | | |
| case ${{ matrix.platform }} in | |
| win) GH_TOKEN=${{ secrets.GITHUB_TOKEN }} npm run dist -- --win;; | |
| mac) GH_TOKEN=${{ secrets.GITHUB_TOKEN }} npm run dist -- --mac ;; | |
| linux) GH_TOKEN=${{ secrets.GITHUB_TOKEN }} npm run dist -- --linux AppImage ;; | |
| esac | |
| - name: Archive Build Outputs | |
| run: | | |
| mkdir -p artifacts | |
| case ${{ matrix.platform }} in | |
| win) mv dist/*.exe artifacts/ ;; | |
| mac) mv dist/*.dmg artifacts/ ;; | |
| linux) mv dist/*.AppImage artifacts/ ;; | |
| esac | |
| - name: Upload Build Outputs | |
| uses: actions/upload-artifact@v3 | |
| with: | |
| name: ${{ matrix.platform }}-builds | |
| path: artifacts | |
| release: | |
| needs: [build-electron, build-tauri] | |
| runs-on: ubuntu-latest | |
| steps: | |
| # Electron | |
| - name: Download win Artifacts | |
| uses: actions/download-artifact@v3 | |
| with: | |
| name: win-builds | |
| - name: Download mac Artifacts | |
| uses: actions/download-artifact@v3 | |
| with: | |
| name: mac-builds | |
| - name: Download linux Artifacts | |
| uses: actions/download-artifact@v3 | |
| with: | |
| name: linux-builds | |
| # Tauri | |
| - name: Download Tauri Windows Artifacts | |
| uses: actions/download-artifact@v3 | |
| with: | |
| name: app-windows-msi | |
| - name: Download Tauri Windows Artifacts | |
| uses: actions/download-artifact@v3 | |
| with: | |
| name: app-windows-nsis | |
| # Create a new GitHub release | |
| - name: Create GitHub Release | |
| id: create_release | |
| uses: actions/create-release@v1 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| VERSION: ${{ env.VERSION }} | |
| with: | |
| tag_name: ${{ github.ref_name }}-${{ github.run_id }} | |
| release_name: Release New Version ${{ env.VERSION }} | |
| draft: false | |
| prerelease: false | |
| # Upload all artifacts to the release | |
| - name: Upload Release Assets | |
| uses: actions/upload-release-asset@v1 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| VERSION: ${{ env.VERSION }} | |
| with: | |
| upload_url: ${{ steps.create_release.outputs.upload_url }} | |
| asset_path: artifacts/*.* | |
| asset_name: ${{ github.ref_name }}-build-${{ matrix.platform }} | |
| asset_content_type: application/octet-stream | |
| # - name: Find All Files Matching VERSION | |
| # id: find_files | |
| # run: | | |
| # VERSION=${{ env.VERSION }} | |
| # files=($(ls ./*${VERSION}* 2>/dev/null || echo "")) | |
| # if [ ${#files[@]} -eq 0 ]; then | |
| # echo "Error: No files found matching VERSION ${VERSION}" | |
| # exit 1 | |
| # fi | |
| # echo "Found files: ${files[@]}" | |
| # file_list=$(IFS=','; echo "${files[*]}") | |
| # echo "file_list=$file_list" >> $GITHUB_ENV | |
| # - name: Upload Release Assets | |
| # run: | | |
| # IFS=',' read -r -a file_array <<< "${{ env.file_list }}" | |
| # for file in "${file_array[@]}"; do | |
| # echo "Uploading $file..." | |
| # curl -XPOST \ | |
| # -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ | |
| # -H "Content-Type: application/octet-stream" \ | |
| # --data-binary @$file \ | |
| # "https://uploads.github.com/repos/iDataVisualizationLab/TxDOT/releases/${{ steps.create_release.outputs.id }}/assets?name=$(basename $file)" | |
| # done | |
| # env: | |
| # file_list: ${{ env.file_list }} | |