Skip to content

docs: changelog

docs: changelog #154

Workflow file for this run

name: Create Release
on:
push:
tags:
- "v*"
jobs:
build_release:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0
token: ${{ secrets.PUSH_TO_PROTECTED_BRANCH }}
ref: 'dev'
- name: Get Valheim version id
id: valheimversion
run: echo "valheimversion=$(curl -s https://api.steamcmd.net/v1/info/896660 | jq -r ".data.\"896660\".depots.branches.public.buildid")" >> $GITHUB_OUTPUT
- name: Get the version
id: get_version
run: |
echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT
echo "VERSION_NUMBER=${GITHUB_REF/refs\/tags\/v/}" >> $GITHUB_OUTPUT
- name: Install NuGet
uses: nuget/setup-nuget@v1
- name: Restore project dependencies
run: |
nuget restore JotunnLib.sln
dotnet restore JotunnLib/JotunnLib.csproj
- name: Restore tools
run: |
dotnet tool restore
- name: Get build commands
run: |
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/ubuntu stable-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install -y mono-roslyn mono-complete mono-dbg msbuild unzip dirmngr dotnet-sdk-5.0 dotnet-runtime-5.0
- name: Cache Valheim
id: cachevalheim
uses: actions/cache@v3
with:
path: ~/VHINSTALL
key: ${{ steps.valheimversion.outputs.valheimversion }}-${{ hashFiles('**/lockfiles') }}-BepInExPack-5.4.2200
- name: Install SteamCMD
if: steps.cachevalheim.outputs.cache-hit != 'true'
uses: CyberAndrii/setup-steamcmd@v1
- name: Prepare Valheim dependencies
if: steps.cachevalheim.outputs.cache-hit != 'true'
run: |
wget -O bepinex.zip "https://valheim.thunderstore.io/package/download/denikson/BepInExPack_Valheim/5.4.2200/"
unzip bepinex.zip -d ~/BepInExRaw
steamcmd +force_install_dir ~/VHINSTALL +login anonymous +app_update 896660 validate +exit
mv ~/VHINSTALL/valheim_server_Data/ ~/VHINSTALL/valheim_Data/
mv ~/BepInExRaw/BepInExPack_Valheim/* ~/VHINSTALL/
- name: Remove old publicized and mmhook dlls from cache
if: steps.cachevalheim.outputs.cache-hit != 'true'
run: |
rm -rf ~/VHINSTALL/valheim_Data/Managed/publicized_assemblies
rm -rf ~/VHINSTALL/valheim_server_Data/Managed/publicized_assemblies
rm -rf ~/VHINSTALL/BepInEx/plugins/MMHOOK
- name: Create Environment.props
run: |
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?><Project ToolsVersion=\"Current\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><VALHEIM_INSTALL>$HOME/VHINSTALL/</VALHEIM_INSTALL></PropertyGroup></Project>" > Environment.props
- name: Create DoPrebuild.props
run: |
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?><Project ToolsVersion=\"Current\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><ExecutePrebuild>true</ExecutePrebuild></PropertyGroup></Project>" > JotunnLib/BuildProps/DoPrebuild.props
- name: Create version.props
run: |
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?><Project ToolsVersion=\"Current\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><Version>${{ steps.get_version.outputs.VERSION_NUMBER }}</Version></PropertyGroup></Project>" > JotunnLib/BuildProps/version.props
- name: Update GitVersion.yml version
run: |
cat JotunnLib/GitVersion.yml | sed '4s/.*/next-version: ${{ steps.get_version.outputs.VERSION_NUMBER }}/' > JotunnLib/GitVersion_temp.yml && mv JotunnLib/GitVersion_temp.yml JotunnLib/GitVersion.yml
- name: Update manifest.json version
run: |
cat JotunnLib/manifest.json | sed -e 's/version_number": "[^"]*"/version_number": "${{ steps.get_version.outputs.VERSION_NUMBER }}"/' > JotunnLib/manifest.tmp && mv JotunnLib/manifest.tmp JotunnLib/manifest.json
- name: Update Main.cs version
run: |
cat JotunnLib/Main.cs | sed -e 's/public const string Version = ".*";/public const string Version = "${{ steps.get_version.outputs.VERSION_NUMBER }}";/' > JotunnLib/Main.tmp && mv JotunnLib/Main.tmp JotunnLib/Main.cs
cat JotunnLib/Main.cs | sed -e 's/-.*";/";/' > JotunnLib/Main.tmp && mv JotunnLib/Main.tmp JotunnLib/Main.cs
- name: Push version update to prod
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email '41898282+github-actions[bot]@users.noreply.github.com'
git add JotunnLib/GitVersion.yml
git add JotunnLib/BuildProps/version.props
git add JotunnLib/manifest.json
git add JotunnLib/Main.cs
git commit -m "deploy: Released ${{ steps.get_version.outputs.VERSION }}"
git push https://${{ secrets.PUSH_TO_PROTECTED_BRANCH }}@github.com/${{ github.repository }} HEAD:dev
git push https://${{ secrets.PUSH_TO_PROTECTED_BRANCH }}@github.com/${{ github.repository }} dev:prod
- name: Build solution
run: |
msbuild JotunnLib.sln /p:Configuration=Release
mv JotunnLib/bin/Release/net462/Jotunn.dll Jotunn.dll
msbuild JotunnLib.sln /p:Configuration=Debug
mv JotunnLib/bin/Debug/net462/Jotunn.dll Jotunn-DEBUG-${{ steps.get_version.outputs.VERSION }}.dll
- name: Upload Nexusmods zip as artifact
uses: actions/upload-artifact@v3
with:
name: Jotunn-${{ steps.get_version.outputs.VERSION }}-Nexusmods.zip
path: JotunnLib/_package/Nexusmods/Jotunn-${{ steps.get_version.outputs.VERSION }}.zip
- name: Upload Thunderstore zip as artifact
uses: actions/upload-artifact@v3
with:
name: Jotunn-${{ steps.get_version.outputs.VERSION }}-Thunderstore.zip
path: JotunnLib/_package/Thunderstore/Jotunn-${{ steps.get_version.outputs.VERSION }}.zip
- name: Publish to NuGet
run: |
dotnet nuget push "JotunnLib/bin/Debug/*.nupkg" -k ${{ secrets.NUGET_KEY }} -s https://api.nuget.org/v3/index.json --skip-duplicate
- name: Create GH Release
uses: softprops/action-gh-release@v1
with:
files: |
Jotunn.dll
Jotunn-DEBUG-${{ steps.get_version.outputs.VERSION }}.dll
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# - name: Read unex.yml
# id: unexyaml
# uses: juliojimenez/yamler@v0
# with:
# yaml-file: unex.yml
#
# - name: Create output vars from unex.yml
# id: unexconf
# run: |
# echo "modid=${{ steps.unexyaml.outputs.modid }}" >> $GITHUB_OUTPUT
#
# - name: Upload to NexusMods
# run: >
# dotnet unex upload
# ${{ steps.unexconf.outputs.modid }}
# JotunnLib/_packages/
# -v ${{ steps.get_version.outputs.VERSION_NUMBER }}
#
# env:
# UNEX_DEBUG: true
# UNEX_APIKEY: ${{ secrets.UNEX_API_KEY }}
# UNEX_COOKIES: ${{ secrets.UNEX_COOKIES }}