feat: Automatic release scripts

This commit is contained in:
2024-11-18 19:48:11 -06:00
parent 117ffd9103
commit ca094dd0f6
4 changed files with 127 additions and 0 deletions

15
.gitattributes vendored Normal file
View File

@@ -0,0 +1,15 @@
# Set the default behavior to automatically detect text files and perform LF normalization
* text=auto
# files that should not be modified
*.png binary
*.blend binary export-ignore
# files that should not get included in a release zip
README.md export-ignore
.vscode export-ignore
.git export-ignore
.github export-ignore
.gitignore export-ignore
.gitattributes export-ignore
.releaserc export-ignore

33
.github/workflows/release.yaml vendored Normal file
View File

@@ -0,0 +1,33 @@
name: Release
permissions: write-all
on:
push:
branches:
- main # Change to the correct one upon release, master
jobs:
release:
name: release
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: lts/*
- name: Install release dependencies
run: |
npm install semantic-release@^24 \
@semantic-release/git@^10 semantic-release-factorio@^1.5.1 \
conventional-changelog-conventionalcommits@^8
- name: Run semantic-release
run: npx semantic-release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
FACTORIO_TOKEN: ${{ secrets.FACTORIO_TOKEN }}

6
.gitignore vendored Normal file
View File

@@ -0,0 +1,6 @@
.vscode/*
!.vscode/extensions.json
!.vscode/settings.json
*.code-workspace
*.zip

73
.releaserc Normal file
View File

@@ -0,0 +1,73 @@
{
"branches": ["main"],
"plugins":
[
[
"@semantic-release/commit-analyzer",
{
"preset": "conventionalcommits",
"releaseRules":
[
{ "breaking": true, "release": "major" },
{ "type": "info", "release": "patch" },
{ "type": "feat", "release": "minor" },
{ "type": "feature", "release": "minor" },
{ "type": "gui", "release": "patch" },
{ "type": "balance", "release": "patch" },
{ "type": "perf", "release": "patch" },
{ "type": "performance", "release": "patch" },
{ "type": "compat", "release": "patch" },
{ "type": "compatibility", "release": "patch" },
{ "type": "fix", "release": "patch" },
{ "type": "graphics", "release": "patch" },
{ "type": "sound", "release": "patch" },
{ "type": "locale", "release": "patch" },
{ "type": "translate", "release": "patch" },
{ "type": "control", "release": "patch" },
{ "type": "other", "release": "patch" },
],
},
],
[
"@semantic-release/release-notes-generator",
{
"preset": "conventionalcommits",
"writerOpts":
{
"headerPartial": "---------------------------------------------------------------------------------------------------\nVersion: {{version}}\nDate: {{#if date}}{{date}}{{else}}????{{/if}}\n",
"footerPartial": "",
"commitPartial": "{{#if scope}}[{{scope}}] {{/if}}{{~subject}}",
"mainTemplate": "{{> header}}\n{{#each commitGroups}}\n {{title}}:\n{{#each commits}}\n - {{> commit root=@root}}\n{{/each}}\n{{/each}}",
},
"presetConfig":
{
"types":
[
{ "type": "info", "section": "Info" },
{ "type": "feat", "section": "Features" },
{ "type": "feature", "section": "Features" },
{ "type": "gui", "section": "Gui" },
{ "type": "balance", "section": "Balancing" },
{ "type": "perf", "section": "Optimizations" },
{ "type": "performance", "section": "Optimizations" },
{ "type": "compat", "section": "Compatibility" },
{ "type": "compatibility", "section": "Compatibility" },
{ "type": "fix", "section": "Bugfixes" },
{ "type": "graphics", "section": "Graphics" },
{ "type": "sound", "section": "Sounds" },
{ "type": "locale", "section": "Locale" },
{ "type": "translate", "section": "Translation" },
{ "type": "control", "section": "Control" },
{ "type": "other", "section": "Changes" },
],
},
},
],
"semantic-release-factorio",
[
"@semantic-release/github",
{ "assets": [{ "path": "*_*.*.*.zip", "label": "Packaged Mod" }] },
],
["@semantic-release/git", { "assets": ["changelog.txt", "info.json"] }],
],
}