Skip to content

game_version_update_patch #1515

game_version_update_patch

game_version_update_patch #1515

name: Test and Publish Module
on:
repository_dispatch:
types: [game_version_update, game_version_update_patch]
push:
branches:
- master
- dev
paths:
- '.github/workflows/test-and-publish.yml'
- 'src/**'
- 'build/**'
- 'tests/**'
pull_request:
branches:
- dev
# will be triggereg when undrafting or requesting review
types: [review_requested, ready_for_review]
paths:
- '.github/workflows/test-and-publish.yml'
- 'src/**'
- 'build/**'
- 'tests/**'
env:
# Disable the .NET logo in the console output.
DOTNET_NOLOGO: true
# Disable the .NET first time experience to skip caching NuGet packages and speed up the build.
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
# Disable sending .NET CLI telemetry to Microsoft.
DOTNET_CLI_TELEMETRY_OPTOUT: true
TEST_FILTERS: "+[MCMv*]* -[MCM*.*Tests]* -[MCMv*]MCM.LightInject* -[*]System.Diagnostics.CodeAnalysis* -[*]BUTR.DependencyInjection* -[*]Bannerlord.BUTR.Shared* -[*]HarmonyLib.BUTR*"
jobs:
test:
name: Test Module
runs-on: windows-latest
steps:
- name: Tests Setup
uses: butr/actions-tests-setup@v1
with:
github-token: ${{secrets.GITHUB_TOKEN}}
steam-login: ${{secrets.STEAM_LOGIN}}
steam-password: ${{secrets.STEAM_PASSWORD}}
stable-version: ${{vars.GAME_VERSION_STABLE}}
beta-version: ${{vars.GAME_VERSION_BETA}}
stable-directory: 'bannerlord-stable'
beta-directory: 'bannerlord-beta'
- name: Build MCM Test
run: >-
$stable_version=$env:STABLE_VERSION;
$stable_version=$stable_version.substring(1);
$beta_version=$env:BETA_VERSION;
$beta_version=$beta_version.substring(1);
dotnet build "tests/MCM.Tests/MCM.Tests.csproj" --configuration Stable_Debug -p:GameVersion=$stable_version -p:GameFolder="$PWD/bannerlord-stable";
dotnet build "tests/MCM.Tests/MCM.Tests.csproj" --configuration Stable_Release -p:GameVersion=$stable_version -p:GameFolder="$PWD/bannerlord-stable";
dotnet build "tests/MCM.Tests/MCM.Tests.csproj" --configuration Beta_Debug -p:GameVersion=$beta_version -p:GameFolder="$PWD/bannerlord-beta";
dotnet build "tests/MCM.Tests/MCM.Tests.csproj" --configuration Beta_Release -p:GameVersion=$beta_version -p:GameFolder="$PWD/bannerlord-beta";
env:
STABLE_VERSION: ${{vars.GAME_VERSION_STABLE}}
BETA_VERSION: ${{vars.GAME_VERSION_BETA}}
shell: pwsh
- name: Test MCM with Coverage
run: >-
opencover/OpenCover.Console.exe -register -target:"dotnet.exe" -targetargs:"test tests/MCM.Tests/MCM.Tests.csproj --configuration Stable_Debug --no-build" -filter:"${{env.TEST_FILTERS}}" -excludebyattribute:"*.ExcludeFromCodeCoverage*" -output:coverage_mcm_stable_debug.xml -mergebyhash;
opencover/OpenCover.Console.exe -register -target:"dotnet.exe" -targetargs:"test tests/MCM.Tests/MCM.Tests.csproj --configuration Stable_Release --no-build" -filter:"${{env.TEST_FILTERS}}" -excludebyattribute:"*.ExcludeFromCodeCoverage*" -output:coverage_mcm_stable_release.xml -mergebyhash;
opencover/OpenCover.Console.exe -register -target:"dotnet.exe" -targetargs:"test tests/MCM.Tests/MCM.Tests.csproj --configuration Beta_Debug --no-build" -filter:"${{env.TEST_FILTERS}}" -excludebyattribute:"*.ExcludeFromCodeCoverage*" -output:coverage_mcm_beta_debug.xml -mergebyhash;
opencover/OpenCover.Console.exe -register -target:"dotnet.exe" -targetargs:"test tests/MCM.Tests/MCM.Tests.csproj --configuration Beta_Release --no-build" -filter:"${{env.TEST_FILTERS}}" -excludebyattribute:"*.ExcludeFromCodeCoverage*" -output:coverage_mcm_beta_release.xml -mergebyhash;
shell: pwsh
- name: ReportGenerator
uses: danielpalme/[email protected]
with:
reports: 'coverage_mcm_stable_debug.xml;coverage_mcm_stable_release.xml;coverage_mcm_beta_debug.xml;coverage_mcm_beta_release.xml'
targetdir: 'coveragereport'
reporttypes: 'HtmlInline;Cobertura'
sourcedirs: './'
tag: '${{ github.run_number }}_${{ github.run_id }}' # Optional tag or build version.
- name: Upload ReportGenerator to GitHub
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: coveragereport
- name: Upload ReportGenerator to CodeCov
uses: codecov/codecov-action@v3
with:
token: ${{secrets.CODECOV_TOKEN}}
file: coveragereport/Cobertura.xml
fail_ci_if_error: true
build-module:
if: ${{ github.ref == 'refs/heads/master' }}
needs: ["test"]
name: Build Module
runs-on: ubuntu-latest
steps:
- name: Setup
uses: butr/actions-common-setup@v2
with:
github-token: ${{secrets.GITHUB_TOKEN}}
# ignore Stable_Release and treat it as Release
- name: Build MCM (Release)
run: >-
mkdir bannerlord;
dotnet build src/MCM.Publish/MCM.Publish.csproj --configuration Stable_Release -p:GameFolder="$PWD/bannerlord";
shell: pwsh
- name: Install and Run ChangelogParser
id: changelog
run: |
dotnet tool install -g Bannerlord.ChangelogParser
vers="$(bannerlord_changelog_parser latestversion -f "$PWD/changelog.txt")"
echo "::set-output name=mod_version::$vers"
desc="$(bannerlord_changelog_parser fulldescription -f "$PWD/changelog.txt")"
desc="${desc//'%'/'%25'}"
desc="${desc//$'\n'/'%0A'}"
desc="${desc//$'\r'/'%0D'}"
echo "::set-output name=mod_description::$desc"
- name: Upload Bannerlord folder
if: ${{ github.ref == 'refs/heads/master' }}
uses: actions/upload-artifact@v4
with:
name: bannerlord
path: ./bannerlord/
###########################
# NUGET/GPR #
###########################
publish-on-nuget:
needs: ["build-module"]
uses: BUTR/workflows/.github/workflows/release-nuget.yml@master
with:
project_path: src/MCM/MCM.csproj
secrets:
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
###########################
# NUGET/GPR #
###########################
publish-on-nuget-source:
needs: ["build-module"]
uses: BUTR/workflows/.github/workflows/release-nuget.yml@master
with:
project_path: src/MCM.Source/MCM.Source.csproj
secrets:
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
###########################
# NEXUSMODS #
###########################
publish-on-nexusmods:
needs: ["build-module"]
uses: BUTR/workflows/.github/workflows/release-nexusmods.yml@master
with:
nexusmods_game_id: mountandblade2bannerlord
nexusmods_mod_id: 612
mod_filename: Mod Configuration Menu
mod_version: ${{ needs.build-module.outputs.mod_version }}
mod_description: ${{ needs.build-module.outputs.mod_description }}
artifact_name: bannerlord
secrets:
NEXUSMODS_APIKEY: ${{ secrets.NEXUSMODS_APIKEY }}
NEXUSMODS_SESSION_COOKIE: ${{ secrets.NEXUSMODS_SESSION_COOKIE }}
###########################
# STEAM #
###########################
publish-on-steam:
needs: ["build-module"]
uses: BUTR/workflows/.github/workflows/release-steam.yml@master
with:
workshop_id: 2859238197
mod_id: Bannerlord.MBOptionScreen
mod_description: ${{ needs.build-module.outputs.mod_description }}
artifact_name: bannerlord
secrets:
STEAM_LOGIN: ${{ secrets.STEAM_WORKSHOP_LOGIN }}
STEAM_PASSWORD: ${{ secrets.STEAM_WORKSHOP_PASSWORD }}
STEAM_AUTH_CODE: ${{ secrets.STEAM_WORKSHOP_AUTH_CODE }}
###########################
# GITHUB #
###########################
publish-on-github:
needs: ["build-module"]
uses: BUTR/workflows/.github/workflows/release-github.yml@master
with:
mod_id: Bannerlord.MBOptionScreen
mod_version: ${{ needs.build-module.outputs.mod_version }}
mod_description: ${{ needs.build-module.outputs.mod_description }}
artifact_name: bannerlord