This commit is contained in:
@ -1,166 +0,0 @@
|
||||
#!/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"
|
||||
|
Reference in New Issue
Block a user