Implement SemVer #10
Workflow file for this run
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: CI | |
| env: | |
| BUILD_TYPE: Release | |
| # Remove default permissions of GITHUB_TOKEN for security | |
| # https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs | |
| permissions: {} | |
| on: | |
| push: | |
| paths-ignore: | |
| - "docfx/**" | |
| branches: ["main", "dev"] | |
| pull_request: | |
| branches: ["main", "dev"] | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.number || github.sha }} | |
| cancel-in-progress: true | |
| jobs: | |
| setup: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| gitversion_semver: ${{ steps.gitversion.outputs.semVer }} | |
| gitversion_fullsemver: ${{ steps.gitversion.outputs.fullSemVer }} | |
| gitversion_assemblysemver: ${{ steps.gitversion.outputs.assemblySemVer }} | |
| gitversion_informationalversion: ${{ steps.gitversion.outputs.informationalVersion }} | |
| steps: | |
| - name: Install GitVersion | |
| uses: gittools/actions/gitversion/setup@v1 | |
| with: | |
| versionSpec: 6.0.x | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Execute GitVersion | |
| id: gitversion | |
| uses: gittools/actions/gitversion/execute@v1 | |
| with: | |
| useConfigFile: true | |
| build_windows: | |
| needs: setup | |
| runs-on: windows-latest | |
| steps: | |
| - name: Prepare env | |
| shell: bash | |
| run: | | |
| echo "GITHUB_SHA_SHORT=${GITHUB_SHA::7}" >> $GITHUB_ENV | |
| echo "SEMVER=${{ needs.setup.outputs.gitversion_semver }}" >> $GITHUB_ENV | |
| - name: Visual Studio environment | |
| shell: cmd | |
| run: | | |
| :: See https://github.com/microsoft/vswhere/wiki/Find-VC | |
| for /f "usebackq delims=*" %%i in (`vswhere -latest -property installationPath`) do ( | |
| call "%%i"\Common7\Tools\vsdevcmd.bat -arch=x64 -host_arch=x64 | |
| ) | |
| :: Loop over all environment variables and make them global. | |
| for /f "delims== tokens=1,2" %%a in ('set') do ( | |
| echo>>"%GITHUB_ENV%" %%a=%%b | |
| ) | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: "recursive" | |
| - name: Build | |
| run: | | |
| mkdir -p build | |
| cd build | |
| cmake -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} .. | |
| cmake --build . --config ${{env.BUILD_TYPE}} -- /m:16 | |
| - name: Clean build directory | |
| run: | | |
| mkdir -p build/addons/counterstrikesharp/bin/win64 | |
| mv build/${{env.BUILD_TYPE}}/*.dll build/addons/counterstrikesharp/bin/win64 | |
| mkdir build/output/ | |
| mv build/addons build/output | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: counterstrikesharp-build-windows-${{ needs.setup.outputs.gitversion_semver }} | |
| path: build/output/ | |
| build_linux: | |
| needs: setup | |
| runs-on: ubuntu-latest | |
| # Could not figure out how to run in a container only on some matrix paths, so I've split it out into its own build. | |
| container: | |
| image: registry.gitlab.steamos.cloud/steamrt/sniper/sdk:latest | |
| steps: | |
| - name: Prepare env | |
| shell: bash | |
| run: | | |
| echo "GITHUB_SHA_SHORT=${GITHUB_SHA::7}" >> $GITHUB_ENV | |
| echo "SEMVER=${{ needs.setup.outputs.gitversion_semver }}" >> $GITHUB_ENV | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: "recursive" | |
| - name: Build | |
| run: | | |
| mkdir -p build | |
| cd build | |
| cmake -G Ninja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} .. | |
| cmake --build . --config ${{env.BUILD_TYPE}} -- -j16 | |
| - name: Clean build directory | |
| run: | | |
| mkdir build/output/ | |
| mv build/addons build/output | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: counterstrikesharp-build-linux-${{ needs.setup.outputs.gitversion_semver }} | |
| path: build/output/ | |
| build_managed: | |
| needs: setup | |
| permissions: | |
| contents: write | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Prepare env | |
| shell: bash | |
| run: echo "GITHUB_SHA_SHORT=${GITHUB_SHA::7}" >> $GITHUB_ENV | |
| # We don't need expensive submodules for the managed side. | |
| - uses: actions/checkout@v4 | |
| - name: Build runtime v${{ needs.setup.outputs.gitversion_semver }} | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: "8.0.x" | |
| - name: Install dependencies | |
| run: dotnet restore managed/CounterStrikeSharp.sln | |
| - name: Run tests | |
| run: dotnet test --logger trx --results-directory "TestResults-${{ needs.setup.outputs.gitversion_semver }}" managed/CounterStrikeSharp.API.Tests/CounterStrikeSharp.API.Tests.csproj | |
| - name: Upload dotnet test results | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: test-results-${{ needs.setup.outputs.gitversion_semver }} | |
| path: TestResults-${{ needs.setup.outputs.gitversion_semver }} | |
| if: ${{ always() }} | |
| - name: Publish artifacts | |
| run: | | |
| dotnet publish -c Release \ | |
| /p:Version=${{ needs.setup.outputs.gitversion_semver }} \ | |
| /p:AssemblyVersion=${{ needs.setup.outputs.gitversion_assemblySemver }} \ | |
| /p:InformationalVersion=${{ needs.setup.outputs.gitversion_informationalversion }} \ | |
| managed/CounterStrikeSharp.API | |
| dotnet pack -c Release \ | |
| /p:Version=${{ needs.setup.outputs.gitversion_semver }} \ | |
| /p:AssemblyVersion=${{ needs.setup.outputs.gitversion_assemblySemver }} \ | |
| /p:InformationalVersion=${{ needs.setup.outputs.gitversion_informationalversion }} \ | |
| managed/CounterStrikeSharp.API | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: counterstrikesharp-build-api-${{ needs.setup.outputs.gitversion_semver }} | |
| path: managed/CounterStrikeSharp.API/bin/Release |