Update Semantic Release (#3807)

* Update Semantic Release
Improved CI for producing release packages
- Generates and includes version.txt
- Extended types for releases and release notes
- unity-packer is executed by semantic-release
- releaserc fully rewritten with comments

* fixed typos
This commit is contained in:
MrGadget 2024-04-14 11:41:25 -04:00
parent be29b59672
commit 008c01e2bd
2 changed files with 61 additions and 46 deletions

View File

@ -15,28 +15,22 @@ jobs:
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Delete Tests
run: |
Remove-Item -Recurse -Force Assets\Mirror\Tests
Remove-Item -Recurse -Force Assets\Mirror\Tests.meta
- name: Setup dotnet - name: Setup dotnet
uses: actions/setup-dotnet@v4 uses: actions/setup-dotnet@v4
with: with:
dotnet-version: '3.1.100' dotnet-version: '3.1.100'
# Installs nuget package from https://www.nuget.org/packages/unity-packer # Installs nuget package from https://www.nuget.org/packages/unity-packer
# Used by Semantic Release to create the Unity package.
- name: Install unity-packer - name: Install unity-packer
run: dotnet tool install -g unity-packer run: dotnet tool install -g unity-packer
# Install conventional-changelog-conventionalcommits
# Required for Semantic Release Notes Generator
- name: Install conventional-changelog-conventionalcommits
run: npm i -D conventional-changelog-conventionalcommits
- name: Package # See .releaserc.yml for configuration of semantic-release
run: unity-packer pack Mirror.unitypackage Assets/Mirror Assets/Mirror Assets/ScriptTemplates Assets/ScriptTemplates LICENSE Assets/Mirror/LICENSE
- uses: actions/upload-artifact@v4
with:
name: Mirror.unitypackage
path: Mirror.unitypackage
- name: Release - name: Release
uses: cycjimmy/semantic-release-action@v4 uses: cycjimmy/semantic-release-action@v4
with: with:

View File

@ -1,33 +1,54 @@
{ verifyConditions:
verifyConditions: ["@semantic-release/github"], - "@semantic-release/github"
prepare: [
{ plugins:
"path": "@semantic-release/exec", # Determines the type of release to create, if any.
"prepareCmd": "echo ${nextRelease.version} > Assets/Mirror/version.txt" # See https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#type
} # More types can be added here and in release-notes-generator below.
], - - '@semantic-release/commit-analyzer'
publish: [ - preset: "angular"
{ releaseRules:
"path": "@semantic-release/github", - type: "breaking"
"assets": [ release: "major"
{"path": "Mirror.unitypackage", "label": "Mirror Unity Package", "name": "Mirror-${nextRelease.version}.unitypackage"} - type: "release"
] release: "major"
} - type: "feature"
], release: "minor"
"plugins": [
["@semantic-release/commit-analyzer", { # Extends the behavior of semantic-release to generate release notes.
"preset": "angular", # 'fix' and 'feat' are built in and don't need to be defined here.
"releaseRules": [ # More types can be added to correspond with commit-analyzer above.
{"type": "breaking", "release": "major"}, - - '@semantic-release/release-notes-generator'
{"type": "feature", "release": "minor"}, - preset: "conventionalcommits"
] presetConfig:
}], types:
['@semantic-release/release-notes-generator', { - type: "breaking"
"preset": "angular", section: "Breaking Changes"
"releaseRules": [ hidden: false
{"type": "breaking", "release": "major"}, - type: "release"
{"type": "feature", "release": "minor"}, section: "Release"
] hidden: false
}], - type: "feature"
] section: "Features"
} hidden: false
# Write the new version in version.txt
- - '@semantic-release/exec'
- prepareCmd: "echo ${nextRelease.version} > Assets/Mirror/version.txt"
# Remove Test folder so it's excluded from Unity package
# -f: force, -r: recursive, -q: quiet
- - '@semantic-release/exec'
- prepareCmd: "rm -f -r -q Assets/Mirror/Tests
&& rm -f -q Assets/Mirror/Tests.meta"
# Create Unity package with Mirror, ScriptTemplates, and LICENSE
- - '@semantic-release/exec'
- prepareCmd: "unity-packer pack Mirror.unitypackage Assets/Mirror Assets/Mirror Assets/ScriptTemplates Assets/ScriptTemplates LICENSE Assets/Mirror/LICENSE"
# Create a new release on GitHub
- - '@semantic-release/github'
- assets:
- path: "Mirror.unitypackage"
label: "Mirror Unity Package"
name: "Mirror-${nextRelease.version}.unitypackage"