diff options
| author | Jonathan "Geenz" Goodman <geenz@lindenlab.com> | 2026-10-13 14:30:21 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-10-13 14:30:21 -0400 |
| commit | 8ba5d1a8adc47c21b23d9482e72de9517f9a98fc (patch) | |
| tree | f97d67c8ee574c6ebaac8d0d8ba120d041dca051 /.github/workflows | |
| parent | 18648fc51e2a0c750182d8aa3814ed5b6bf8445e (diff) | |
| parent | efc7d2d7bb542ac905cb7ebd82ee329523f95608 (diff) | |
Merge pull request #6193 from secondlife/release/26.4
Release/26.4
Diffstat (limited to '.github/workflows')
| -rw-r--r-- | .github/workflows/build.yaml | 103 | ||||
| -rw-r--r-- | .github/workflows/check-pr.yaml | 2 | ||||
| -rw-r--r-- | .github/workflows/cla.yaml | 2 | ||||
| -rw-r--r-- | .github/workflows/label.yaml | 2 | ||||
| -rw-r--r-- | .github/workflows/pre-commit.yaml | 4 | ||||
| -rw-r--r-- | .github/workflows/stale.yaml | 2 | ||||
| -rw-r--r-- | .github/workflows/tag-release.yaml | 2 |
7 files changed, 91 insertions, 26 deletions
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 866af3dbac..cfce3b06b7 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -51,8 +51,9 @@ jobs: needs: setup strategy: matrix: - runner: ${{ fromJson((github.ref_type == 'tag' && startsWith(github.ref, 'refs/tags/Second_Life')) && '["windows-large","macos-15-xlarge"]' || '["windows-2022","macos-15-xlarge"]') }} + runner: ${{ fromJson((github.ref_type == 'tag' && startsWith(github.ref, 'refs/tags/Second_Life')) && '["windows-large","macos-15-xlarge","linux-large"]' || '["windows-2022","macos-15-xlarge","ubuntu-22.04"]') }} configuration: ${{ fromJson(needs.setup.outputs.configurations) }} + build_variant: [Viewer, Tests] runs-on: ${{ matrix.runner }} outputs: viewer_channel: ${{ steps.build.outputs.viewer_channel }} @@ -87,12 +88,12 @@ jobs: # autobuild-package.xml. AUTOBUILD_VCS_INFO: "true" AUTOBUILD_VSVER: "170" - DEVELOPER_DIR: "/Applications/Xcode_16.4.app/Contents/Developer" + DEVELOPER_DIR: "/Applications/Xcode_26.3.app/Contents/Developer" # Ensure that Linden viewer builds engage Bugsplat. BUGSPLAT_DB: ${{ needs.setup.outputs.bugsplat_db }} - build_coverity: false build_log_dir: ${{ github.workspace }}/.logs - build_viewer: true + build_viewer: ${{ matrix.build_variant == 'Viewer' }} + build_tests: ${{ matrix.build_variant == 'Tests' }} BUILDSCRIPTS_SHARED: ${{ github.workspace }}/.shared # extracted and committed to viewer repo BUILDSCRIPTS_SUPPORT_FUNCTIONS: ${{ github.workspace }}/buildscripts_support_functions @@ -110,23 +111,37 @@ jobs: autobuild_configure_parameters: ${{ (contains(matrix.runner, 'windows') || contains(matrix.runner, 'macos')) && (github.event.inputs.installer_type || 'velopack') == 'velopack' && '-- -DUSE_VELOPACK:BOOL=ON' || '' }} steps: - name: Checkout code - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: ref: ${{ github.event.pull_request.head.sha || github.sha }} + - name: Linux Disk Cleanup + if: matrix.build_variant == 'Viewer' && runner.os == 'Linux' + run: | + # Prune various unused files from linux builder for Viewer build to fix runner disk space exhaustion + df -h + sudo docker container prune -f + sudo docker image prune -a -f + sudo rm -rf /usr/local/share/boost + sudo rm -rf /usr/share/dotnet + sudo rm -rf /usr/local/lib/android + sudo rm -rf /opt/ghc + sudo rm -rf /usr/local/.ghcup + df -h + - name: Setup python - uses: actions/setup-python@v6 + uses: actions/setup-python@v7 with: python-version: "3.11" - name: Checkout build variables - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: repository: secondlife/build-variables ref: master path: .build-variables - name: Checkout master-message-template - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: repository: secondlife/master-message-template path: .master-message-template @@ -136,14 +151,30 @@ jobs: - name: Cache autobuild packages id: cache-installables - uses: actions/cache@v5 + uses: actions/cache@v6 with: path: .autobuild-installables - key: ${{ runner.os }}-64-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }} + key: ${{ runner.os }}-64-${{ matrix.configuration }}-${{ matrix.build_variant }}-${{ hashFiles('autobuild.xml') }} restore-keys: | + ${{ runner.os }}-64-${{ matrix.configuration }}-${{ matrix.build_variant }}- ${{ runner.os }}-64-${{ matrix.configuration }}- ${{ runner.os }}-64- + - name: Install Linux dependencies + if: runner.os == 'Linux' + run: | + sudo apt update + sudo apt install -y \ + libpulse-dev libunwind-dev \ + libgl1-mesa-dev libglu1-mesa-dev libxinerama-dev \ + libxcursor-dev libxfixes-dev libgstreamer1.0-dev \ + libgstreamer-plugins-base1.0-dev ninja-build libxft-dev \ + libpipewire-0.3-dev libdbus-1-dev libvlc-dev \ + libosmesa6-dev + sudo locale-gen en_US.UTF-8 + sudo locale-gen en_GB.UTF-8 + sudo locale-gen fr_FR.UTF-8 + - name: Determine source branch id: which-branch uses: secondlife/viewer-build-util/which-branch@v2 @@ -152,7 +183,7 @@ jobs: - name: Setup .NET for Velopack if: (runner.os == 'Windows' || runner.os == 'macOS') && (github.event.inputs.installer_type || 'velopack') == 'velopack' - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v6 with: dotnet-version: '9.0.x' @@ -299,7 +330,7 @@ jobs: echo "artifact=$RUNNER_OS$cfg_suffix" >> $GITHUB_OUTPUT - name: Upload executable - if: steps.build.outputs.viewer_app + if: matrix.build_variant == 'Viewer' && steps.build.outputs.viewer_app uses: actions/upload-artifact@v7 with: name: "${{ steps.build.outputs.artifact }}-app" @@ -309,7 +340,7 @@ jobs: # The other upload of nontrivial size is the symbol file. Use a distinct # artifact for that too. - name: Upload symbol file - if: steps.build.outputs.symbolfile + if: matrix.build_variant == 'Viewer' && steps.build.outputs.symbolfile uses: actions/upload-artifact@v7 with: name: "${{ steps.build.outputs.artifact }}-symbols" @@ -317,6 +348,7 @@ jobs: - name: Upload metadata uses: actions/upload-artifact@v7 + if: matrix.build_variant == 'Viewer' with: name: "${{ steps.build.outputs.artifact }}-metadata" # emitted by build.sh, possibly multiple lines @@ -326,13 +358,23 @@ jobs: - name: Upload physics package uses: actions/upload-artifact@v7 # should only be set for viewer-private - if: matrix.configuration == 'Release' && steps.build.outputs.physicstpv + if: matrix.build_variant == 'Viewer' && matrix.configuration == 'Release' && steps.build.outputs.physicstpv with: name: "${{ steps.build.outputs.artifact }}-physics" # emitted by build.sh, zero or one lines path: | ${{ steps.build.outputs.physicstpv }} + - name: Upload appearance utility package + uses: actions/upload-artifact@v7 + if: matrix.build_variant == 'Viewer' && steps.build.outputs.appearanceutility + with: + name: "${{ steps.build.outputs.artifact }}-appearanceutility" + # emitted by build.sh, zero or one lines + path: | + ${{ steps.build.outputs.appearanceutility }} + + sign-and-package-windows: env: AZURE_KEY_VAULT_URI: ${{ secrets.AZURE_KEY_VAULT_URI }} @@ -434,7 +476,7 @@ jobs: tar -xJf "${{ needs.build.outputs.viewer_channel }}.sym.tar.xz" -C _artifacts - name: Post Windows symbols if: env.BUGSPLAT_DATABASE && env.SYMBOL_UPLOAD_CLIENT_ID - uses: BugSplat-Git/symbol-upload@095d163ae9ceb006d286a731dcd35cf6a1b458c8 + uses: BugSplat-Git/symbol-upload@3857759bd957dadb075509a4e951f04f9baa5ea3 with: clientId: "${{ env.SYMBOL_UPLOAD_CLIENT_ID }}" clientSecret: "${{ env.SYMBOL_UPLOAD_CLIENT_SECRET }}" @@ -446,6 +488,8 @@ jobs: node-version: "22" dumpSyms: false + # Upload can be failure prone and we might need to reupload in some cases, + # Keep upload as a separate job, to not require full rebuild on upload failure. post-mac-symbols: env: BUGSPLAT_DATABASE: "${{ secrets.BUGSPLAT_DATABASE }}" @@ -460,17 +504,31 @@ jobs: uses: actions/download-artifact@v8 with: name: macOS-symbols + - name: Extract dSYM bundles + if: env.BUGSPLAT_DATABASE && env.SYMBOL_UPLOAD_CLIENT_ID + shell: bash + run: | + mkdir -p _mac_symbols + shopt -s nullglob globstar + archives=( **/*.xcarchive.zip ) + if [ ${#archives[@]} -eq 0 ]; then + echo "No .xcarchive.zip archives found in downloaded macOS-symbols artifact" + exit 1 + fi + for archive in "${archives[@]}"; do + unzip -q "$archive" -d _mac_symbols + done - name: Post Mac symbols if: env.BUGSPLAT_DATABASE && env.SYMBOL_UPLOAD_CLIENT_ID - uses: BugSplat-Git/symbol-upload@095d163ae9ceb006d286a731dcd35cf6a1b458c8 + uses: BugSplat-Git/symbol-upload@3857759bd957dadb075509a4e951f04f9baa5ea3 with: clientId: "${{ env.SYMBOL_UPLOAD_CLIENT_ID }}" clientSecret: "${{ env.SYMBOL_UPLOAD_CLIENT_SECRET }}" database: "${{ env.BUGSPLAT_DATABASE }}" application: ${{ needs.build.outputs.viewer_channel }} version: ${{ needs.build.outputs.viewer_version }} (${{ needs.build.outputs.viewer_version }}) - directory: . - files: "**/*.xcarchive.zip" + directory: _mac_symbols + files: "**/*.dSYM" node-version: "22" dumpSyms: false @@ -487,16 +545,22 @@ jobs: with: pattern: "*-metadata" - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8 with: pattern: "*-releases" + - uses: actions/download-artifact@v8 + with: + name: "Linux-app" + - name: Rename metadata run: | cp Windows-metadata/autobuild-package.xml Windows-autobuild-package.xml cp Windows-metadata/newview/viewer_version.txt Windows-viewer_version.txt cp macOS-metadata/autobuild-package.xml macOS-autobuild-package.xml cp macOS-metadata/newview/viewer_version.txt macOS-viewer_version.txt + cp Linux-metadata/autobuild-package.xml Linux-autobuild-package.xml + cp Linux-metadata/newview/viewer_version.txt Linux-viewer_version.txt # forked from softprops/action-gh-release - name: Create GitHub release @@ -520,6 +584,7 @@ jobs: files: | macOS-installer/*.dmg Windows-installer/*.exe + *.tar.xz *-autobuild-package.xml *-viewer_version.txt Windows-releases/* diff --git a/.github/workflows/check-pr.yaml b/.github/workflows/check-pr.yaml index 08e907e83f..68ca8244c0 100644 --- a/.github/workflows/check-pr.yaml +++ b/.github/workflows/check-pr.yaml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check PR description - uses: actions/github-script@v8 + uses: actions/github-script@v9 with: script: | const description = context.payload.pull_request.body || ''; diff --git a/.github/workflows/cla.yaml b/.github/workflows/cla.yaml index 1b6333a0b8..7e87f7f4b7 100644 --- a/.github/workflows/cla.yaml +++ b/.github/workflows/cla.yaml @@ -23,4 +23,4 @@ jobs: path-to-signatures: signatures.json remote-organization-name: secondlife remote-repository-name: cla-signatures - allowlist: callum@mbp.localdomain,rye@lindenlab.com,rye,signal@lindenlab.com,dependabot*,bot*,copilot-swe-agent* + allowlist: callum@mbp.localdomain,rye@lindenlab.com,rye,signal@lindenlab.com,dependabot*,bot*,copilot-swe-agent*,copilot diff --git a/.github/workflows/label.yaml b/.github/workflows/label.yaml index 218327ef47..bb3a9031e7 100644 --- a/.github/workflows/label.yaml +++ b/.github/workflows/label.yaml @@ -9,7 +9,7 @@ jobs: pull-requests: write runs-on: ubuntu-latest steps: - - uses: actions/labeler@v6 + - uses: actions/labeler@v7 with: configuration-path: .github/labeler.yaml repo-token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/pre-commit.yaml b/.github/workflows/pre-commit.yaml index 93bcafdea8..5bc3cf6ccc 100644 --- a/.github/workflows/pre-commit.yaml +++ b/.github/workflows/pre-commit.yaml @@ -11,8 +11,8 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v6 - - uses: actions/setup-python@v6 + - uses: actions/checkout@v7 + - uses: actions/setup-python@v7 with: python-version: 3.x - uses: pre-commit/action@v3.0.1 diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml index edfe71b693..e1a88a8c25 100644 --- a/.github/workflows/stale.yaml +++ b/.github/workflows/stale.yaml @@ -12,7 +12,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v10 + - uses: actions/stale@v11 id: stale with: stale-pr-message: This pull request is stale because it has been open 30 days with no activity. Remove stale label or comment or it will be closed in 7 days diff --git a/.github/workflows/tag-release.yaml b/.github/workflows/tag-release.yaml index 0f826222a0..f1afb0f1a2 100644 --- a/.github/workflows/tag-release.yaml +++ b/.github/workflows/tag-release.yaml @@ -37,7 +37,7 @@ jobs: echo NIGHTLY_DATE=${NIGHTLY_DATE} >> ${GITHUB_ENV} echo TAG_ID="$(echo ${{ github.sha }} | cut -c1-8)-${{ inputs.project || '${NIGHTLY_DATE}' }}" >> ${GITHUB_ENV} - name: Create Tag - uses: actions/github-script@v8 + uses: actions/github-script@v9 with: # use a real access token instead of GITHUB_TOKEN default. # required so that the results of this tag creation can trigger the build workflow |
