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