VRCX #1
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: VRCX | |
| on: | |
| - workflow_dispatch | |
| concurrency: | |
| group: ${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| set_version: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| version: ${{ steps.version.outputs.version }} | |
| date: ${{ steps.version.outputs.date }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - id: version | |
| run: | | |
| git_hash=$(git rev-parse --short "$GITHUB_SHA") | |
| export FILENAME="$(date '+%Y-%m-%dT%H.%M')-${git_hash}" | |
| export DATE="$(date '+%Y.%m.%d')" | |
| echo "version=${FILENAME}" >> $GITHUB_OUTPUT | |
| echo "date=${DATE}" >> $GITHUB_OUTPUT | |
| build_dotnet_windows: | |
| runs-on: windows-latest | |
| needs: set_version | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup .NET 9 | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: '9.0.x' | |
| - name: Set version | |
| run: | | |
| echo "${{ needs.set_version.outputs.version }}" > Version | |
| cat Version | |
| - name: Build Cef .NET Application | |
| run: dotnet build Dotnet\VRCX-Cef.csproj -p:Configuration=Release -p:Platform=x64 -p:RestorePackagesConfig=true -t:"Restore;Clean;Build" -m --self-contained | |
| - name: Build DB Merger | |
| run: dotnet build DBMerger\DBMerger.csproj -p:Configuration=Release -p:Platform=x64 -p:RestorePackagesConfig=true -t:"Restore;Clean;Build" -m --self-contained | |
| - name: Upload Cef dotnet artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Cef-Release | |
| path: build/Cef | |
| build_dotnet_linux: | |
| runs-on: ubuntu-latest | |
| needs: set_version | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup .NET 9 | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: '9.0.x' | |
| - name: Set version | |
| run: | | |
| echo "${{ needs.set_version.outputs.version }}" > Version | |
| cat Version | |
| - name: Build Electron .NET Application | |
| run: dotnet build 'Dotnet/VRCX-Electron.csproj' -p:Configuration=Release -p:Platform=x64 -p:RestorePackagesConfig=true -t:"Restore;Clean;Build" -m --self-contained | |
| - name: Upload Electron dotnet artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Electron-Release | |
| path: build/Electron | |
| build_node: | |
| runs-on: ubuntu-latest | |
| needs: [set_version, build_dotnet_linux] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set version | |
| run: | | |
| echo "${{ needs.set_version.outputs.version }}" > Version | |
| cat Version | |
| - name: Use Node.js | |
| uses: actions/setup-node@v3 | |
| with: | |
| node-version: lts/* | |
| - name: Restore dependencies | |
| run: npm ci | |
| - name: Build Cef-html | |
| run: npm run prod | |
| - name: Upload Cef-html artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Cef-html | |
| path: build/html | |
| - name: Build Electron-html | |
| run: npm run prod-linux | |
| - name: Download Electron dotnet artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: Electron-Release | |
| path: build/Electron | |
| - name: Build AppImage | |
| run: npm run build-electron | |
| - name: Upload Electron AppImage artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Electron-AppImage | |
| path: 'build/VRCX_${{ needs.set_version.outputs.version }}.AppImage' | |
| build_macos: | |
| runs-on: macos-latest | |
| needs: [set_version, build_dotnet_linux, build_node] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set version | |
| run: | | |
| echo "${{ needs.set_version.outputs.version }}" > Version | |
| cat Version | |
| - name: Use Node.js | |
| uses: actions/setup-node@v3 | |
| with: | |
| node-version: lts/* | |
| - name: Restore dependencies | |
| run: npm ci | |
| - name: Build Electron-html | |
| run: npm run prod-linux | |
| - name: Download Electron dotnet artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: Electron-Release | |
| path: build/Electron | |
| - name: Build macOS .dmg | |
| run: npm run build-electron | |
| - name: Upload Electron macOS artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Electron-MacApp | |
| path: 'build/VRCX_${{ needs.set_version.outputs.version }}.dmg' | |
| create_setup: | |
| runs-on: ubuntu-latest | |
| needs: | |
| [set_version, build_node, build_dotnet_windows, build_dotnet_linux] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set version | |
| run: | | |
| echo "!define PRODUCT_VERSION_FROM_FILE \"${{ needs.set_version.outputs.date }}.0\"" > Installer/version_define.nsh | |
| - name: Install 7-zip and makensis | |
| run: sudo apt update && sudo apt install -y p7zip-full nsis nsis-pluginapi | |
| - name: Set plugin permissions | |
| run: sudo chown -R $(whoami) /usr/share/nsis/Plugins/ | |
| - name: Download Cef dotnet artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: Cef-Release | |
| path: build/Cef | |
| - name: Download Cef-html artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: Cef-html | |
| path: build/Cef/html | |
| - name: Create nsis installer | |
| uses: joncloud/makensis-action@v4 | |
| with: | |
| script-file: Installer/installer.nsi | |
| additional-plugin-paths: Installer/Plugins | |
| - name: Rename setup | |
| run: | | |
| file_name="VRCX_${{ needs.set_version.outputs.version }}_Setup.exe" | |
| echo "Setup FileName: ${file_name}" | |
| mv Installer/VRCX_Setup.exe $file_name | |
| - name: Make zip | |
| run: | | |
| file_name="VRCX_${{ needs.set_version.outputs.version }}.zip" | |
| cd build/Cef | |
| 7z a -tzip ${file_name} * -mx=7 -xr0!*.log | |
| mv ${file_name} ../../${file_name} | |
| echo "Zip FileName: ${file_name}" | |
| - name: Upload Setup artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: VRCX-Setup | |
| path: 'VRCX_${{ needs.set_version.outputs.version }}_Setup.exe' | |
| - name: Upload Zip artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: VRCX-Zip | |
| path: 'VRCX_${{ needs.set_version.outputs.version }}.zip' |