mirror of
				https://github.com/open-webui/desktop
				synced 2025-06-26 18:15:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			116 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| name: Build and Release Electron Forge App
 | |
| on:
 | |
|   push:
 | |
|     branches:
 | |
|       - main
 | |
|   pull_request:
 | |
| jobs:
 | |
|   build:
 | |
|     name: Build and Package
 | |
|     runs-on: ${{ matrix.os }}
 | |
|     strategy:
 | |
|       matrix:
 | |
|         include:
 | |
|           # - os: ubuntu-latest
 | |
|           #   arch: x64
 | |
|           # - os: ubuntu-latest
 | |
|           #   arch: arm64
 | |
|           - os: windows-latest
 | |
|             arch: x64
 | |
|           - os: macos-latest
 | |
|             arch: x64
 | |
|           - os: macos-latest
 | |
|             arch: arm64
 | |
|     steps:
 | |
|       - name: Checkout Repository
 | |
|         uses: actions/checkout@v4
 | |
|       - name: Setup Node.js
 | |
|         uses: actions/setup-node@v3
 | |
|         with:
 | |
|           node-version: 22
 | |
|           cache: 'npm'
 | |
|           architecture: ${{ matrix.arch }}
 | |
|       - name: Install Dependencies
 | |
|         run: npm ci
 | |
|       - name: Setup Miniconda
 | |
|         uses: conda-incubator/setup-miniconda@v3
 | |
|         with:
 | |
|           auto-activate-base: true
 | |
|       - name: Install conda-lock and conda-pack
 | |
|         shell: bash -l {0}
 | |
|         run: |
 | |
|           conda install -n base -c conda-forge conda-lock conda-pack
 | |
|       - name: Create Packaged Python
 | |
|         shell: bash -l {0}
 | |
|         run: |
 | |
|           conda activate base
 | |
|           npm run create:python-tar
 | |
|       - name: Create Builds
 | |
|         run: npm run make
 | |
|       - name: Find and Rename Windows Executable
 | |
|         if: ${{ matrix.os == 'windows-latest' }}
 | |
|         shell: pwsh
 | |
|         run: |
 | |
|           # Dynamically locate the `setup.exe` file within the `out/make` directory structure
 | |
|           $exePath = Get-ChildItem -Path out/make -Recurse -Filter "*.exe" | Select-Object -First 1
 | |
|           if (-not $exePath) {
 | |
|             throw "Error: No .exe file was found in the output directory."
 | |
|           }
 | |
|           Write-Host "The found executable is: $exePath"
 | |
|       
 | |
|           # Rename/move the file to a more descriptive name with architecture/OS information
 | |
|           $destinationPath = "${{ matrix.os }}-${{ matrix.arch }}.exe"
 | |
|           Copy-Item -Path $exePath.FullName -Destination $destinationPath
 | |
|           Write-Host "Copied executable to: $destinationPath"
 | |
|       - name: Azure Trusted Signing (Windows Only)
 | |
|         if: ${{ matrix.os == 'windows-latest' }}
 | |
|         uses: azure/trusted-signing-action@v0.5.1
 | |
|         with:
 | |
|           azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
 | |
|           azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
 | |
|           azure-client-secret: ${{ secrets.AZURE_CLIENT_SECRET }}
 | |
|           endpoint: https://eus.codesigning.azure.net/
 | |
|           trusted-signing-account-name: open-webui
 | |
|           certificate-profile-name: open-webui
 | |
|           # Sign the generated .exe file
 | |
|           files-folder: .
 | |
|           files-folder-filter: exe  
 | |
|       - name: Zip Artifacts for macOS/Linux
 | |
|         if: ${{ matrix.os != 'windows-latest' }}
 | |
|         run: |
 | |
|           7z a -tzip ${{ matrix.os }}-${{ matrix.arch }}.zip ./out/make/*
 | |
|       - name: Upload Artifacts
 | |
|         uses: actions/upload-artifact@v3
 | |
|         with:
 | |
|           name: ${{ matrix.os }}-${{ matrix.arch }}
 | |
|           path: |
 | |
|             ${{ matrix.os }}-${{ matrix.arch }}.exe
 | |
|             ${{ matrix.os }}-${{ matrix.arch }}.zip
 | |
|   release:
 | |
|     needs: build
 | |
|     runs-on: ubuntu-latest
 | |
|     if: github.event_name == 'push' && github.ref == 'refs/heads/main'
 | |
|     steps:
 | |
|       - name: Checkout Repository
 | |
|         uses: actions/checkout@v4
 | |
| 
 | |
|       - name: Get Short SHA
 | |
|         id: slug
 | |
|         run: echo "sha8=$(echo ${GITHUB_SHA} | cut -c1-8)" >> $GITHUB_OUTPUT
 | |
| 
 | |
|       - name: Download Artifacts
 | |
|         uses: actions/download-artifact@v3
 | |
| 
 | |
|       - name: Create Release
 | |
|         id: create_release
 | |
|         uses: softprops/action-gh-release@v1
 | |
|         env:
 | |
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | |
|         with:
 | |
|           tag_name: build-${{ steps.slug.outputs.sha8 }}
 | |
|           name: Build ${{ steps.slug.outputs.sha8 }}
 | |
|           draft: false
 | |
|           prerelease: false
 | |
|           files: |
 | |
|             **/*.zip
 | |
|             **/*.exe |