Files

127 lines
3.7 KiB
YAML

# yaml-language-server: $schema=https://raw.githubusercontent.com/SchemaStore/schemastore/master/src/schemas/json/github-action.json
name: semantic-release
description: Run Semantic Release against a Gitea repository
inputs:
gitea-url:
description: Gitea instance URL
required: true
default: https://git.oceanbox.io
gitea-token:
description: Gitea access token
required: true
nix-shell:
description: Nix shell attribute to use
required: false
default: ci
outputs:
new_release_published:
description: Whether a new release was published
value: ${{ steps.semantic.outputs.new_release_published }}
new_release_version:
description: Version that was released
value: ${{ steps.semantic.outputs.new_release_version }}
runs:
using: composite
steps:
- name: Create package.json
shell: bash
run: |
cat > package.json << 'EOF'
{
"private": true,
"type": "module",
"devDependencies": {
"@semantic-release/changelog": "^6.0.3",
"@semantic-release/exec": "^6.0.3",
"@semantic-release/git": "^10.0.1",
"@markwylde/semantic-release-gitea": "^2.2.0",
"semantic-release-dotnet": "^1.0.0"
}
}
EOF
- name: Install semantic-release dependencies
shell: bash
run: |
nix-shell -A "${{ inputs.nix-shell }}" --run '
set -o pipefail
set -o nounset
set -o errexit
npm install
'
- name: Create .releaserc.json
shell: bash
run: |
cat > .releaserc.json << 'EOF'
{
"branches": [
"main",
"master",
{ "name": "develop", "prerelease": true }
],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
["@semantic-release/changelog", {
"changelogFile": "RELEASE_NOTES.md",
"changelogTitle": "# Changelog"
}],
["semantic-release-dotnet", {
"paths": ["src/*.fsproj", "src/*/**.fsproj"]
}],
["@semantic-release/exec", {
"generateNotesCmd": "echo ${nextRelease.version} > VERSION"
}],
["@semantic-release/git", {
"message": "chore(release): ${nextRelease.version}\n\n${nextRelease.notes}",
"assets": [
"RELEASE_NOTES.md",
"VERSION",
"src/*.fsproj",
"src/*/**.fsproj"
]
}],
["@markwylde/semantic-release-gitea", {
"giteaUrl": "${{ inputs.gitea-url }}",
"assets": []
}]
],
"analyzeCommits": [
{
"path": "@semantic-release/commit-analyzer",
"releaseRules": [
{ "type": "fix", "release": "patch" },
{ "type": "patch", "release": "patch" },
{ "type": "feat", "release": "minor" },
{ "type": "feature", "release": "minor" },
{ "type": "minor", "release": "minor" },
{ "type": "breaking", "release": "major" },
{ "type": "major", "release": "major" }
]
}
]
}
EOF
- name: Run semantic-release
id: semantic
shell: bash
env:
GITEA_TOKEN: ${{ inputs.gitea-token }}
GITEA_URL: ${{ inputs.gitea-url }}
FORCE_COLOR: "1"
run: |
nix-shell -A "${{ inputs.nix-shell }}" --run '
set -o pipefail
set -o nounset
set -o errexit
semantic-release
'