diff options
Diffstat (limited to '.github')
-rw-r--r-- | .github/ISSUE_TEMPLATE/10-bug.yaml | 4 | ||||
-rw-r--r-- | .github/workflows/build.yaml | 101 | ||||
-rw-r--r-- | .github/workflows/tag-release.yaml | 15 |
3 files changed, 58 insertions, 62 deletions
diff --git a/.github/ISSUE_TEMPLATE/10-bug.yaml b/.github/ISSUE_TEMPLATE/10-bug.yaml index 41208e8bf5..612f71ace6 100644 --- a/.github/ISSUE_TEMPLATE/10-bug.yaml +++ b/.github/ISSUE_TEMPLATE/10-bug.yaml @@ -11,8 +11,8 @@ body: - type: textarea attributes: label: Environment - description: About Second Life Text - placeholder: ex. Second Life Test 7.1.3.240191747 (64bit) ... + description: "Please copy the info from the viewer's 'About Second Life' window and paste it here:" + placeholder: 'ex. Second Life Release 7.1.8.9375512768 (64bit) ...' validations: required: true diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 01a915d499..30f38ba3a3 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -7,14 +7,14 @@ on: tags: ["Second_Life*"] jobs: - # The whole point of the setvar job is that we want to set a variable once - # that will be consumed by multiple subsequent jobs. We tried setting it in - # the global env, but a job.env can't directly reference the global env - # context. - setvar: + # 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). @@ -22,33 +22,36 @@ jobs: # 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 Variable + - 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: setvar + needs: setup strategy: matrix: runner: [windows-large, macos-12-xl] - configuration: [Release] - Linden: [true] - include: - - runner: macos-12-xl - developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer" - - runner: windows-large - configuration: ReleaseOS - Linden: false + 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 }} + imagename: ${{ steps.build.outputs.imagename }} + configuration: ${{ matrix.configuration }} env: AUTOBUILD_ADDRSIZE: 64 AUTOBUILD_BUILD_ID: ${{ github.run_id }} @@ -61,12 +64,9 @@ jobs: # autobuild-package.xml. AUTOBUILD_VCS_INFO: "true" AUTOBUILD_VSVER: "170" - DEVELOPER_DIR: ${{ matrix.developer_dir }} + DEVELOPER_DIR: "/Applications/Xcode_14.0.1.app/Contents/Developer" # Ensure that Linden viewer builds engage Bugsplat. - BUGSPLAT_DB: ${{ matrix.Linden && 'SecondLife_Viewer_2018' || '' }} - # Run BUILD steps for Release configuration. - # Run BUILD steps for ReleaseOS configuration only for release runs. - BUILD: ${{ (matrix.Linden || needs.setvar.outputs.release_run) && 'Y' || '' }} + BUGSPLAT_DB: ${{ needs.setup.outputs.bugsplat_db }} build_coverity: false build_log_dir: ${{ github.workspace }}/.logs build_viewer: true @@ -85,19 +85,16 @@ jobs: variants: ${{ matrix.configuration }} steps: - name: Checkout code - if: env.BUILD uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha || github.sha }} - name: Setup python - if: env.BUILD uses: actions/setup-python@v5 with: python-version: "3.11" - name: Checkout build variables - if: env.BUILD uses: actions/checkout@v4 with: repository: secondlife/build-variables @@ -105,19 +102,16 @@ jobs: path: .build-variables - name: Checkout master-message-template - if: env.BUILD uses: actions/checkout@v4 with: repository: secondlife/master-message-template path: .master-message-template - name: Install autobuild and python dependencies - if: env.BUILD run: pip3 install autobuild llsd - name: Cache autobuild packages id: cache-installables - if: env.BUILD uses: actions/cache@v4 with: path: .autobuild-installables @@ -126,20 +120,14 @@ jobs: ${{ runner.os }}-64-${{ matrix.configuration }}- ${{ runner.os }}-64- - - name: Install windows dependencies - if: env.BUILD && runner.os == 'Windows' - run: choco install nsis-unicode - - name: Determine source branch id: which-branch - if: env.BUILD uses: secondlife/viewer-build-util/which-branch@v2 with: token: ${{ github.token }} - name: Build id: build - if: env.BUILD shell: bash env: AUTOBUILD_VCS_BRANCH: ${{ steps.which-branch.outputs.branch }} @@ -214,23 +202,32 @@ jobs: [[ "$arch" == "MINGW6" ]] && arch=CYGWIN export AUTOBUILD="$(which autobuild)" - # determine the viewer channel from the branch name - branch=$AUTOBUILD_VCS_BRANCH - IFS='/' read -ra ba <<< "$branch" - prefix=${ba[0]} - if [ "$prefix" == "project" ]; then - IFS='_' read -ra prj <<< "${ba[1]}" - # uppercase first letter of each word - export viewer_channel="Second Life Project ${prj[*]^}" - elif [[ "$prefix" == "release" || "$prefix" == "main" ]]; + # 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'" + if [[ "$edu" == "true" ]] then - export viewer_channel="Second Life Release" + export viewer_channel="Second Life Release edu" elif [[ "$branch" == "develop" ]]; then export viewer_channel="Second Life Develop" else - export viewer_channel="Second Life Test" + branch=$AUTOBUILD_VCS_BRANCH + IFS='/' read -ra ba <<< "$branch" + prefix=${ba[0]} + if [ "$prefix" == "project" ]; then + IFS='_' read -ra prj <<< "${ba[1]}" + # uppercase first letter of each word + export viewer_channel="Second Life Project ${prj[*]^}" + 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 @@ -265,7 +262,7 @@ jobs: echo "artifact=$RUNNER_OS$cfg_suffix" >> $GITHUB_OUTPUT - name: Upload executable - if: matrix.Linden && steps.build.outputs.viewer_app + if: steps.build.outputs.viewer_app uses: actions/upload-artifact@v4 with: name: "${{ steps.build.outputs.artifact }}-app" @@ -275,15 +272,13 @@ jobs: # The other upload of nontrivial size is the symbol file. Use a distinct # artifact for that too. - name: Upload symbol file - if: matrix.Linden + if: steps.build.outputs.symbolfile uses: actions/upload-artifact@v4 with: name: "${{ steps.build.outputs.artifact }}-symbols" - path: | - ${{ steps.build.outputs.symbolfile }} + path: ${{ steps.build.outputs.symbolfile }} - name: Upload metadata - if: matrix.Linden uses: actions/upload-artifact@v4 with: name: "${{ steps.build.outputs.artifact }}-metadata" @@ -294,7 +289,7 @@ jobs: - name: Upload physics package uses: actions/upload-artifact@v4 # should only be set for viewer-private - if: matrix.Linden && steps.build.outputs.physicstpv + if: matrix.configuration == 'Release' && steps.build.outputs.physicstpv with: name: "${{ steps.build.outputs.artifact }}-physics" # emitted by build.sh, zero or one lines @@ -368,6 +363,7 @@ jobs: BUGSPLAT_USER: ${{ secrets.BUGSPLAT_USER }} BUGSPLAT_PASS: ${{ secrets.BUGSPLAT_PASS }} needs: build + if: needs.build.outputs.configuration == 'Release' runs-on: ubuntu-latest steps: - name: Download viewer exe @@ -402,6 +398,7 @@ jobs: BUGSPLAT_USER: ${{ secrets.BUGSPLAT_USER }} BUGSPLAT_PASS: ${{ secrets.BUGSPLAT_PASS }} needs: build + if: needs.build.outputs.configuration == 'Release' runs-on: ubuntu-latest steps: - name: Download Mac Symbols @@ -422,9 +419,9 @@ jobs: files: "**/*.xcarchive.zip" release: - needs: [setvar, build, sign-and-package-windows, sign-and-package-mac] + needs: [setup, build, sign-and-package-windows, sign-and-package-mac] runs-on: ubuntu-latest - if: needs.setvar.outputs.release_run + if: needs.setup.outputs.release_run steps: - uses: actions/download-artifact@v4 with: diff --git a/.github/workflows/tag-release.yaml b/.github/workflows/tag-release.yaml index b73ec502f1..65d1d43a83 100644 --- a/.github/workflows/tag-release.yaml +++ b/.github/workflows/tag-release.yaml @@ -26,23 +26,22 @@ on: jobs: tag-release: runs-on: ubuntu-latest - env: - GITHUB_TAG_TOKEN: ${{ secrets.GITHUB_TAG_TOKEN }} steps: - name: Setup Env Vars run: | CHANNEL="${{ inputs.channel }}" echo VIEWER_CHANNEL="Second_Life_${CHANNEL:-Develop}" >> ${GITHUB_ENV} - echo NIGHTLY_DATE=$(date --rfc-3339=date) >> ${GITHUB_ENV} + NIGHTLY_DATE=$(date --rfc-3339=date) + echo NIGHTLY_DATE=${NIGHTLY_DATE} >> ${GITHUB_ENV} + echo TAG_ID="$(echo ${{ github.sha }} | cut -c1-8)-${{ inputs.project || '${NIGHTLY_DATE}' }}" >> ${GITHUB_ENV} - name: Update Tag uses: actions/github-script@v7.0.1 - if: env.GITHUB_TAG_TOKEN with: - github-token: ${{ env.GITHUB_TAG_TOKEN }} + github-token: ${{ secrets.GITHUB_TOKEN }} script: | - github.rest.git.createRef( + github.rest.git.createRef({ owner: context.repo.owner, repo: context.repo.repo, - ref: "refs/tags/${{ env.VIEWER_CHANNEL }}#${{ env.NIGHTLY_DATE }}", + ref: "refs/tags/${{ env.VIEWER_CHANNEL }}#${{ env.TAG_ID }}", sha: context.sha - ) + }) |