Merge pull request #292 from Lan2Play/feature/fixCsUpdate201224 #815
This file contains 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: 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 }} |