This commit is contained in:
29
.gitea/workflows/release.yml
Normal file
29
.gitea/workflows/release.yml
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
name: Release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
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.GIT_TOKEN }}
|
||||||
21
.gitignore
vendored
Normal file
21
.gitignore
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
# 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*
|
||||||
166
setup-semantic-release-gitea.sh
Executable file
166
setup-semantic-release-gitea.sh
Executable file
@@ -0,0 +1,166 @@
|
|||||||
|
#!/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