127 lines
3.7 KiB
YAML
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
|
|
'
|