# 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: Checkout code uses: actions/checkout@v6 - 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 '