From 074f39ed5e49bbbd3c5d129f4b094cf8c189ca7a Mon Sep 17 00:00:00 2001 From: Natsumi Date: Tue, 12 Aug 2025 14:53:30 +1200 Subject: [PATCH] Fix macOS action --- .github/workflows/github_actions.yml | 365 ++++++++++++++------------- 1 file changed, 194 insertions(+), 171 deletions(-) diff --git a/.github/workflows/github_actions.yml b/.github/workflows/github_actions.yml index 34e52390..40646a7d 100644 --- a/.github/workflows/github_actions.yml +++ b/.github/workflows/github_actions.yml @@ -8,191 +8,214 @@ concurrency: cancel-in-progress: true jobs: - set_version: - runs-on: ubuntu-latest - outputs: - version: ${{ steps.version.outputs.version }} - date: ${{ steps.version.outputs.date }} + 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 + 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 + build_dotnet_windows: + runs-on: windows-latest + needs: set_version - steps: - - uses: actions/checkout@v4 + 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 + - 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 Cef .NET Application + 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 + build_dotnet_linux: + runs-on: ubuntu-latest + needs: set_version - steps: - - uses: actions/checkout@v4 + 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 + - 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-Linux + path: build/Electron - build_node: - runs-on: ubuntu-latest - needs: [set_version, build_dotnet_linux] + build_dotnet_macos: + runs-on: macos-latest + needs: set_version - steps: - - uses: actions/checkout@v4 + 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: 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 -a x64 --self-contained + - name: Upload Electron dotnet artifacts + uses: actions/upload-artifact@v4 + with: + name: Electron-Release-macOS + path: build/Electron - - 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_node: + runs-on: ubuntu-latest + needs: [set_version, build_dotnet_linux] - build_macos: - runs-on: macos-latest - needs: [set_version, build_dotnet_linux, build_node] + steps: + - uses: actions/checkout@v4 - steps: - - uses: actions/checkout@v4 + - name: Set version + run: | + echo "${{ needs.set_version.outputs.version }}" > Version + cat Version + - name: Node.js + uses: actions/setup-node@v4 + 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: 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 --arch=x64 - - name: Build Electron-html - run: npm run prod-linux --arch=x64 - - 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' + - name: Build Electron-html + run: npm run prod-linux + - name: Download Electron dotnet artifacts + uses: actions/download-artifact@v4 + with: + name: Electron-Release-Linux + 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" - create_setup: - runs-on: ubuntu-latest - needs: - [set_version, build_node, build_dotnet_windows, build_dotnet_linux] + build_macos: + runs-on: macos-latest + needs: [set_version, build_dotnet_macos] - steps: - - uses: actions/checkout@v4 + 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' + - name: Set version + run: | + echo "${{ needs.set_version.outputs.version }}" > Version + cat Version + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: lts/* + - name: Restore dependencies + run: npm ci --arch=x64 + - name: Build Electron-html + run: npm run prod-linux --arch=x64 + + - name: Download Electron dotnet artifacts + uses: actions/download-artifact@v4 + with: + name: Electron-Release-macOS + 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-MacDmg + path: 'build/VRCX_${{ needs.set_version.outputs.version }}.dmg' + + create_setup: + runs-on: ubuntu-latest + needs: [set_version, build_dotnet_windows, build_dotnet_linux, build_dotnet_macos, build_node, build_macos] + + 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'