build: install Rust toolchain for Slint #510
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: Build and Release | |
| on: | |
| push: | |
| branches: | |
| - "**" | |
| - "!ci/linux-build-image" | |
| tags: | |
| - "*" | |
| workflow_dispatch: | |
| inputs: | |
| patch: | |
| description: "Hotfix patch number, for example 1 or 2. Use 0 for a normal build." | |
| required: false | |
| default: "0" | |
| permissions: | |
| contents: write | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| jobs: | |
| build-linux: | |
| name: Build Linux (${{ matrix.arch }}) | |
| runs-on: ${{ matrix.runner }} | |
| strategy: | |
| matrix: | |
| include: | |
| - arch: amd64 | |
| runner: ubuntu-24.04 | |
| image: crossdesk/ubuntu22.04:buildenv-cuda12.6.3-xmake3.0.9-rust1.92.0 | |
| package_script: ./scripts/linux/pkg_amd64.sh | |
| - arch: arm64 | |
| runner: ubuntu-24.04-arm | |
| image: crossdesk/ubuntu22.04:buildenv-cuda12.6.3-xmake3.0.9-rust1.92.0 | |
| package_script: ./scripts/linux/pkg_arm64.sh | |
| container: | |
| image: ${{ matrix.image }} | |
| options: --user root | |
| steps: | |
| - name: Extract version number | |
| shell: bash | |
| run: | | |
| VERSION_REF="${GITHUB_REF##*/}" | |
| VERSION_BASE="${VERSION_REF#v}" | |
| PATCH_NUMBER="${{ github.event.inputs.patch }}" | |
| BUILD_DATE_OVERRIDE="" | |
| if [[ ! "${PATCH_NUMBER}" =~ ^[0-9]+$ ]]; then | |
| PATCH_NUMBER=0 | |
| fi | |
| if [[ "${VERSION_BASE}" =~ ^([0-9]+(\.[0-9]+){1,3})-([0-9]+)-([0-9]{8})$ ]]; then | |
| VERSION_BASE="${BASH_REMATCH[1]}" | |
| PATCH_NUMBER="${BASH_REMATCH[3]}" | |
| BUILD_DATE_OVERRIDE="${BASH_REMATCH[4]}" | |
| elif [[ "${VERSION_BASE}" =~ ^([0-9]+(\.[0-9]+){1,3})-([0-9]{8})-([0-9]+)$ ]]; then | |
| VERSION_BASE="${BASH_REMATCH[1]}" | |
| BUILD_DATE_OVERRIDE="${BASH_REMATCH[3]}" | |
| PATCH_NUMBER="${BASH_REMATCH[4]}" | |
| elif [[ "${VERSION_BASE}" =~ ^([0-9]+(\.[0-9]+){1,3})-([0-9]{8})$ ]]; then | |
| VERSION_BASE="${BASH_REMATCH[1]}" | |
| BUILD_DATE_OVERRIDE="${BASH_REMATCH[3]}" | |
| elif [[ "${VERSION_BASE}" =~ ^([0-9]+(\.[0-9]+){1,3})-([0-9]+)$ && "${PATCH_NUMBER}" == "0" ]]; then | |
| VERSION_BASE="${BASH_REMATCH[1]}" | |
| PATCH_NUMBER="${BASH_REMATCH[3]}" | |
| fi | |
| echo "VERSION_BASE=${VERSION_BASE}" >> $GITHUB_ENV | |
| echo "PATCH_NUMBER=${PATCH_NUMBER}" >> $GITHUB_ENV | |
| echo "BUILD_DATE_OVERRIDE=${BUILD_DATE_OVERRIDE}" >> $GITHUB_ENV | |
| - name: Set legal Debian version | |
| shell: bash | |
| run: | | |
| BUILD_DATE="${BUILD_DATE_OVERRIDE}" | |
| if [[ -z "${BUILD_DATE}" ]]; then | |
| BUILD_DATE=$(TZ=Asia/Shanghai date +%Y%m%d) | |
| fi | |
| if [[ ! "${VERSION_BASE}" =~ ^[0-9] ]]; then | |
| VERSION_BASE="0.0.0-${VERSION_BASE}" | |
| fi | |
| if [[ "${PATCH_NUMBER}" != "0" ]]; then | |
| LEGAL_VERSION="v${VERSION_BASE}-${PATCH_NUMBER}-${BUILD_DATE}" | |
| else | |
| LEGAL_VERSION="v${VERSION_BASE}-${BUILD_DATE}" | |
| fi | |
| echo "LEGAL_VERSION=${LEGAL_VERSION}" >> $GITHUB_ENV | |
| echo "BUILD_DATE=${BUILD_DATE}" >> $GITHUB_ENV | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| with: | |
| submodules: recursive | |
| - name: Verify Linux build image | |
| run: verify-crossdesk-build-image | |
| - name: Build CrossDesk | |
| env: | |
| CUDA_PATH: /usr/local/cuda | |
| XMAKE_GLOBALDIR: /data | |
| run: | | |
| xmake f --CROSSDESK_VERSION=${LEGAL_VERSION} --USE_CUDA=true --root -y | |
| xmake b -vy --root crossdesk | |
| - name: Package | |
| run: | | |
| chmod +x ${{ matrix.package_script }} | |
| ${{ matrix.package_script }} ${LEGAL_VERSION} | |
| - name: Verify packaged Ubuntu 22.04 glibc baseline | |
| run: | | |
| PACKAGE_FILE="${GITHUB_WORKSPACE}/crossdesk-linux-${{ matrix.arch }}-${LEGAL_VERSION}.deb" | |
| VERIFY_DIR="${RUNNER_TEMP}/crossdesk-glibc-${{ matrix.arch }}" | |
| install -d "${VERIFY_DIR}" | |
| dpkg-deb --extract "${PACKAGE_FILE}" "${VERIFY_DIR}" | |
| verify-crossdesk-glibc-baseline "${VERIFY_DIR}" 2.35 | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: crossdesk-linux-${{ matrix.arch }}-${{ env.LEGAL_VERSION }} | |
| path: ${{ github.workspace }}/crossdesk-linux-${{ matrix.arch }}-${{ env.LEGAL_VERSION }}.deb | |
| # macOS | |
| build-macos: | |
| name: Build on macOS | |
| runs-on: ${{ matrix.runner }} | |
| env: | |
| MACOSX_DEPLOYMENT_TARGET: "14.0" | |
| strategy: | |
| matrix: | |
| include: | |
| - arch: x64 | |
| binary_arch: x86_64 | |
| runner: macos-15-intel | |
| cache-key: intel-macos14 | |
| out-dir: ./build/macosx/x86_64/release/crossdesk | |
| package_script: ./scripts/macosx/pkg_x64.sh | |
| - arch: arm64 | |
| binary_arch: arm64 | |
| runner: macos-14 | |
| cache-key: arm-macos14 | |
| out-dir: ./build/macosx/arm64/release/crossdesk | |
| package_script: ./scripts/macosx/pkg_arm64.sh | |
| steps: | |
| - name: Extract version number | |
| id: version | |
| shell: bash | |
| run: | | |
| VERSION_REF="${GITHUB_REF##*/}" | |
| VERSION_BASE="${VERSION_REF#v}" | |
| BUILD_DATE=$(TZ=Asia/Shanghai date +%Y%m%d) | |
| PATCH_NUMBER="${{ github.event.inputs.patch }}" | |
| if [[ ! "${PATCH_NUMBER}" =~ ^[0-9]+$ ]]; then | |
| PATCH_NUMBER=0 | |
| fi | |
| if [[ "${VERSION_BASE}" =~ ^([0-9]+(\.[0-9]+){1,3})-([0-9]+)-([0-9]{8})$ ]]; then | |
| VERSION_BASE="${BASH_REMATCH[1]}" | |
| PATCH_NUMBER="${BASH_REMATCH[3]}" | |
| BUILD_DATE="${BASH_REMATCH[4]}" | |
| elif [[ "${VERSION_BASE}" =~ ^([0-9]+(\.[0-9]+){1,3})-([0-9]{8})-([0-9]+)$ ]]; then | |
| VERSION_BASE="${BASH_REMATCH[1]}" | |
| BUILD_DATE="${BASH_REMATCH[3]}" | |
| PATCH_NUMBER="${BASH_REMATCH[4]}" | |
| elif [[ "${VERSION_BASE}" =~ ^([0-9]+(\.[0-9]+){1,3})-([0-9]{8})$ ]]; then | |
| VERSION_BASE="${BASH_REMATCH[1]}" | |
| BUILD_DATE="${BASH_REMATCH[3]}" | |
| elif [[ "${VERSION_BASE}" =~ ^([0-9]+(\.[0-9]+){1,3})-([0-9]+)$ && "${PATCH_NUMBER}" == "0" ]]; then | |
| VERSION_BASE="${BASH_REMATCH[1]}" | |
| PATCH_NUMBER="${BASH_REMATCH[3]}" | |
| fi | |
| if [[ "${PATCH_NUMBER}" != "0" ]]; then | |
| VERSION_NUM="v${VERSION_BASE}-${PATCH_NUMBER}-${BUILD_DATE}" | |
| else | |
| VERSION_NUM="v${VERSION_BASE}-${BUILD_DATE}" | |
| fi | |
| echo "VERSION_NUM=${VERSION_NUM}" >> $GITHUB_ENV | |
| echo "VERSION_NUM=${VERSION_NUM}" | |
| echo "BUILD_DATE=${BUILD_DATE}" >> $GITHUB_ENV | |
| echo "PATCH_NUMBER=${PATCH_NUMBER}" >> $GITHUB_ENV | |
| - name: Cache xmake dependencies | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~/.xmake/packages | |
| key: "${{ runner.os }}-xmake-deps-${{ matrix.cache-key }}-${{ github.run_id }}" | |
| restore-keys: | | |
| ${{ runner.os }}-xmake-deps-${{ matrix.cache-key }}- | |
| - name: Install xmake | |
| run: brew install xmake | |
| - name: Update xmake repositories | |
| run: xmake repo -u | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Initialize submodules | |
| run: git submodule update --init --recursive | |
| - name: Build CrossDesk | |
| run: | | |
| xmake f --target_minver=${MACOSX_DEPLOYMENT_TARGET} --CROSSDESK_VERSION=${VERSION_NUM} --USE_CUDA=true -y | |
| xmake b -vy crossdesk | |
| - name: Package CrossDesk app | |
| run: | | |
| chmod +x ${{ matrix.package_script }} | |
| ${{ matrix.package_script }} ${VERSION_NUM} | |
| - name: Verify packaged app | |
| shell: bash | |
| run: | | |
| PACKAGE_FILE="${GITHUB_WORKSPACE}/crossdesk-macos-${{ matrix.arch }}-${VERSION_NUM}.pkg" | |
| VERIFY_DIR="$(mktemp -d "${RUNNER_TEMP}/crossdesk-macos-pkg.XXXXXX")" | |
| trap 'rm -rf "${VERIFY_DIR}"' EXIT | |
| pkgutil --expand-full "${PACKAGE_FILE}" "${VERIFY_DIR}/expanded" | |
| APP_PATH="$(find "${VERIFY_DIR}/expanded" -type d -name 'CrossDesk.app' -print -quit)" | |
| if [[ -z "${APP_PATH}" ]]; then | |
| echo "CrossDesk.app is missing from ${PACKAGE_FILE}" >&2 | |
| exit 1 | |
| fi | |
| ./scripts/macosx/verify_app.sh "${APP_PATH}" "${{ matrix.binary_arch }}" | |
| - name: Upload build artifacts | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: crossdesk-macos-${{ matrix.arch }}-${{ env.VERSION_NUM }} | |
| path: crossdesk-macos-${{ matrix.arch }}-${{ env.VERSION_NUM }}.pkg | |
| - name: Move files to release dir | |
| run: | | |
| mkdir -p release | |
| cp crossdesk-macos-${{ matrix.arch }}-${{ env.VERSION_NUM }}.pkg release/ | |
| # Windows | |
| build-windows-x64: | |
| name: Build on Windows x64 | |
| runs-on: windows-2022 | |
| env: | |
| XMAKE_GLOBALDIR: D:\xmake_global | |
| steps: | |
| - name: Extract version number | |
| shell: pwsh | |
| run: | | |
| $ref = $env:GITHUB_REF | |
| $version = $ref -replace '^refs/(tags|heads)/', '' | |
| $version = $version -replace '^v', '' | |
| $version = $version -replace '/', '-' | |
| $BUILD_DATE = ([System.TimeZoneInfo]::ConvertTimeBySystemTimeZoneId((Get-Date), "China Standard Time")).ToString("yyyyMMdd") | |
| $PATCH_NUMBER = "${{ github.event.inputs.patch }}" | |
| if ($PATCH_NUMBER -notmatch '^[0-9]+$') { | |
| $PATCH_NUMBER = "0" | |
| } | |
| if ($version -match '^([0-9]+(\.[0-9]+){1,3})-([0-9]+)-([0-9]{8})$') { | |
| $version = $Matches[1] | |
| $PATCH_NUMBER = $Matches[3] | |
| $BUILD_DATE = $Matches[4] | |
| } elseif ($version -match '^([0-9]+(\.[0-9]+){1,3})-([0-9]{8})-([0-9]+)$') { | |
| $version = $Matches[1] | |
| $BUILD_DATE = $Matches[3] | |
| $PATCH_NUMBER = $Matches[4] | |
| } elseif ($version -match '^([0-9]+(\.[0-9]+){1,3})-([0-9]{8})$') { | |
| $version = $Matches[1] | |
| $BUILD_DATE = $Matches[3] | |
| } elseif ($version -match '^([0-9]+(\.[0-9]+){1,3})-([0-9]+)$' -and $PATCH_NUMBER -eq "0") { | |
| $version = $Matches[1] | |
| $PATCH_NUMBER = $Matches[3] | |
| } | |
| if ($PATCH_NUMBER -ne "0") { | |
| $VERSION_NUM = "v$version-$PATCH_NUMBER-$BUILD_DATE" | |
| } else { | |
| $VERSION_NUM = "v$version-$BUILD_DATE" | |
| } | |
| echo "VERSION_NUM=$VERSION_NUM" >> $env:GITHUB_ENV | |
| echo "BUILD_DATE=$BUILD_DATE" >> $env:GITHUB_ENV | |
| echo "PATCH_NUMBER=$PATCH_NUMBER" >> $env:GITHUB_ENV | |
| - name: Cache xmake dependencies | |
| uses: actions/cache@v5 | |
| with: | |
| path: D:\xmake_global\.xmake\packages | |
| key: "${{ runner.os }}-xmake-deps-intel-${{ github.run_id }}" | |
| restore-keys: | | |
| ${{ runner.os }}-xmake-deps-intel- | |
| - name: Install xmake | |
| run: | | |
| Invoke-Expression (Invoke-Webrequest 'https://raw.githubusercontent.com/tboox/xmake/master/scripts/get.ps1' -UseBasicParsing).Content | |
| echo "C:\Users\runneradmin\xmake" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
| xmake repo -u | |
| xmake create cuda | |
| Set-Location cuda | |
| xmake g --theme=plain | |
| $cudaPath = "" | |
| $packagesPath = "D:\xmake_global\.xmake\packages" | |
| if (Test-Path $packagesPath) { | |
| Write-Host "Packages directory exists: $packagesPath" | |
| try { | |
| $info = xmake require --info "cuda 12.6.3" 2>$null | |
| if ($null -ne $info -and $info -ne "") { | |
| $cudaPath = (($info | Select-String installdir).ToString() -replace '.*installdir:\s*','').Trim() | |
| } | |
| } catch {} | |
| } else { | |
| Write-Host "Packages directory not found: $packagesPath" | |
| Write-Host "Installing CUDA package..." | |
| xmake require -vy "cuda 12.6.3" | |
| $info = xmake require --info "cuda 12.6.3" | |
| $cudaPath = (($info | Select-String installdir).ToString() -replace '.*installdir:\s*','').Trim() | |
| } | |
| echo "CUDA_PATH=$cudaPath" >> $env:GITHUB_ENV | |
| Write-Host "Resolved CUDA_PATH = $cudaPath" | |
| Pop-Location | |
| - name: Download INetC plugin | |
| shell: powershell | |
| run: | | |
| $url = "https://github.com/DigitalMediaServer/NSIS-INetC-plugin/releases/download/v1.0.5.7/InetC.zip" | |
| $out = "$env:RUNNER_TEMP\InetC.zip" | |
| Invoke-WebRequest -Uri $url -OutFile $out | |
| Expand-Archive $out -DestinationPath "$env:RUNNER_TEMP\InetC" -Force | |
| $source = "$env:RUNNER_TEMP\InetC\x86-unicode\INetC.dll" | |
| $target = "C:\Program Files (x86)\NSIS\Plugins\x86-unicode\INetC.dll" | |
| Write-Host "Copying $source to $target" | |
| Copy-Item $source $target -Force | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Initialize submodules | |
| run: git submodule update --init --recursive | |
| - name: Copy nsProcess plugin to NSIS folder | |
| run: | | |
| $nsisPluginDir = "C:\Program Files (x86)\NSIS\Plugins\x86-unicode" | |
| copy "${{ github.workspace }}\scripts\windows\nsProcess.dll" $nsisPluginDir | |
| - name: Build CrossDesk | |
| run: | | |
| xmake f --CROSSDESK_VERSION=${{ env.VERSION_NUM }} --USE_CUDA=true -y | |
| xmake b -vy crossdesk | |
| - name: Package | |
| shell: pwsh | |
| run: | | |
| & "${{ github.workspace }}\scripts\windows\pkg_x64.ps1" $env:VERSION_NUM | |
| - name: Build Portable CrossDesk | |
| run: | | |
| xmake f --CROSSDESK_VERSION=${{ env.VERSION_NUM }} --USE_CUDA=true --CROSSDESK_PORTABLE=true -y | |
| xmake b -vy crossdesk | |
| - name: Package Portable | |
| shell: pwsh | |
| run: | | |
| $buildDir = "${{ github.workspace }}\build\windows\x64\release" | |
| $portableDir = "${{ github.workspace }}\portable" | |
| New-Item -ItemType Directory -Force -Path $portableDir | |
| $portableFiles = @( | |
| @("crossdesk.exe", "CrossDesk.exe"), | |
| @("crossdesk_service.exe", "crossdesk_service.exe"), | |
| @("crossdesk_session_helper.exe", "crossdesk_session_helper.exe") | |
| ) | |
| foreach ($file in $portableFiles) { | |
| $source = Join-Path $buildDir $file[0] | |
| $destination = Join-Path $portableDir $file[1] | |
| if (!(Test-Path $source)) { | |
| throw "Missing portable package file: $source" | |
| } | |
| Copy-Item $source $destination -Force | |
| } | |
| Copy-Item (Join-Path $buildDir "*.dll") $portableDir -Force | |
| foreach ($file in $portableFiles) { | |
| $packagedFile = Join-Path $portableDir $file[1] | |
| if (!(Test-Path $packagedFile)) { | |
| throw "Portable package is missing: $packagedFile" | |
| } | |
| } | |
| Compress-Archive -Path "$portableDir\*" -DestinationPath "${{ github.workspace }}\crossdesk-win-x64-portable-${{ env.VERSION_NUM }}.zip" | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: crossdesk-win-x64-${{ env.VERSION_NUM }} | |
| path: ${{ github.workspace }}/scripts/windows/crossdesk-win-x64-${{ env.VERSION_NUM }}.exe | |
| - name: Upload portable artifact | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: crossdesk-win-x64-portable-${{ env.VERSION_NUM }} | |
| path: ${{ github.workspace }}/crossdesk-win-x64-portable-${{ env.VERSION_NUM }}.zip | |
| release: | |
| name: Publish Release | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| needs: | |
| [build-linux, build-macos, build-windows-x64] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v5 | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v8 | |
| with: | |
| path: artifacts | |
| - name: Extract version number | |
| id: version | |
| shell: bash | |
| run: | | |
| VERSION_REF="${GITHUB_REF##*/}" | |
| VERSION_BASE="${VERSION_REF#v}" | |
| BUILD_DATE=$(TZ=Asia/Shanghai date +%Y%m%d) | |
| PATCH_NUMBER="${{ github.event.inputs.patch }}" | |
| if [[ ! "${PATCH_NUMBER}" =~ ^[0-9]+$ ]]; then | |
| PATCH_NUMBER=0 | |
| fi | |
| if [[ "${VERSION_BASE}" =~ ^([0-9]+(\.[0-9]+){1,3})-([0-9]+)-([0-9]{8})$ ]]; then | |
| VERSION_BASE="${BASH_REMATCH[1]}" | |
| PATCH_NUMBER="${BASH_REMATCH[3]}" | |
| BUILD_DATE="${BASH_REMATCH[4]}" | |
| elif [[ "${VERSION_BASE}" =~ ^([0-9]+(\.[0-9]+){1,3})-([0-9]{8})-([0-9]+)$ ]]; then | |
| VERSION_BASE="${BASH_REMATCH[1]}" | |
| BUILD_DATE="${BASH_REMATCH[3]}" | |
| PATCH_NUMBER="${BASH_REMATCH[4]}" | |
| elif [[ "${VERSION_BASE}" =~ ^([0-9]+(\.[0-9]+){1,3})-([0-9]{8})$ ]]; then | |
| VERSION_BASE="${BASH_REMATCH[1]}" | |
| BUILD_DATE="${BASH_REMATCH[3]}" | |
| elif [[ "${VERSION_BASE}" =~ ^([0-9]+(\.[0-9]+){1,3})-([0-9]+)$ && "${PATCH_NUMBER}" == "0" ]]; then | |
| VERSION_BASE="${BASH_REMATCH[1]}" | |
| PATCH_NUMBER="${BASH_REMATCH[3]}" | |
| fi | |
| BUILD_DATE_ISO="${BUILD_DATE:0:4}-${BUILD_DATE:4:2}-${BUILD_DATE:6:2}" | |
| if [[ "${PATCH_NUMBER}" != "0" ]]; then | |
| VERSION_NUM="${VERSION_BASE}-${PATCH_NUMBER}-${BUILD_DATE}" | |
| else | |
| VERSION_NUM="${VERSION_BASE}-${BUILD_DATE}" | |
| fi | |
| VERSION_WITH_V="v${VERSION_NUM}" | |
| echo "VERSION_NUM=${VERSION_NUM}" >> $GITHUB_OUTPUT | |
| echo "VERSION_WITH_V=${VERSION_WITH_V}" >> $GITHUB_OUTPUT | |
| echo "VERSION_BASE=${VERSION_BASE}" >> $GITHUB_OUTPUT | |
| echo "BUILD_DATE=${BUILD_DATE}" >> $GITHUB_OUTPUT | |
| echo "BUILD_DATE_ISO=${BUILD_DATE_ISO}" >> $GITHUB_OUTPUT | |
| echo "PATCH_NUMBER=${PATCH_NUMBER}" >> $GITHUB_OUTPUT | |
| - name: Rename artifacts | |
| run: | | |
| mkdir -p release | |
| cp artifacts/crossdesk-macos-x64-${{ steps.version.outputs.VERSION_WITH_V }}/* release/crossdesk-macos-x64-${{ steps.version.outputs.VERSION_WITH_V }}.pkg | |
| cp artifacts/crossdesk-macos-arm64-${{ steps.version.outputs.VERSION_WITH_V }}/* release/crossdesk-macos-arm64-${{ steps.version.outputs.VERSION_WITH_V }}.pkg | |
| cp artifacts/crossdesk-linux-amd64-${{ steps.version.outputs.VERSION_WITH_V }}/* release/crossdesk-linux-amd64-${{ steps.version.outputs.VERSION_WITH_V }}.deb | |
| cp artifacts/crossdesk-linux-arm64-${{ steps.version.outputs.VERSION_WITH_V }}/* release/crossdesk-linux-arm64-${{ steps.version.outputs.VERSION_WITH_V }}.deb | |
| cp artifacts/crossdesk-win-x64-${{ steps.version.outputs.VERSION_WITH_V }}/* release/crossdesk-win-x64-${{ steps.version.outputs.VERSION_WITH_V }}.exe | |
| cp artifacts/crossdesk-win-x64-portable-${{ steps.version.outputs.VERSION_WITH_V }}/* release/crossdesk-win-x64-portable-${{ steps.version.outputs.VERSION_WITH_V }}.zip | |
| - name: List release files | |
| run: ls -lh release/ | |
| - name: Upload to Versioned GitHub Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: ${{ steps.version.outputs.VERSION_WITH_V }} | |
| name: Release ${{ steps.version.outputs.VERSION_WITH_V }} | |
| draft: false | |
| prerelease: false | |
| files: release/* | |
| generate_release_notes: false | |
| body: | | |
| Binary release only. Source code is not included. | |
| - name: Create or update 'latest' tag | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| git tag -f latest | |
| git push origin latest --force | |
| - name: Upload to GitHub Release (latest) | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: latest | |
| name: Latest Release | |
| draft: false | |
| prerelease: false | |
| files: release/* | |
| generate_release_notes: false | |
| - name: Upload artifacts to server | |
| uses: burnett01/rsync-deployments@5.2 | |
| with: | |
| switches: -avzr --progress --delete | |
| path: release/* | |
| remote_path: /var/www/html/downloads/ | |
| remote_host: ${{ secrets.SERVER_HOST }} | |
| remote_user: ${{ secrets.SERVER_USER }} | |
| remote_key: ${{ secrets.SERVER_KEY }} | |
| - name: Generate version.json | |
| run: | | |
| cat > version.json << EOF | |
| { | |
| "latest_version": "${{ steps.version.outputs.VERSION_NUM }}", | |
| "version": "${{ steps.version.outputs.VERSION_NUM }}", | |
| "releaseDate": "${{ steps.version.outputs.BUILD_DATE_ISO }}", | |
| "patch": ${{ steps.version.outputs.PATCH_NUMBER }}, | |
| "releaseName": "", | |
| "releaseNotes": "", | |
| "tagName": "${{ steps.version.outputs.VERSION_WITH_V }}", | |
| "downloads": { | |
| "windows-x64": { | |
| "url": "https://downloads.crossdesk.cn/crossdesk-win-x64-${{ steps.version.outputs.VERSION_WITH_V }}.exe", | |
| "filename": "crossdesk-win-x64-${{ steps.version.outputs.VERSION_WITH_V }}.exe" | |
| }, | |
| "windows-x64-portable": { | |
| "url": "https://downloads.crossdesk.cn/crossdesk-win-x64-portable-${{ steps.version.outputs.VERSION_WITH_V }}.zip", | |
| "filename": "crossdesk-win-x64-portable-${{ steps.version.outputs.VERSION_WITH_V }}.zip" | |
| }, | |
| "macos-x64": { | |
| "url": "https://downloads.crossdesk.cn/crossdesk-macos-x64-${{ steps.version.outputs.VERSION_WITH_V }}.pkg", | |
| "filename": "crossdesk-macos-x64-${{ steps.version.outputs.VERSION_WITH_V }}.pkg" | |
| }, | |
| "macos-arm64": { | |
| "url": "https://downloads.crossdesk.cn/crossdesk-macos-arm64-${{ steps.version.outputs.VERSION_WITH_V }}.pkg", | |
| "filename": "crossdesk-macos-arm64-${{ steps.version.outputs.VERSION_WITH_V }}.pkg" | |
| }, | |
| "linux-amd64": { | |
| "url": "https://downloads.crossdesk.cn/crossdesk-linux-amd64-${{ steps.version.outputs.VERSION_WITH_V }}.deb", | |
| "filename": "crossdesk-linux-amd64-${{ steps.version.outputs.VERSION_WITH_V }}.deb" | |
| }, | |
| "linux-arm64": { | |
| "url": "https://downloads.crossdesk.cn/crossdesk-linux-arm64-${{ steps.version.outputs.VERSION_WITH_V }}.deb", | |
| "filename": "crossdesk-linux-arm64-${{ steps.version.outputs.VERSION_WITH_V }}.deb" | |
| } | |
| } | |
| } | |
| EOF | |
| cat version.json | |
| - name: Upload version.json to server | |
| uses: burnett01/rsync-deployments@5.2 | |
| with: | |
| switches: -avzr --delete | |
| path: version.json | |
| remote_path: /var/www/html/version/ | |
| remote_host: ${{ secrets.SERVER_HOST }} | |
| remote_user: ${{ secrets.SERVER_USER }} | |
| remote_key: ${{ secrets.SERVER_KEY }} |