summaryrefslogtreecommitdiff
path: root/.github/workflows/build.yaml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/build.yaml')
-rw-r--r--.github/workflows/build.yaml530
1 files changed, 0 insertions, 530 deletions
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
deleted file mode 100644
index 84c05dacdf..0000000000
--- a/.github/workflows/build.yaml
+++ /dev/null
@@ -1,530 +0,0 @@
-name: Build
-
-on:
- workflow_dispatch:
- inputs:
- installer_type:
- description: 'Windows installer type'
- type: choice
- options:
- - velopack
- - nsis
- default: 'velopack'
- pull_request:
- push:
- branches: ["main", "release/*", "project/*"]
- tags: ["Second_Life*"]
-
-jobs:
- # The whole point of the setup job is that we want to set variables once
- # that will be consumed by multiple subsequent jobs.
- setup:
- runs-on: ubuntu-latest
- outputs:
- release_run: ${{ steps.setvar.outputs.release_run }}
- configurations: ${{ steps.setvar.outputs.configurations }}
- bugsplat_db: ${{ steps.setvar.outputs.bugsplat_db }}
- env:
- # Build with a tag like "Second_Life#abcdef0" to generate a release page
- # (used for builds we are planning to deploy).
- # When you want to use a string variable as a workflow YAML boolean, it's
- # important to ensure it's the empty string when false. If you omit || '',
- # its value when false is "false", which is interpreted as true.
- RELEASE_RUN: ${{ (github.event.inputs.release_run || github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life')) && 'Y' || '' }}
- FROM_FORK: ${{ github.event.pull_request.head.repo.fork }}
- steps:
- - name: Set Variables
- id: setvar
- shell: bash
- run: |
- echo "release_run=$RELEASE_RUN" >> "$GITHUB_OUTPUT"
-
- if [[ "$FROM_FORK" == "true" ]]; then
- # PR from fork; don't build with Bugsplat, proprietary libs
- echo 'configurations=["ReleaseOS"]' >> $GITHUB_OUTPUT
- echo "bugsplat_db=" >> $GITHUB_OUTPUT
- else
- echo 'configurations=["Release"]' >> $GITHUB_OUTPUT
- echo "bugsplat_db=SecondLife_Viewer_2018" >> $GITHUB_OUTPUT
- fi
- build:
- 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"]') }}
- configuration: ${{ fromJson(needs.setup.outputs.configurations) }}
- runs-on: ${{ matrix.runner }}
- outputs:
- viewer_channel: ${{ steps.build.outputs.viewer_channel }}
- viewer_version: ${{ steps.build.outputs.viewer_version }}
- viewer_branch: ${{ steps.which-branch.outputs.branch }}
- relnotes: ${{ steps.which-branch.outputs.relnotes }}
- imagename: ${{ steps.build.outputs.imagename }}
- configuration: ${{ matrix.configuration }}
- # Windows Velopack outputs (passed to sign-pkg-windows)
- velopack_pack_id: ${{ steps.build.outputs.velopack_pack_id }}
- velopack_pack_version: ${{ steps.build.outputs.velopack_pack_version }}
- velopack_pack_title: ${{ steps.build.outputs.velopack_pack_title }}
- velopack_main_exe: ${{ steps.build.outputs.velopack_main_exe }}
- velopack_exclude: ${{ steps.build.outputs.velopack_exclude }}
- velopack_icon: ${{ steps.build.outputs.velopack_icon }}
- velopack_installer_base: ${{ steps.build.outputs.velopack_installer_base }}
- # macOS Velopack outputs (passed to sign-pkg-mac)
- velopack_mac_pack_id: ${{ steps.build.outputs.velopack_mac_pack_id }}
- velopack_mac_pack_version: ${{ steps.build.outputs.velopack_mac_pack_version }}
- velopack_mac_pack_title: ${{ steps.build.outputs.velopack_mac_pack_title }}
- velopack_mac_main_exe: ${{ steps.build.outputs.velopack_mac_main_exe }}
- velopack_mac_bundle_id: ${{ steps.build.outputs.velopack_mac_bundle_id }}
- env:
- AUTOBUILD_ADDRSIZE: 64
- AUTOBUILD_BUILD_ID: ${{ github.run_id }}
- AUTOBUILD_CONFIGURATION: ${{ matrix.configuration }}
- # authorizes fetching private constituent packages
- AUTOBUILD_GITHUB_TOKEN: ${{ secrets.SHARED_AUTOBUILD_GITHUB_TOKEN }}
- AUTOBUILD_INSTALLABLE_CACHE: ${{ github.workspace }}/.autobuild-installables
- AUTOBUILD_VARIABLES_FILE: ${{ github.workspace }}/.build-variables/variables
- # Direct autobuild to store vcs_url, vcs_branch and vcs_revision in
- # autobuild-package.xml.
- AUTOBUILD_VCS_INFO: "true"
- AUTOBUILD_VSVER: "170"
- DEVELOPER_DIR: "/Applications/Xcode_16.4.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
- BUILDSCRIPTS_SHARED: ${{ github.workspace }}/.shared
- # extracted and committed to viewer repo
- BUILDSCRIPTS_SUPPORT_FUNCTIONS: ${{ github.workspace }}/buildscripts_support_functions
- GIT_REF: ${{ github.head_ref || github.ref }}
- LL_SKIP_REQUIRE_SYSROOT: 1
- # Setting this variable directs Linden's TUT test driver code to capture
- # test-program log output at the specified level, but to display it only if
- # the individual test fails.
- LOGFAIL: DEBUG
- master_message_template_checkout: ${{ github.workspace }}/.master-message-template
- # Only set variants to the one configuration: don't let build.sh loop
- # over variants, let GitHub distribute variants over multiple hosts.
- variants: ${{ matrix.configuration }}
- # Pass USE_VELOPACK to CMake when using Velopack installer (default) - Windows and macOS
- 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
- with:
- ref: ${{ github.event.pull_request.head.sha || github.sha }}
-
- - name: Setup python
- uses: actions/setup-python@v6
- with:
- python-version: "3.11"
- - name: Checkout build variables
- uses: actions/checkout@v6
- with:
- repository: secondlife/build-variables
- ref: master
- path: .build-variables
-
- - name: Checkout master-message-template
- uses: actions/checkout@v6
- with:
- repository: secondlife/master-message-template
- path: .master-message-template
-
- - name: Install autobuild and python dependencies
- run: pip3 install autobuild llsd
-
- - name: Cache autobuild packages
- id: cache-installables
- uses: actions/cache@v5
- with:
- path: .autobuild-installables
- key: ${{ runner.os }}-64-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }}
- restore-keys: |
- ${{ runner.os }}-64-${{ matrix.configuration }}-
- ${{ runner.os }}-64-
-
- - name: Determine source branch
- id: which-branch
- uses: secondlife/viewer-build-util/which-branch@v2
- with:
- token: ${{ github.token }}
-
- - name: Setup .NET for Velopack
- if: (runner.os == 'Windows' || runner.os == 'macOS') && (github.event.inputs.installer_type || 'velopack') == 'velopack'
- uses: actions/setup-dotnet@v4
- with:
- dotnet-version: '9.0.x'
-
- - name: Install Velopack CLI
- if: (runner.os == 'Windows' || runner.os == 'macOS') && (github.event.inputs.installer_type || 'velopack') == 'velopack'
- shell: bash
- run: dotnet tool install -g vpk
-
- - name: Build
- id: build
- shell: bash
- env:
- AUTOBUILD_VCS_BRANCH: ${{ steps.which-branch.outputs.branch }}
- RUNNER_OS: ${{ runner.os }}
- run: |
- # set up things the viewer's build.sh script expects
- set -x
- mkdir -p "$build_log_dir"
- mkdir -p "$BUILDSCRIPTS_SHARED/packages/lib/python"
- source "$BUILDSCRIPTS_SUPPORT_FUNCTIONS"
- if [[ "$OSTYPE" =~ cygwin|msys ]]
- then
- native_path() { cygpath --windows "$1"; }
- shell_path() { cygpath --unix "$1"; }
- else
- native_path() { echo "$1"; }
- shell_path() { echo "$1"; }
- fi
- finalize()
- {
- case "$1" in
- true|0)
- record_success "Build Succeeded"
- ;;
- *)
- record_failure "Build Failed with $1"
- ;;
- esac
- }
- initialize_build()
- {
- echo "initialize_build"
- }
- initialize_version()
- {
- export revision="$AUTOBUILD_BUILD_ID"
- }
- python_cmd()
- {
- if [[ "x${1:0:1}" == "x-" ]] # -m, -c, etc.
- then # if $1 is a switch, don't try to twiddle paths
- "$(shell_path "$PYTHON_COMMAND")" "$@"
- elif [[ "$(basename "$1")" == "codeticket.py" ]]
- then # ignore any attempt to contact codeticket
- echo "## $@"
- else # running a script at an explicit path: fix path for Python
- local script="$1"
- shift
- "$(shell_path "$PYTHON_COMMAND")" "$(native_path "$script")" "$@"
- fi
- }
- repo_branch()
- {
- echo "$AUTOBUILD_VCS_BRANCH"
- }
- record_dependencies_graph()
- {
- echo "TODO: generate and post dependency graph"
- }
- # Since we're not uploading to codeticket, DO NOT sleep for minutes.
- sleep()
- {
- echo "Not sleeping for $1 seconds"
- }
- export -f native_path shell_path finalize initialize_build initialize_version
- export -f python_cmd repo_branch record_dependencies_graph sleep
- ## Useful for diagnosing Windows LLProcess/LLLeap test failures
- ##export APR_LOG="${RUNNER_TEMP}/apr.log"
- export arch=$(uname | cut -b-6)
- # Surprise! GH Windows runner's MINGW6 is a $arch value we've never
- # seen before, so numerous tests don't know about it.
- [[ "$arch" == "MINGW6" ]] && arch=CYGWIN
- export AUTOBUILD="$(which autobuild)"
-
- # determine the viewer channel from the branch or tag name
- # trigger an EDU build by including "edu" in the tag
- edu=${{ github.ref_type == 'tag' && contains(github.ref_name, 'edu') }}
- echo "ref_type=${{ github.ref_type }}, ref_name=${{ github.ref_name }}, edu='$edu'"
- branch=$AUTOBUILD_VCS_BRANCH
- if [[ "$edu" == "true" ]]
- then
- export viewer_channel="Second Life Release edu"
- elif [[ "$branch" == "develop" ]];
- then
- export viewer_channel="Second Life Develop"
- else
- IFS='/' read -ra ba <<< "$branch"
- prefix=${ba[0]}
- if [ "$prefix" == "project" ]; then
- IFS='_' read -ra prj <<< "${ba[1]}"
- prj_str="${prj[*]}"
- # uppercase first letter of each word
- capitalized=$(echo "$prj_str" | awk '{for (i=1; i<=NF; i++) $i = toupper(substr($i,1,1)) substr($i,2); print}')
- export viewer_channel="Second Life Project $capitalized"
- elif [[ "$prefix" == "release" || "$prefix" == "main" ]];
- then
- export viewer_channel="Second Life Release"
- else
- export viewer_channel="Second Life Test"
- fi
- fi
- echo "viewer_channel=$viewer_channel"
- echo "viewer_channel=$viewer_channel" >> "$GITHUB_OUTPUT"
- # On windows we need to point the build to the correct python
- # as neither CMake's FindPython nor our custom Python.cmake module
- # will resolve the correct interpreter location.
- if [[ "$RUNNER_OS" == "Windows" ]]; then
- export PYTHON="$(native_path "$(which python)")"
- echo "Python location: $PYTHON"
- export PYTHON_COMMAND="$PYTHON"
- else
- export PYTHON_COMMAND="python3"
- fi
- export PYTHON_COMMAND_NATIVE="$(native_path "$PYTHON_COMMAND")"
-
- ./build.sh
-
- # Each artifact is downloaded as a distinct .zip file. Multiple jobs
- # (per the matrix above) writing the same filepath to the same
- # artifact name will *overwrite* that file. Moreover, they can
- # interfere with each other, causing the upload to fail.
- # https://github.com/actions/upload-artifact#uploading-to-the-same-artifact
- # Given the size of our installers, and the fact that we typically
- # only want to download just one instead of a single zip containing
- # several, generate a distinct artifact name for each installer.
- # If the matrix above can run multiple builds on the same
- # platform, we must disambiguate on more than the platform name.
- # e.g. if we were still running Windows 32-bit builds, we'd need to
- # qualify the artifact with bit width.
- if [[ "$AUTOBUILD_CONFIGURATION" == "ReleaseOS" ]]
- then cfg_suffix='OS'
- else cfg_suffix=''
- fi
- echo "artifact=$RUNNER_OS$cfg_suffix" >> $GITHUB_OUTPUT
-
- - name: Upload executable
- if: steps.build.outputs.viewer_app
- uses: actions/upload-artifact@v6
- with:
- name: "${{ steps.build.outputs.artifact }}-app"
- path: |
- ${{ steps.build.outputs.viewer_app }}
-
- # 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
- uses: actions/upload-artifact@v6
- with:
- name: "${{ steps.build.outputs.artifact }}-symbols"
- path: ${{ steps.build.outputs.symbolfile }}
-
- - name: Upload metadata
- uses: actions/upload-artifact@v6
- with:
- name: "${{ steps.build.outputs.artifact }}-metadata"
- # emitted by build.sh, possibly multiple lines
- path: |
- ${{ steps.build.outputs.metadata }}
-
- - name: Upload physics package
- uses: actions/upload-artifact@v6
- # should only be set for viewer-private
- if: 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 }}
-
- sign-and-package-windows:
- env:
- AZURE_KEY_VAULT_URI: ${{ secrets.AZURE_KEY_VAULT_URI }}
- AZURE_CERT_NAME: ${{ secrets.AZURE_CERT_NAME }}
- AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
- AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
- AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
- needs: build
- runs-on: windows-2022
- steps:
- - name: Sign and package Windows viewer
- if: env.AZURE_KEY_VAULT_URI && env.AZURE_CERT_NAME && env.AZURE_CLIENT_ID && env.AZURE_CLIENT_SECRET && env.AZURE_TENANT_ID
- uses: secondlife/viewer-build-util/sign-pkg-windows@v2.1.0
- with:
- vault_uri: "${{ env.AZURE_KEY_VAULT_URI }}"
- cert_name: "${{ env.AZURE_CERT_NAME }}"
- client_id: "${{ env.AZURE_CLIENT_ID }}"
- client_secret: "${{ env.AZURE_CLIENT_SECRET }}"
- tenant_id: "${{ env.AZURE_TENANT_ID }}"
- installer_type: "${{ github.event.inputs.installer_type || 'velopack' }}"
- velopack_pack_id: "${{ needs.build.outputs.velopack_pack_id }}"
- velopack_pack_version: "${{ needs.build.outputs.velopack_pack_version }}"
- velopack_pack_title: "${{ needs.build.outputs.velopack_pack_title }}"
- velopack_main_exe: "${{ needs.build.outputs.velopack_main_exe }}"
- velopack_exclude: "${{ needs.build.outputs.velopack_exclude }}"
- velopack_icon: "${{ needs.build.outputs.velopack_icon }}"
- velopack_installer_base: "${{ needs.build.outputs.velopack_installer_base }}"
-
- sign-and-package-mac:
- env:
- NOTARIZE_CREDS_MACOS: ${{ secrets.NOTARIZE_CREDS_MACOS }}
- SIGNING_CERT_MACOS: ${{ secrets.SIGNING_CERT_MACOS }}
- SIGNING_CERT_MACOS_IDENTITY: ${{ secrets.SIGNING_CERT_MACOS_IDENTITY }}
- SIGNING_CERT_MACOS_PASSWORD: ${{ secrets.SIGNING_CERT_MACOS_PASSWORD }}
- needs: build
- runs-on: macos-latest
- steps:
- - name: Unpack Mac notarization credentials
- if: env.NOTARIZE_CREDS_MACOS
- id: note-creds
- shell: bash
- run: |
- # In NOTARIZE_CREDS_MACOS we expect to find:
- # USERNAME="..."
- # PASSWORD="..."
- # TEAM_ID="..."
- eval "${{ env.NOTARIZE_CREDS_MACOS }}"
- echo "::add-mask::$USERNAME"
- echo "::add-mask::$PASSWORD"
- echo "::add-mask::$TEAM_ID"
- echo "note_user=$USERNAME" >> "$GITHUB_OUTPUT"
- echo "note_pass=$PASSWORD" >> "$GITHUB_OUTPUT"
- echo "note_team=$TEAM_ID" >> "$GITHUB_OUTPUT"
- # If we didn't manage to retrieve all of these credentials, better
- # find out sooner than later.
- [[ -n "$USERNAME" && -n "$PASSWORD" && -n "$TEAM_ID" ]]
-
- - name: Sign and package Mac viewer
- if: env.SIGNING_CERT_MACOS && env.SIGNING_CERT_MACOS_IDENTITY && env.SIGNING_CERT_MACOS_PASSWORD && steps.note-creds.outputs.note_user && steps.note-creds.outputs.note_pass && steps.note-creds.outputs.note_team
- uses: secondlife/viewer-build-util/sign-pkg-mac@v2.1.0
- with:
- channel: ${{ needs.build.outputs.viewer_channel }}
- imagename: ${{ needs.build.outputs.imagename }}
- cert_base64: ${{ env.SIGNING_CERT_MACOS }}
- cert_name: ${{ env.SIGNING_CERT_MACOS_IDENTITY }}
- cert_pass: ${{ env.SIGNING_CERT_MACOS_PASSWORD }}
- note_user: ${{ steps.note-creds.outputs.note_user }}
- note_pass: ${{ steps.note-creds.outputs.note_pass }}
- note_team: ${{ steps.note-creds.outputs.note_team }}
- velopack_pack_id: "${{ needs.build.outputs.velopack_mac_pack_id }}"
- velopack_pack_version: "${{ needs.build.outputs.velopack_mac_pack_version }}"
- velopack_pack_title: "${{ needs.build.outputs.velopack_mac_pack_title }}"
- velopack_main_exe: "${{ needs.build.outputs.velopack_mac_main_exe }}"
- velopack_bundle_id: "${{ needs.build.outputs.velopack_mac_bundle_id }}"
-
- post-windows-symbols:
- env:
- BUGSPLAT_DATABASE: "${{ secrets.BUGSPLAT_DATABASE }}"
- SYMBOL_UPLOAD_CLIENT_ID: "${{ secrets.BUGSPLAT_SYMBOL_UPLOAD_CLIENT_ID }}"
- SYMBOL_UPLOAD_CLIENT_SECRET: "${{ secrets.BUGSPLAT_SYMBOL_UPLOAD_CLIENT_SECRET }}"
- needs: build
- if: needs.build.outputs.configuration == 'Release'
- runs-on: ubuntu-latest
- steps:
- - name: Download viewer exe
- uses: actions/download-artifact@v7
- with:
- name: Windows-app
- path: _artifacts
- - name: Download Windows Symbols
- if: env.BUGSPLAT_DATABASE && env.SYMBOL_UPLOAD_CLIENT_ID
- uses: actions/download-artifact@v7
- with:
- name: Windows-symbols
- - name: Extract viewer pdb
- if: env.BUGSPLAT_DATABASE && env.SYMBOL_UPLOAD_CLIENT_ID
- shell: bash
- run: |
- 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
- 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 }}
- directory: _artifacts
- files: "**/{SecondLifeViewer.exe,llwebrtc.dll,*.pdb}"
- node-version: "22"
- dumpSyms: false
-
- post-mac-symbols:
- env:
- BUGSPLAT_DATABASE: "${{ secrets.BUGSPLAT_DATABASE }}"
- SYMBOL_UPLOAD_CLIENT_ID: "${{ secrets.BUGSPLAT_SYMBOL_UPLOAD_CLIENT_ID }}"
- SYMBOL_UPLOAD_CLIENT_SECRET: "${{ secrets.BUGSPLAT_SYMBOL_UPLOAD_CLIENT_SECRET }}"
- needs: build
- if: needs.build.outputs.configuration == 'Release'
- runs-on: ubuntu-latest
- steps:
- - name: Download Mac Symbols
- if: env.BUGSPLAT_DATABASE && env.SYMBOL_UPLOAD_CLIENT_ID
- uses: actions/download-artifact@v7
- with:
- name: macOS-symbols
- - name: Post Mac symbols
- if: env.BUGSPLAT_DATABASE && env.SYMBOL_UPLOAD_CLIENT_ID
- uses: BugSplat-Git/symbol-upload@095d163ae9ceb006d286a731dcd35cf6a1b458c8
- 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"
- node-version: "22"
- dumpSyms: false
-
- release:
- needs: [setup, build, sign-and-package-windows, sign-and-package-mac]
- runs-on: ubuntu-latest
- if: needs.setup.outputs.release_run
- steps:
- - uses: actions/download-artifact@v7
- with:
- pattern: "*-installer"
-
- - uses: actions/download-artifact@v7
- with:
- pattern: "*-metadata"
-
- - uses: actions/download-artifact@v4
- with:
- pattern: "*-releases"
-
- - 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
-
- # forked from softprops/action-gh-release
- - name: Create GitHub release
- id: release
- uses: secondlife-3p/action-gh-release@v1
- with:
- # name the release page for the branch
- name: "${{ needs.build.outputs.viewer_branch }}"
- # SL-20546: want the channel and version to be visible on the
- # release page
- body: |
- Build ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
- ${{ needs.build.outputs.viewer_channel }}
- ${{ needs.build.outputs.viewer_version }}
- ${{ needs.build.outputs.relnotes }}
- prerelease: true
- generate_release_notes: true
- target_commitish: ${{ github.sha }}
- append_body: true
- fail_on_unmatched_files: false
- files: |
- macOS-installer/*.dmg
- Windows-installer/*.exe
- *-autobuild-package.xml
- *-viewer_version.txt
- Windows-releases/*
- macOS-releases/*
-
- - name: post release URL
- run: |
- echo "::notice::Release ${{ steps.release.outputs.url }}"