Skip Commander Left Msgs if Team is Elimianted #36
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
# This workflow will build a .NET project | |
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net | |
name: CI-CD-Pipeline | |
on: | |
push: | |
branches: [ "main" ] | |
paths: | |
- '**/Si_*/**' | |
- '!*.md' | |
- '!*.json' | |
env: | |
BUILD_TYPE: Release | |
jobs: | |
get-commit-number: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Generate the commit number | |
id: commit-number | |
run: | | |
echo "comnum=$(git log --oneline | wc -l)" >> "$GITHUB_OUTPUT" | |
outputs: | |
comnum: ${{ steps.commit-number.outputs.comnum }} | |
find-if-nuget-update-is-needed: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dorny/paths-filter@v3 | |
id: checkAdminMod | |
with: | |
filters: | | |
admin-updated: | |
- 'Si_AdminMod/**' | |
# run only if 'workflows' files were changed | |
- name: adminmod updated | |
if: steps.checkAdminMod.outputs.admin-updated == 'true' | |
run: echo "AdminMod Update Found." | |
# run only if not 'workflows' files were changed | |
- name: no adminmod updates | |
if: steps.checkAdminMod.outputs.admin-updated != 'true' | |
run: echo "No AdminMod Update Found. Skipping nuget packages..." | |
outputs: | |
admin-updated: ${{ steps.checkAdminMod.outputs.admin-updated }} | |
create-package: | |
needs: [ find-if-nuget-update-is-needed, get-commit-number ] | |
if: needs.find-if-nuget-update-is-needed.outputs.admin-updated == 'true' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup .NET SDK | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: 6.0.x | |
- name: Restore | |
run: | | |
cd Si_AdminMod | |
dotnet restore | |
- name: Build | |
run: | | |
cd Si_AdminMod | |
dotnet build --no-restore -c ${{env.BUILD_TYPE}} | |
- name: Test | |
run: | | |
cd Si_AdminMod | |
dotnet test -c ${{env.BUILD_TYPE}} --no-build | |
- name: Pack NuGet | |
run: | | |
cd Si_AdminMod | |
dotnet pack -c ${{env.BUILD_TYPE}} --no-build --output . /p:Version=2.0.${{ needs.get-commit-number.outputs.comnum }} | |
- name: Push to NuGet | |
run: | | |
cd Si_AdminMod | |
dotnet nuget push "*.nupkg" --api-key ${{secrets.NUGET_ADMINMOD_API_KEY}} --source https://api.nuget.org/v3/index.json | |
- name: Wait for publishing | |
uses: juliangruber/[email protected] | |
with: | |
time: 10m | |
fanout: | |
if: ${{ !failure() && !cancelled() }} | |
needs: [ find-if-nuget-update-is-needed, create-package ] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Generate matrix with all modules of the repo | |
id: set-matrix | |
run: | | |
echo "matrix=$(ls -l | grep '^d' | awk -F ' ' '{print $9}' | grep -Po 'Si.*' | jq -R -s -c 'split("\n") | map(select(length > 0))')" >> "$GITHUB_OUTPUT" | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.matrix }} | |
build: | |
if: ${{ !failure() && !cancelled() }} | |
needs: fanout | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
path: ${{ fromJson(needs.fanout.outputs.matrix) }} | |
steps: | |
- name: Prepare environment sha | |
shell: bash | |
run: echo "GITHUB_SHA_SHORT=${GITHUB_SHA::7}" >> $GITHUB_ENV | |
- name: Prepare environment pwd | |
shell: bash | |
run: echo "START_DIR=`pwd`" >> $GITHUB_ENV | |
- uses: actions/checkout@v4 | |
- name: Download QList | |
uses: robinraju/[email protected] | |
with: | |
repository: "dodad-2/QList" | |
latest: true | |
fileName: "QList.dll" | |
tarBall: false | |
zipBall: false | |
- name: Move QList | |
run: | | |
mv QList.dll include/ | |
- name: Setup .NET 6 | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: 6.0.x | |
- name: Restore dependencies | |
run: | | |
cd ${{ matrix.path }} | |
dotnet restore | |
- name: Build | |
run: | | |
cd ${{ matrix.path }} | |
dotnet build --no-restore -c ${{env.BUILD_TYPE}} | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.path }}-build-${{ env.GITHUB_SHA_SHORT }} | |
path: ${{ matrix.path }}/bin/${{env.BUILD_TYPE}}/**/*.dll | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: dedicated-server-${{ matrix.path }}-build-${{ env.GITHUB_SHA_SHORT }} | |
path: ${{ matrix.path }}/bin/${{env.BUILD_TYPE}}/netstandard2.1/*.dll | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: listen-server-${{ matrix.path }}-build-${{ env.GITHUB_SHA_SHORT }} | |
path: ${{ matrix.path }}/bin/${{env.BUILD_TYPE}}/net6.0/${{ matrix.path }}.dll | |
publish: | |
if: github.event_name == 'push' && ${{ !failure() && !cancelled() }} | |
permissions: | |
contents: write | |
needs: [ get-commit-number, build, fanout ] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Prepare env | |
shell: bash | |
run: echo "GITHUB_SHA_SHORT=${GITHUB_SHA::7}" >> $GITHUB_ENV | |
- uses: actions/checkout@v4 | |
with: | |
sparse-checkout: . | |
- name: Make output paths | |
run: | | |
mkdir -p release/dedi/Mods/disabled | |
mkdir -p release/listen/Mods/disabled | |
mkdir -p release/dedi/UserData | |
mkdir -p release/listen/UserData | |
cp launch.bat release/dedi/launch.bat | |
cp LICENSE release/dedi/UserData/Mod-License.txt | |
cp LICENSE release/listen/UserData/Mod-License.txt | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: dedicated-server-* | |
merge-multiple: true | |
path: release/dedi/Mods | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: listen-server-* | |
merge-multiple: true | |
path: release/listen/Mods | |
- name: Disable some mods | |
run: | | |
# AutoTeamsSelect was addressed with a game update to vote on the next mode | |
mv release/dedi/Mods/Si_AutoTeamsSelect.dll release/dedi/Mods/disabled | |
mv release/listen/Mods/Si_AutoTeamsSelect.dll release/listen/Mods/disabled | |
# FriendlyFireLimits is disabled by default | |
mv release/dedi/Mods/Si_FriendlyFireLimits.dll release/dedi/Mods/disabled | |
mv release/listen/Mods/Si_FriendlyFireLimits.dll release/listen/Mods/disabled | |
# HQ was re-dfined as the default loss condition with a game update | |
#mv release/dedi/Mods/Si_HQlessHumansLose.dll release/dedi/Mods/disabled | |
#mv release/listen/Mods/Si_HQlessHumansLose.dll release/listen/Mods/disabled | |
# There are still too many game bugs for mapcycle to be on by default | |
mv release/dedi/Mods/Si_Mapcycle.dll release/dedi/Mods/disabled | |
mv release/listen/Mods/Si_Mapcycle.dll release/listen/Mods/disabled | |
- name: Zip Builds | |
run: | | |
(cd release/dedi && zip -qq -r ../../DedicatedServer-v${{ needs.get-commit-number.outputs.comnum }}-${{ env.GITHUB_SHA_SHORT }}.zip *) | |
(cd release/listen && zip -qq -r ../../ListenServer-v${{ needs.get-commit-number.outputs.comnum }}-${{ env.GITHUB_SHA_SHORT }}.zip *) | |
- name: Release | |
uses: softprops/action-gh-release@v1 | |
with: | |
tag_name: v${{ needs.get-commit-number.outputs.comnum }} | |
files: | | |
DedicatedServer-v${{ needs.get-commit-number.outputs.comnum }}-${{ env.GITHUB_SHA_SHORT }}.zip | |
ListenServer-v${{ needs.get-commit-number.outputs.comnum }}-${{ env.GITHUB_SHA_SHORT }}.zip |