-
Notifications
You must be signed in to change notification settings - Fork 15
145 lines (126 loc) · 5.48 KB
/
Publish.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
name: Publish
on:
push:
branches:
- main
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
jobs:
build-module:
name: Build Module
runs-on: ubuntu-latest
outputs:
mod_version: ${{ steps.changelog.outputs.mod_version }}
mod_description: ${{ steps.changelog.outputs.mod_description }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Setup .NET Core
uses: actions/setup-dotnet@master
with:
dotnet-version: 6.0.x
- name: Build Diplomacy Module
run: |
$path = $PWD.Path + '/bannerlord';
$implFX = $PWD.Path + '/bannerlord-implementationsFX';
$implCore = $PWD.Path + '/bannerlord-implementationsCore';
$finalFX = $path + '/Modules/Bannerlord.Diplomacy/bin/Win64_Shipping_Client/';
$finalCore = $path + '/Modules/Bannerlord.Diplomacy/bin/Gaming.Desktop.x64_Shipping_Client/';
$proj = 'src/Bannerlord.Diplomacy/Bannerlord.Diplomacy.csproj';
$pdllFX = $path + '/Modules/Bannerlord.Diplomacy/bin/Win64_Shipping_Client/Bannerlord.Diplomacy*.dll';
$ppdbFX = $path + '/Modules/Bannerlord.Diplomacy/bin/Win64_Shipping_Client/Bannerlord.Diplomacy*.pdb';
$pdllCore = $path + '/Modules/Bannerlord.Diplomacy/bin/Gaming.Desktop.x64_Shipping_Client/Bannerlord.Diplomacy*.dll';
$ppdbCore = $path + '/Modules/Bannerlord.Diplomacy/bin/Gaming.Desktop.x64_Shipping_Client/Bannerlord.Diplomacy*.pdb';
# The folders are required to be created before executing the script
New-Item -ItemType directory -Force -Path $path;
New-Item -ItemType directory -Force -Path $implFX;
New-Item -ItemType directory -Force -Path $implCore;
[string[]]$gameversions = Get-Content -Path supported-game-versions.txt;
# Process all implementations
For ($i = 0; $i -le $gameversions.Length - 1; $i++)
{
$gameversion = $gameversions[$i];
$version = $gameversion.substring(1);
$constgameversion = $gameversion.replace(".", "");
echo "::group::Build for $gameversion"
echo "Start building for gameversion = $gameversion"
dotnet clean $proj --configuration Release;
dotnet build $proj --configuration Release -p:OverrideGameVersion=$gameversion -p:GameFolder="$path" -p:ConstGameVersionWithPrefix="$constgameversion";
# Copy Implementations to the Implementations folder
Copy-Item $pdllFX $implFX/;
Copy-Item $ppdbFX $implFX/;
Copy-Item $pdllCore $implCore/;
Copy-Item $ppdbCore $implCore/;
echo "::endgroup::"
}
# Copy Implementations to the Module
Copy-Item $implFX/* $finalFX;
Copy-Item $implCore/* $finalCore;
# Delete Implementations folder
Remove-Item -Recurse $implFX;
Remove-Item -Recurse $implCore;
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//$'"'/'%22'}"
desc="${desc//$'\n'/'%0A'}"
desc="${desc//$'\r'/'%0D'}"
echo "::set-output name=mod_description::$desc"
- name: Upload bannerlord folder
uses: actions/upload-artifact@v4
with:
name: Bannerlord.Diplomacy-${{ steps.changelog.outputs.mod_version }}
path: ./bannerlord/
###########################
# NEXUSMODS #
###########################
publish-on-nexusmods:
needs: ["build-module"]
uses: BUTR/workflows/.github/workflows/release-nexusmods.yml@master
with:
nexusmods_game_id: mountandblade2bannerlord
nexusmods_mod_id: 832
mod_filename: Diplomacy
mod_version: ${{ needs.build-module.outputs.mod_version }}
mod_description: ${{ needs.build-module.outputs.mod_description }}
artifact_name: Bannerlord.Diplomacy
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: 2881380744
mod_id: Bannerlord.Diplomacy
mod_description: ${{ needs.build-module.outputs.mod_description }}
artifact_name: Bannerlord.Diplomacy
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.Diplomacy
mod_version: ${{ needs.build-module.outputs.mod_version }}
mod_description: ${{ needs.build-module.outputs.mod_description }}
artifact_name: Bannerlord.Diplomacy