Fix Use After Free Crash #378
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 Extension | |
| on: | |
| push: | |
| branches: [ '*' ] | |
| tags: [ '*' ] | |
| pull_request: | |
| types: [ opened, reopened, ready_for_review ] | |
| jobs: | |
| build_ext: | |
| name: Build for ${{ matrix.os }} SM ${{ matrix.sm }} | |
| runs-on: ${{ matrix.os_version }} | |
| container: | |
| image: ${{ matrix.container_image }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [windows, linux] | |
| sm: [stable, dev] | |
| include: | |
| - meta_branch: "1.12-dev" | |
| sdks_to_fetch: 'tf2 dods css bms sdk2013 orangebox hl2dm episode1 l4d l4d2 csgo swarm' | |
| - os: windows | |
| os_version: windows-latest | |
| ambuild_target: 'x86,x86_64' | |
| libsym_ext: 'dll' | |
| dbgsym_ext: 'pdb' | |
| build_sdks: 'tf2,dods,css,bms,sdk2013,orangebox,hl2dm,episode1,l4d,l4d2,csgo,swarm' | |
| os_ambuild_params: '' | |
| - os: linux | |
| os_version: ubuntu-latest | |
| ambuild_target: 'x86,x86_64' | |
| libsym_ext: 'so' | |
| dbgsym_ext: 'dbg' | |
| build_sdks: 'tf2,dods,css,bms,sdk2013,orangebox,hl2dm,episode1,l4d,l4d2,csgo' | |
| os_ambuild_params: '' | |
| container_image: ghcr.io/alliedmodders/build-containers/debian11-clang22:latest | |
| - sm: stable | |
| sm_branch: "1.12-dev" | |
| - sm: dev | |
| sm_branch: "master" | |
| env: | |
| BREAKPAD_SYMBOL_SERVER: "http://crash.limetech.org/symbols/submit" | |
| steps: | |
| # Largely a workaround for issue where github.workspace doesn't match $GITHUB_WORKSPACE | |
| # in containerized jobs. See https://github.com/actions/runner/issues/2058 | |
| - name: Resolve paths | |
| id: path_helper | |
| shell: bash | |
| run: | | |
| echo "dependencies=$GITHUB_WORKSPACE/dependencies" >> $GITHUB_OUTPUT | |
| echo "userbins=$GITHUB_WORKSPACE/userbins" >> $GITHUB_OUTPUT | |
| echo "basedir=$GITHUB_WORKSPACE" >> $GITHUB_OUTPUT | |
| - name: Setup Python | |
| if: runner.os == 'Windows' | |
| uses: actions/setup-python@v6.2.0 | |
| with: | |
| python-version: '3.12' | |
| - name: Setup AMBuild | |
| if: runner.os == 'Windows' | |
| run: | | |
| python -m pip install --upgrade pip setuptools wheel | |
| pip install git+https://github.com/alliedmodders/ambuild | |
| - name: Install Breakpad dump_syms (Windows) | |
| if: runner.os == 'Windows' | |
| run: | | |
| mkdir -p ${{ steps.path_helper.outputs.userbins }} | |
| cd ${{ steps.path_helper.outputs.userbins }} | |
| Invoke-WebRequest -Uri 'https://github.com/mozilla/dump_syms/releases/download/v2.3.7/dump_syms-x86_64-pc-windows-msvc.zip' -OutFile 'dump_syms-x86_64-pc-windows-msvc.zip' | |
| 7z x dump_syms-x86_64-pc-windows-msvc.zip | |
| ls | |
| - name: Update Path | |
| shell: bash | |
| run: | | |
| echo "${{ steps.path_helper.outputs.userbins }}" >> "$GITHUB_PATH" | |
| - name: Fetch Metamod:Source ${{ matrix.meta_branch }} | |
| uses: actions/checkout@v6.0.2 | |
| with: | |
| repository: alliedmodders/metamod-source | |
| ref: ${{ matrix.meta_branch }} | |
| path: mmsource | |
| submodules: recursive | |
| - name: Fetch SourceMod ${{ matrix.sm_branch }} | |
| uses: actions/checkout@v6.0.2 | |
| with: | |
| repository: alliedmodders/sourcemod | |
| ref: ${{ matrix.sm_branch }} | |
| path: sourcemod | |
| submodules: recursive | |
| - name: Fetch SDKs | |
| shell: bash | |
| run: | | |
| mkdir -p '${{ steps.path_helper.outputs.dependencies }}' | |
| cd '${{ steps.path_helper.outputs.dependencies }}' | |
| git clone --mirror https://github.com/alliedmodders/hl2sdk hl2sdk-proxy-repo | |
| sdks=(${{ matrix.sdks_to_fetch }}) | |
| for sdk in "${sdks[@]}" | |
| do | |
| git clone hl2sdk-proxy-repo -b $sdk hl2sdk-$sdk | |
| done | |
| ls -lah | |
| - name: Fetch Extension | |
| uses: actions/checkout@v6.0.2 | |
| with: | |
| path: navbot | |
| submodules: recursive | |
| - name: Build Extension For ${{ matrix.ambuild_target }} | |
| working-directory: navbot | |
| shell: bash | |
| run: | | |
| mkdir build | |
| cd build | |
| python3 ../configure.py \ | |
| --sdks=${{ matrix.build_sdks }} \ | |
| --hl2sdk-root="${{ steps.path_helper.outputs.dependencies }}" \ | |
| --sm-path="${{ steps.path_helper.outputs.basedir }}/sourcemod" \ | |
| --mms-path="${{ steps.path_helper.outputs.basedir }}/mmsource" \ | |
| --enable-optimize \ | |
| --targets "${{ matrix.ambuild_target }}" \ | |
| --symbol-files ${{ matrix.os_ambuild_params }} | |
| ambuild | |
| - name: Get commit SHA | |
| uses: benjlevesque/short-sha@v4.0 | |
| id: short-sha | |
| - name: Name Package | |
| id: pkgname | |
| shell: bash | |
| run: | | |
| echo "name=navbot-${{ matrix.os }}-sm-${{ matrix.sm }}-${{ steps.short-sha.outputs.sha }}" >> $GITHUB_OUTPUT | |
| echo "symbols=navbot-symbols-${{ matrix.os }}-sm-${{ matrix.sm }}-${{ steps.short-sha.outputs.sha }}" >> $GITHUB_OUTPUT | |
| - name: Upload Extension as Artifact | |
| uses: actions/upload-artifact@v7.0.1 | |
| with: | |
| name: ${{ steps.pkgname.outputs.name }} | |
| path: | | |
| navbot/build/package/* | |
| - name: Upload Debugging Symbols Artifact | |
| uses: actions/upload-artifact@v7.0.1 | |
| with: | |
| name: ${{ steps.pkgname.outputs.symbols }} | |
| path: | | |
| navbot/build/**/*.${{ matrix.dbgsym_ext }} | |
| # TO-DO: Update this | |
| do_release: | |
| name: Create GH Release | |
| runs-on: ubuntu-latest | |
| if: startsWith(github.ref, 'refs/tags/') | |
| needs: [ build_ext ] | |
| steps: | |
| - name: Create Folders | |
| run: | | |
| mkdir -p ${{ github.workspace }}/upload/ | |
| mkdir -p ${{ github.workspace }}/download/windows/stable/ | |
| mkdir -p ${{ github.workspace }}/download/windows/dev/ | |
| mkdir -p ${{ github.workspace }}/download/linux/stable/ | |
| mkdir -p ${{ github.workspace }}/download/linux/dev/ | |
| mkdir -p ${{ github.workspace }}/download/symbols/files/ | |
| - name: Download Artifacts (Windows - Stable) | |
| uses: actions/download-artifact@v8.0.1 | |
| with: | |
| pattern: 'navbot-windows-sm-stable*' | |
| merge-multiple: true | |
| path: ${{ github.workspace }}/download/windows/stable | |
| - name: Download Artifacts (Windows - Dev) | |
| uses: actions/download-artifact@v8.0.1 | |
| with: | |
| pattern: 'navbot-windows-sm-dev*' | |
| merge-multiple: true | |
| path: ${{ github.workspace }}/download/windows/dev | |
| - name: Download Artifacts (Linux - Stable) | |
| uses: actions/download-artifact@v8.0.1 | |
| with: | |
| pattern: 'navbot-linux-sm-stable*' | |
| merge-multiple: true | |
| path: ${{ github.workspace }}/download/linux/stable | |
| - name: Download Artifacts (Linux - Dev) | |
| uses: actions/download-artifact@v8.0.1 | |
| with: | |
| pattern: 'navbot-linux-sm-dev*' | |
| merge-multiple: true | |
| path: ${{ github.workspace }}/download/linux/dev | |
| - name: Download Debugging Symbols | |
| uses: actions/download-artifact@v8.0.1 | |
| with: | |
| pattern: 'navbot-symbols*' | |
| merge-multiple: false | |
| path: ${{ github.workspace }}/download/symbols/files/ | |
| - name: Create Package | |
| run: | | |
| cd ${{ github.workspace }}/download/windows/stable/ | |
| 7z a -r "navbot-windows-sm-stable-${{ github.ref_name }}.7z" addons | |
| mv *.7z ${{ github.workspace }}/upload/ | |
| cd ${{ github.workspace }}/download/windows/dev/ | |
| 7z a -r "navbot-windows-sm-dev-${{ github.ref_name }}.7z" addons | |
| mv *.7z ${{ github.workspace }}/upload/ | |
| cd ${{ github.workspace }}/download/linux/stable/ | |
| tar -czf "navbot-linux-sm-stable-${{ github.ref_name }}.tar.gz" --owner=0 --group=0 addons | |
| mv *.tar.gz ${{ github.workspace }}/upload/ | |
| cd ${{ github.workspace }}/download/linux/dev/ | |
| tar -czf "navbot-linux-sm-dev-${{ github.ref_name }}.tar.gz" --owner=0 --group=0 addons | |
| mv *.tar.gz ${{ github.workspace }}/upload/ | |
| cd ${{ github.workspace }}/download/symbols/ | |
| 7z a -r "navbot-debug-symbols-${{ github.ref_name }}.7z" files | |
| mv *.7z ${{ github.workspace }}/upload/ | |
| cd ${{ github.workspace }}/upload/ | |
| ls -lah | |
| - name: Create Pre-release | |
| uses: softprops/action-gh-release@v3.0.0 | |
| if: contains(github.ref_name, 'pr') == true | |
| with: | |
| name: "NavBot ${{ github.ref_name }}" | |
| generate_release_notes: true | |
| prerelease: true | |
| files: | | |
| upload/*.7z | |
| upload/*.tar.gz | |
| - name: Create Release | |
| uses: softprops/action-gh-release@v3.0.0 | |
| if: contains(github.ref_name, 'pr') == false | |
| with: | |
| name: "NavBot ${{ github.ref_name }}" | |
| generate_release_notes: true | |
| prerelease: false | |
| files: | | |
| upload/*.7z | |
| upload/*.tar.gz | |