Skip to content

Merge pull request #292 from Lan2Play/feature/fixCsUpdate201224 #815

Merge pull request #292 from Lan2Play/feature/fixCsUpdate201224

Merge pull request #292 from Lan2Play/feature/fixCsUpdate201224 #815

name: PugSharp_test_and_build
on:
push:
branches:
- main
- develop
tags: [ v**]
paths:
- '**'
- '!README.md'
- '!Makefile'
pull_request:
types: [opened, synchronize, reopened]
branches:
- main
- develop
- 'feature/**'
paths:
- '**'
- '!README.md'
- '!Makefile'
jobs:
test_linux_x64:
runs-on: ubuntu-latest
if: ${{ !startsWith( github.event.pull_request.head.label, 'lan2play-weblate' ) }}
steps:
- name : machine echo github
env : { CONTENT : "${{ toJson(github) }}" }
run : "echo $CONTENT"
- name: Set up JDK 11
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache SonarCloud packages
uses: actions/cache@v4
with:
path: ./sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Cache SonarCloud scanner
id: cache-sonar-scanner
uses: actions/cache@v4
with:
path: ./sonar/scanner
key: ${{ runner.os }}-sonar-scanner
restore-keys: ${{ runner.os }}-sonar-scanner
- name: Install SonarCloud scanner
if: steps.cache-sonar-scanner.outputs.cache-hit != 'true'
shell: pwsh
run: |
New-Item -Path ./sonar/scanner -ItemType Directory
dotnet tool install dotnet-sonarscanner --tool-path ./sonar/scanner
- name: Update SonarCloud scanner
if: steps.cache-sonar-scanner.outputs.cache-hit != 'false'
shell: pwsh
run: |
dotnet tool update dotnet-sonarscanner --tool-path ./sonar/scanner
- name: Restore dependencies
run: dotnet restore
- name: start sonarscanner
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: ./sonar/scanner/dotnet-sonarscanner begin /k:"Lan2Play_PugSharp" /o:"lan2play" /d:sonar.token="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" /d:sonar.cs.opencover.reportsPaths="./**/*.opencover.xml"
- name: dotnet build
run: dotnet build --no-restore
- name: dotnet test
run: dotnet test --no-build --no-restore --collect "XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=opencover
- name: stop sonarscanner
if: always()
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: ./sonar/scanner/dotnet-sonarscanner end /d:sonar.token="${{ secrets.SONAR_TOKEN }}"
get_versions:
runs-on: ubuntu-latest
if: ${{ !startsWith( github.event.pull_request.head.label, 'lan2play-weblate' ) }}
outputs:
PUGSHARPNETVER: ${{ steps.PUGSHARPNETVER.outputs.PUGSHARPNETVER }}
CSSHARPVER: ${{ steps.CSSHARPVER.outputs.CSSHARPVER }}
CSSHARPlink: ${{ steps.CSSHARPlink.outputs.CSSHARPlink }}
CSSHARPlinkWRuntime: ${{ steps.CSSHARPlinkWRuntime.outputs.CSSHARPlinkWRuntime }}
CSSHARPlinkWindows: ${{ steps.CSSHARPlinkWindows.outputs.CSSHARPlinkWindows }}
CSSHARPlinkWRuntimeWindows: ${{ steps.CSSHARPlinkWRuntimeWindows.outputs.CSSHARPlinkWRuntimeWindows }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: install deps
run: sudo apt-get update && sudo apt-get install jq -y
- name: get Pugsharp dependencies
run: dotnet restore
- name: set Pugsharp Version
if: ${{ (startsWith(github.ref, 'refs/tags/v')) }}
run: echo "PUGSHARPNETVER=$(echo ${GITHUB_REF} | sed 's|refs/heads/||g' | sed 's|refs/tags/v||g' )" >> $GITHUB_ENV
- name: set Pugsharp Version
if: ${{ !(startsWith(github.ref, 'refs/tags/v')) }}
run: echo "PUGSHARPNETVER=0.0.1-alpha" >> $GITHUB_ENV
- name: set Pugsharp Version in output
run: echo "PUGSHARPNETVER=$PUGSHARPNETVER" >> "$GITHUB_OUTPUT"
id: PUGSHARPNETVER
- name: get counterstrikesharp version
run: echo "CSSHARPVER=$(dotnet list PugSharp/PugSharp.csproj package --format json | jq -r '.projects[].frameworks[].topLevelPackages[] | select(.id == "CounterStrikeSharp.API") | .resolvedVersion' | sed 's|1.0.|v|g')" >> $GITHUB_ENV
- name: set counterstrikesharp version in output
run: echo "CSSHARPVER=$CSSHARPVER" >> "$GITHUB_OUTPUT"
id: CSSHARPVER
- name: get counterstrikesharp link with runtime
run: echo "CSSHARPlinkWRuntime=$(curl -s -L https://api.github.com/repos/roflmuffin/CounterStrikeSharp/releases/tags/$CSSHARPVER | jq -r '.assets[] | select(.browser_download_url | test("with-runtime.*linux")) | .browser_download_url')" >> $GITHUB_ENV
- name: set counterstrikesharp link with runtime in output
run: echo "CSSHARPlinkWRuntime=$CSSHARPlinkWRuntime" >> "$GITHUB_OUTPUT"
id: CSSHARPlinkWRuntime
- name: get counterstrikesharp link without runtime
run: echo "CSSHARPlink=$(curl -s -L https://api.github.com/repos/roflmuffin/CounterStrikeSharp/releases/tags/$CSSHARPVER | jq -r '.assets[] | select(.browser_download_url | contains("linux") and (. | contains("with-runtime") | not)) | .browser_download_url')" >> $GITHUB_ENV
- name: set counterstrikesharp link without runtime in output
run: echo "CSSHARPlink=$CSSHARPlink" >> "$GITHUB_OUTPUT"
id: CSSHARPlink
- name: get counterstrikesharp link with runtime for windows
run: echo "CSSHARPlinkWRuntimeWindows=$(curl -s -L https://api.github.com/repos/roflmuffin/CounterStrikeSharp/releases/tags/$CSSHARPVER | jq -r '.assets[] | select(.browser_download_url | test("with-runtime.*windows")) | .browser_download_url')" >> $GITHUB_ENV
- name: set counterstrikesharp link with runtime for windows in output
run: echo "CSSHARPlinkWRuntimeWindows=$CSSHARPlinkWRuntimeWindows" >> "$GITHUB_OUTPUT"
id: CSSHARPlinkWRuntimeWindows
- name: get counterstrikesharp link without runtime for windows
run: echo "CSSHARPlinkWindows=$(curl -s -L https://api.github.com/repos/roflmuffin/CounterStrikeSharp/releases/tags/$CSSHARPVER | jq -r '.assets[] | select(.browser_download_url | contains("windows") and (. | contains("with-runtime") | not)) | .browser_download_url')" >> $GITHUB_ENV
- name: set counterstrikesharp link without runtime for windows in output
run: echo "CSSHARPlinkWindows=$CSSHARPlinkWindows" >> "$GITHUB_OUTPUT"
id: CSSHARPlinkWindows
- name: replace version variable in meta files
run: sed -i "s|%%VERSION%%|$PUGSHARPNETVER|g" ./release.json;
- name: replace CounterStrikeSharpVersion variable in meta files
run: sed -i "s|%%COUNTERSTRIKESHARPVERSION%%|$CSSHARPVER|g" ./release.json;
- name: replace CS2VERSION variable in meta files
run: sed -i "s|%%CS2VERSION%%|1.39.6.5/13965 9842|g" ./release.json;
- name: replace METAMODVERSION variable in meta files
run: sed -i "s|%%METAMODVERSION%%|2.0 - 1256|g" ./release.json;
- name: upload artifact
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@v4
with:
name: latest_build_meta
path: |
./release.json
retention-days: 10
build_linux_x64:
runs-on: ubuntu-latest
if: ${{ !startsWith( github.event.pull_request.head.label, 'lan2play-weblate' ) }}
needs:
- test_linux_x64
- get_versions
env:
PUGSHARPNETVER: ${{needs.get_versions.outputs.PUGSHARPNETVER}}
CSSHARPVER: ${{needs.get_versions.outputs.CSSHARPVER}}
CSSHARPlink: ${{needs.get_versions.outputs.CSSHARPlink}}
CSSHARPlinkWRuntime: ${{needs.get_versions.outputs.CSSHARPlinkWRuntime}}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: set Pugsharp version
run: sed -i "s|0.0.1|$PUGSHARPNETVER|g" PugSharp/PugSharp.cs
- name: Build Pugsharp
if: ${{ !(startsWith(github.ref, 'refs/tags/v')) || contains(github.ref, '-beta') }}
run: dotnet publish
- name: Build Pugsharp release
if: ${{ startsWith(github.ref, 'refs/tags/v') && !(contains(github.ref, '-beta')) }}
run: dotnet publish -c Release
- name: prepare package structure
run: mkdir -p packagebuild/addons/counterstrikesharp/plugins/PugSharp
- name: copy package content
run: cp -rf PugSharp/bin/Release/net8.0/publish/* packagebuild/addons/counterstrikesharp/plugins/PugSharp
- name: copy sample configs
run: cp -rf resources/cfg packagebuild/cfg
- name: build package
run: zip -r PugSharp_linux_$PUGSHARPNETVER.zip addons cfg
working-directory: ./packagebuild
- name: move package
run: mv PugSharp_linux_$PUGSHARPNETVER.zip ../
working-directory: ./packagebuild
- name: install deps
run: sudo apt-get update && sudo apt-get install unzip -y
- name: get counterstrikesharp without runtime
run: "wget -q -O counterstrikesharp.zip $CSSHARPlink"
- name: extract counterstrikesharp without runtime
run: unzip -o counterstrikesharp.zip -d packagebuild/
- name: build package
run: zip -r PugSharp_with_cssharp_linux_$PUGSHARPNETVER.zip addons cfg
working-directory: ./packagebuild
- name: move package
run: mv PugSharp_with_cssharp_linux_$PUGSHARPNETVER.zip ../
working-directory: ./packagebuild
- name: get counterstrikesharp with runtime
run: "wget -q -O counterstrikesharp.zip $CSSHARPlinkWRuntime"
- name: extract counterstrikesharp with runtime
run: unzip -o counterstrikesharp.zip -d packagebuild/
- name: build package
run: zip -r PugSharp_with_cssharp_and_runtime_linux_$PUGSHARPNETVER.zip addons cfg
working-directory: ./packagebuild
- name: move package
run: mv PugSharp_with_cssharp_and_runtime_linux_$PUGSHARPNETVER.zip ../
working-directory: ./packagebuild
- name: upload artifact
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@v4
with:
name: latest_build_linux
path: |
./PugSharp_linux_*.zip
retention-days: 10
- name: upload artifact
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@v4
with:
name: latest_build_linux_with_cssharp
path: |
./PugSharp_with_cssharp_linux_*.zip
retention-days: 10
- name: upload artifact
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@v4
with:
name: latest_build_linux_with_cssharp_and_runtime
path: |
./PugSharp_with_cssharp_and_runtime_linux_*.zip
retention-days: 10
build_windows_x64:
runs-on: ubuntu-latest
if: ${{ !startsWith( github.event.pull_request.head.label, 'lan2play-weblate' ) }}
needs:
- test_linux_x64
- get_versions
env:
PUGSHARPNETVER: ${{needs.get_versions.outputs.PUGSHARPNETVER}}
CSSHARPVER: ${{needs.get_versions.outputs.CSSHARPVER}}
CSSHARPlink: ${{needs.get_versions.outputs.CSSHARPlinkWindows}}
CSSHARPlinkWRuntime: ${{needs.get_versions.outputs.CSSHARPlinkWRuntimeWindows}}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: set Pugsharp version
run: sed -i "s|0.0.1|$PUGSHARPNETVER|g" PugSharp/PugSharp.cs
shell: bash
- name: Build Pugsharp
if: ${{ !(startsWith(github.ref, 'refs/tags/v')) || contains(github.ref, '-beta') }}
run: dotnet publish
shell: bash
- name: Build Pugsharp release
if: ${{ startsWith(github.ref, 'refs/tags/v') && !(contains(github.ref, '-beta')) }}
run: dotnet publish -c Release
shell: bash
- name: prepare package structure
run: mkdir -p packagebuild/addons/counterstrikesharp/plugins/PugSharp
shell: bash
- name: copy package content
run: cp -rf PugSharp/bin/Release/net8.0/publish/* packagebuild/addons/counterstrikesharp/plugins/PugSharp
shell: bash
- name: copy sample configs
run: cp -rf resources/cfg packagebuild/cfg
shell: bash
- name: build package
run: zip -r PugSharp_windows_$PUGSHARPNETVER.zip addons cfg
shell: bash
working-directory: ./packagebuild
- name: move package
run: mv PugSharp_windows_$PUGSHARPNETVER.zip ../
shell: bash
working-directory: ./packagebuild
- name: get counterstrikesharp without runtime
run: "wget -q -O counterstrikesharp.zip $CSSHARPlink"
shell: bash
- name: extract counterstrikesharp without runtime
run: unzip -o counterstrikesharp.zip -d packagebuild/
shell: bash
- name: build package
run: zip -r PugSharp_with_cssharp_windows_$PUGSHARPNETVER.zip addons cfg
shell: bash
working-directory: ./packagebuild
- name: move package
shell: bash
run: mv PugSharp_with_cssharp_windows_$PUGSHARPNETVER.zip ../
working-directory: ./packagebuild
- name: get counterstrikesharp with runtime
shell: bash
run: "wget -q -O counterstrikesharp.zip $CSSHARPlinkWRuntime"
- name: extract counterstrikesharp with runtime
shell: bash
run: unzip -o counterstrikesharp.zip -d packagebuild/
- name: build package
shell: bash
run: zip -r PugSharp_with_cssharp_and_runtime_windows_$PUGSHARPNETVER.zip addons cfg
working-directory: ./packagebuild
- name: move package
shell: bash
run: mv PugSharp_with_cssharp_and_runtime_windows_$PUGSHARPNETVER.zip ../
working-directory: ./packagebuild
- name: upload artifact
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@v4
with:
name: latest_build_windows
path: |
./PugSharp_windows_*.zip
retention-days: 10
- name: upload artifact
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@v4
with:
name: latest_build_windows_with_cssharp
path: |
./PugSharp_with_cssharp_windows_*.zip
retention-days: 10
- name: upload artifact
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@v4
with:
name: latest_build_windows_with_cssharp_and_runtime
path: |
./PugSharp_with_cssharp_and_runtime_windows_*.zip
retention-days: 10
release:
runs-on: ubuntu-latest
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
needs:
- build_linux_x64
- build_windows_x64
env:
PUGSHARPNETVER: ${{needs.get_versions.outputs.PUGSHARPNETVER}}
CSSHARPVER: ${{needs.get_versions.outputs.CSSHARPVER}}
CSSHARPlink: ${{needs.get_versions.outputs.CSSHARPlink}}
CSSHARPlinkWRuntime: ${{needs.get_versions.outputs.CSSHARPlinkWRuntime}}
steps:
- uses: actions/download-artifact@v4
with:
name: latest_build_windows
path: build/windows
- uses: actions/download-artifact@v4
with:
name: latest_build_windows_with_cssharp
path: build/windows
- uses: actions/download-artifact@v4
with:
name: latest_build_windows_with_cssharp_and_runtime
path: build/windows
- uses: actions/download-artifact@v4
with:
name: latest_build_linux
path: build/linux
- uses: actions/download-artifact@v4
with:
name: latest_build_linux_with_cssharp
path: build/linux
- uses: actions/download-artifact@v4
with:
name: latest_build_linux_with_cssharp_and_runtime
path: build/linux
- uses: actions/download-artifact@v4
with:
name: latest_build_meta
path: build/meta
- name: Release
if: ${{ !(contains(github.ref, '-beta')) }}
uses: softprops/action-gh-release@v2
with:
files: |
./build/windows/PugSharp_*.zip
./build/linux/PugSharp_*.zip
./build/meta/release.json
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: pre Release
if: ${{ contains(github.ref, '-beta') }}
uses: softprops/action-gh-release@v2
with:
prerelease: true
files: |
./build/windows/PugSharp_*.zip
./build/linux/PugSharp_*.zip
./build/meta/release.json
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}