diff --git a/.github/workflows/build-action.yml b/.github/workflows/build-action.yml new file mode 100644 index 0000000..fbbc6cf --- /dev/null +++ b/.github/workflows/build-action.yml @@ -0,0 +1,117 @@ +name: Build Extension + +on: + push: + +jobs: + build_ext: + name: Build for ${{ matrix.identifier }} + runs-on: ${{ matrix.os_version }} + + strategy: + fail-fast: false + matrix: + buildjobs: + - windows-x86 + - linux-latest + + include: + - meta_branch: "1.12-dev" + sm_branch: "1.12-dev" + + - buildjobs: windows-x86 + os_version: windows-latest + identifier: 'Windows Latest (x86)' + msvc_arch: 'x86' + ambuild_target: 'x86' + package_name: 'windows-x86' + + - buildjobs: linux-latest + os_version: ubuntu-latest + identifier: 'Linux Latest (x86, x86-64)' + cc: clang-15 + cxx: clang++-15 + ambuild_target: 'x86,x86_64' + package_name: 'linux-latest' + + steps: + - name: Install Packages (Linux) + if: runner.os == 'Linux' + run: | + sudo dpkg --add-architecture i386 + sudo apt-get update + sudo apt-get install -y ${{ matrix.cc }} ${{ matrix.cxx }} g++-multilib + echo "CC=${{ matrix.cc }}" >> $GITHUB_ENV + echo "CXX=${{ matrix.cxx }}" >> $GITHUB_ENV + + - name: Install MSVC for ${{ matrix.identifier }} (${{ matrix.msvc_arch }}) + if: runner.os == 'Windows' + uses: microsoft/setup-msbuild@v2 + with: + msbuild-architecture: ${{ matrix.msvc_arch }} + + - name: Setup Python + uses: actions/setup-python@v5.1.0 + with: + python-version: '3.11' + + - name: Setup ambuild + run: | + python -m pip install wheel + pip install git+https://github.com/alliedmodders/ambuild + + - name: Fetch Metamod:Source ${{ matrix.meta_branch }} + uses: actions/checkout@v4.1.1 + with: + repository: alliedmodders/metamod-source + ref: ${{ matrix.meta_branch }} + path: mmsource + submodules: recursive + + - name: Fetch SourceMod ${{ matrix.sm_branch }} + uses: actions/checkout@v4.1.1 + with: + repository: alliedmodders/sourcemod + ref: ${{ matrix.sm_branch }} + path: sourcemod + submodules: recursive + + - name: Fetch SDKs + shell: bash + run: | + mkdir -p ${{ github.workspace }}/alliedmodders + cd ${{ github.workspace }}/alliedmodders + git clone --mirror https://github.com/alliedmodders/hl2sdk hl2sdk-proxy-repo + sdks=(tf2 css hl2dm dods bms sdk2013 orangebox l4d l4d2) + for sdk in "${sdks[@]}" + do + git clone hl2sdk-proxy-repo -b $sdk hl2sdk-$sdk + done + + - name: Fetch Extension + uses: actions/checkout@v4.1.1 + with: + path: navbot + submodules: recursive + + - name: Build Extension + working-directory: navbot + run: | + mkdir build + cd build + python3 ../configure.py --hl2sdk-root "${{ github.workspace }}/alliedmodders" --sdks=present --sm-path="${{ github.workspace }}/sourcemod" --mms-path="${{ github.workspace }}/mmsource" --enable-optimize --enable-lto --targets "${{ matrix.ambuild_target }}" --symbol-files + ambuild + + - name: Get commit SHA + uses: benjlevesque/short-sha@v3.0 + id: short-sha + + - name: Upload a Build Artifact + uses: actions/upload-artifact@v4.3.1 + with: + name: navbot-${{ matrix.package_name }}-${{ steps.short-sha.outputs.sha }} + path: | + navbot/build/package/* + + + \ No newline at end of file