Update package.json version #116
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-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: Install dmg-license | |
| run: npm install dmg-license | |
| - 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 | |
| runs-on: ubuntu-latest | |
| steps: | |
| - 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 | |
| - 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 | |
| - 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 }} | |