Files
demo/setup-semantic-release-gitea.sh
Ralf Kirchner 6dff476e3c
Some checks failed
Release / release (push) Failing after 1m43s
feat: initial commit
2025-05-28 16:19:15 +02:00

167 lines
3.9 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
set -e
echo "📦 Starte interaktive Einrichtung für semantic-release + Gitea (mit Gitea Workflow)"
# 1. Benutzer-Eingaben
read -p "🔗 Gitea API URL (z.B. https://gitea.example.com): " GITEA_API
read -p "👤 Gitea Benutzername: " GITEA_USER
read -p "📁 Repository-Name (z.B. meinprojekt): " GITEA_REPO
read -p "🔀 Hauptbranch (Standard: main): " BRANCH
BRANCH=${BRANCH:-main}
echo ""
echo "📁 Initialisiere npm-Projekt..."
npm init -y
echo "📥 Installiere Dev-Dependencies..."
npm install --save-dev \
commitizen \
cz-conventional-changelog \
semantic-release \
@semantic-release/git \
@semantic-release/changelog \
@semantic-release/commit-analyzer \
@semantic-release/release-notes-generator \
json
echo "🧠 Erstelle .czrc (wird ignoriert)"
cat > .czrc <<EOF
{
"path": "cz-conventional-changelog"
}
EOF
echo "🧠 Erstelle .releaserc.json (wird ignoriert)"
cat > .releaserc.json <<EOF
{
"branches": ["$BRANCH"],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
[
"@semantic-release/changelog",
{
"changelogFile": "CHANGELOG.md"
}
],
[
"@semantic-release/git",
{
"assets": ["CHANGELOG.md"],
"message": "chore(release): \${nextRelease.version} [skip ci]\\n\\n\${nextRelease.notes}"
}
]
]
}
EOF
echo "📄 Erweitere package.json (wird ignoriert)"
npx json -I -f package.json -e 'this.scripts={"commit":"git-cz","release":"semantic-release"}'
npx json -I -f package.json -e 'this.version="0.0.0"'
echo "📄 Erstelle CHANGELOG.md (wird ignoriert)"
touch CHANGELOG.md
echo "🧹 Erstelle .gitignore"
cat > .gitignore <<EOF
# Node & npm
node_modules/
package-lock.json
# Config & meta
.czrc
.releaserc.json
CHANGELOG.md
create-gitea-release.sh
package.json
package-lock.json
# IDEs / Editor
.vscode/
.idea/
.DS_Store
# Logs / system
npm-debug.log*
yarn-debug.log*
yarn-error.log*
EOF
echo "📤 Erstelle Gitea Release Script im Workflow-Ordner"
mkdir -p .gitea/workflows
cat > .gitea/workflows/create-gitea-release.sh <<EOF
#!/bin/bash
VERSION=\$(node -p "require('./package.json').version")
API="$GITEA_API/api/v1"
REPO="$GITEA_USER/$GITEA_REPO"
TOKEN="\${GITEA_TOKEN}"
CHANGELOG_BODY=\$(awk '/^## /{exit} {print}' CHANGELOG.md | sed ':a;N;\$!ba;s/\\n/\\\\n/g')
curl -X POST "\$API/repos/\$REPO/releases" \\
-H "Authorization: token \$TOKEN" \\
-H "Content-Type: application/json" \\
-d "{
\\\"tag_name\\\": \\\"v\$VERSION\\\",
\\\"name\\\": \\\"v\$VERSION\\\",
\\\"body\\\": \\\"\$CHANGELOG_BODY\\\",
\\\"draft\\\": false,
\\\"prerelease\\\": false
}"
EOF
chmod +x .gitea/workflows/create-gitea-release.sh
echo "📂 Erstelle Gitea Workflow (.gitea/workflows/release.yml)"
cat > .gitea/workflows/release.yml <<EOF
name: Release
on:
push:
branches:
- $BRANCH
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '20'
- name: Install dependencies
run: npm ci
- name: Run semantic-release
run: npx semantic-release
- name: Create Gitea release
run: .gitea/workflows/create-gitea-release.sh
env:
GITEA_TOKEN: \${{ secrets.GITEA_TOKEN }}
EOF
echo ""
echo "✅ Einrichtung abgeschlossen. Nur Workflow-Dateien sind für Git relevant."
echo ""
echo "📦 Nächste Schritte:"
echo " - Commit mit: npm run commit"
echo " - Push auf '$BRANCH'"
echo " - In Gitea unter Settings → Secrets → Repository Secrets den GITEA_TOKEN anlegen"
echo " - Nach Push läuft der Workflow automatisch und erstellt Release + Tag"
echo ""
echo "💡 Zum manuellen Testen:"
echo " export GITEA_TOKEN=dein_api_token"
echo " npx semantic-release"
echo " .gitea/workflows/create-gitea-release.sh"