Automatic release #24
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: Automatic release | |
on: | |
workflow_dispatch: | |
inputs: | |
modmanager_update_type: | |
type: choice | |
default: beta | |
description: Update type | |
required: false | |
options: | |
- major | |
- feature | |
- bug | |
- alpha | |
- beta | |
- rc | |
make_active_file_in_modio: | |
type: boolean | |
description: Make active file in Mod.io | |
default: false | |
required: true | |
env: | |
modmanager_release_name: "ModManager" | |
modmanager_project_path: "ModManager/ModManager.csproj" | |
modmanager_output_path: "ModManager/bin/RELEASE/netstandard2.1" | |
modmanager_nuget_path: "ModManager/bin/RELEASE" | |
modmanager_ui_project_path: "ModManagerUI/ModManagerUI.csproj" | |
modmanager_ui_output_path: "ModManagerUI/bin/RELEASE/netstandard2.1" | |
modmanager_ui_nuget_path: "ModManagerUI/bin/RELEASE" | |
modmanager_ui_libs: "ModManagerUI/libs/" | |
modmanager_ui_lang: "ModManagerUI/assets/lang/" | |
modmanager_ui_assentbundle: "ModManagerUI/assets/assetbundles/" | |
assets_folder: "Assets" | |
modmanager_package_folder: "ModIoPackage" | |
modmanager_package_dll_folder: "ModIoPackage/ModManager" | |
modmanager_package_assets_folder: "ModIoPackage/ModManager/assets" | |
modmanager_package_libs_folder: "ModIoPackage/ModManager/libs" | |
modmanager_package_lang_folder: "ModIoPackage/ModManager/lang" | |
jobs: | |
# Automatic updating semantic versioning | |
versions: | |
name: Parse project versions | |
runs-on: ubuntu-latest | |
outputs: | |
modmanager: ${{ steps.bump_modmanager_version.outputs.next-version }} | |
steps: | |
- uses: actions/checkout@v3 | |
# Loading versioning file | |
- name: Read versions.txt | |
id: read_versions_file | |
uses: juliangruber/read-file-action@v1 | |
with: | |
path: ./project_versions.txt | |
- id: modmananger | |
uses: actions-ecosystem/action-regex-match@v2 | |
with: | |
text: ${{ steps.read_versions_file.outputs.content }} | |
regex: '(?<=MOD_MANAGER=).*' | |
- id: bump_modmanager_version | |
uses: christian-draeger/[email protected] | |
with: | |
current-version: ${{ steps.modmananger.outputs.match }} | |
version-fragment: ${{ github.event.inputs.modmanager_update_type }} | |
create_modmanager_modio_pack: | |
needs: [versions] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v2 | |
- name: Find and Replace MODMANAGER_VERSION | |
uses: jacobtomlinson/gha-find-replace@v2 | |
with: | |
find: "MODMANAGER_VERSION" | |
replace: ${{ needs.versions.outputs.modmanager }} | |
regex: false | |
- name: Replace MOD_IO_APIKEY with actual api key | |
uses: jacobtomlinson/gha-find-replace@v2 | |
with: | |
find: 'MOD_IO_APIKEY' | |
replace: '${{ secrets.MODIO_APIKEY }}' | |
- name: Restore dependencies | |
run: dotnet restore | |
- name: Build ModManager | |
run: dotnet build ${{env.modmanager_project_path}} --no-restore --configuration RELEASE -p:Version=${{ needs.versions.outputs.modmanager }} | |
- name: Build ModManagerUI | |
run: dotnet build ${{env.modmanager_ui_project_path}} --no-restore --configuration RELEASE -p:Version=${{ needs.versions.outputs.modmanager }} | |
- name: Create package folder | |
run: mkdir ${{ env.modmanager_package_folder }} | |
- name: Create ModManager dll folder | |
run: mkdir ${{ env.modmanager_package_dll_folder }} -p | |
- name: Create ModManager assets folder | |
run: mkdir ${{ env.modmanager_package_assets_folder }} -p | |
- name: Create ModManager libs folder | |
run: mkdir ${{ env.modmanager_package_libs_folder }} -p | |
- name: Create ModManager lang folder | |
run: mkdir ${{ env.modmanager_package_lang_folder }} -p | |
- name: Copy ModManager.dll | |
run: cp ${{ env.modmanager_output_path }}/ModManager.dll ${{ env.modmanager_package_dll_folder }} | |
- name: Copy ModManagerUI.dll | |
run: cp ${{ env.modmanager_ui_output_path }}/ModManagerUI.dll ${{ env.modmanager_package_dll_folder }} | |
- name: Copy assetbundle | |
run: cp ${{ env.modmanager_ui_assentbundle }}modmanagerui.bundle ${{ env.modmanager_package_assets_folder }} -r | |
- name: Copy libs | |
run: cp ${{ env.modmanager_ui_libs }} ${{ env.modmanager_package_dll_folder }} -r | |
- name: Copy lang | |
run: cp ${{ env.modmanager_ui_lang }} ${{ env.modmanager_package_dll_folder }} -r | |
# | |
- name: Upload ModMonager Mod.io Build Artifact | |
uses: actions/[email protected] | |
with: | |
name: ModManager_${{ needs.versions.outputs.modmanager }} | |
path: ${{ env.modmanager_package_folder }} | |
- name: Zip Release | |
uses: TheDoctor0/[email protected] | |
with: | |
filename: ${{ env.modmanager_release_name }}_${{ needs.versions.outputs.modmanager }}.zip | |
path: "ModManager" | |
directory: ${{ env.modmanager_package_folder }} | |
- name: Read changelog | |
id: package | |
uses: juliangruber/read-file-action@v1 | |
with: | |
path: ./changelog.txt | |
- name: regex match action | |
id: regex | |
uses: MeilCli/[email protected] | |
with: | |
regex_pattern: '(?<=### Changes\n).*?(?:(?=##)|$(?![\r\n]))' | |
regex_option: s | |
search_string: "${{ steps.package.outputs.content }}" | |
- name: extract metadata | |
id: metadata | |
run: | | |
GAME_ID=$(jq '.game_id' metadata.json) | |
MOD_ID=$(jq '.modmanager_mod_id' metadata.json) | |
echo "GAME=$GAME_ID" >> $GITHUB_OUTPUT | |
echo "MOD=$MOD_ID" >> $GITHUB_OUTPUT | |
- uses: nickelc/[email protected] | |
with: | |
token: ${{ secrets.MODIO_TOKEN }} | |
game: ${{ steps.metadata.outputs.GAME }} | |
mod: ${{ steps.metadata.outputs.MOD }} | |
version: ${{ needs.versions.outputs.modmanager }} | |
path: ${{ env.modmanager_package_folder }}/${{ env.modmanager_release_name }}_${{ needs.versions.outputs.modmanager }}.zip | |
active: ${{ github.event.inputs.make_active_file_in_modio }} | |
changelog: "${{ steps.regex.outputs.matched_first }}" | |
update_version: | |
runs-on: ubuntu-latest | |
needs: [versions, create_modmanager_modio_pack] | |
if: always() && (needs.create_modmanager_modio_pack.result == 'success') | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Modify modmanager version number | |
if: needs.create_modmanager_modio_pack.result == 'success' | |
uses: mingjun97/file-regex-replace@v1 | |
with: | |
regex: '(?<=MOD_MANAGER=).*' | |
replacement: '${{ needs.versions.outputs.modmanager }}' | |
include: 'project_versions.txt' | |
exclude: 'Timberborn' | |
- name: Modify changelog | |
if: needs.create_modmanager_modio_pack.result == 'success' | |
uses: mingjun97/file-regex-replace@v1 | |
with: | |
regex: '## Unreleased' | |
replacement: | | |
## Unreleased | |
### Changes | |
## ${{ needs.versions.outputs.modmanager }} | |
include: 'changelog.txt' | |
exclude: 'Timberborn' | |
- name: Commit updated version | |
uses: EndBug/add-and-commit@v9 | |
with: | |
message: "Updated versions" | |
default_author: github_actions |