Dieses Dokument erklärt, wie Sie GitHub Secrets für die CI/CD-Pipeline einrichten.
Secret Name: PYPI_API_TOKEN
Verwendung: Zum automatischen Upload von Packages zu PyPI
- Gehen Sie zu PyPI.org
- Melden Sie sich an (oder erstellen Sie einen Account)
- Gehen Sie zu Account Settings → API Tokens
- Klicken Sie auf Add API Token
- Geben Sie einen Namen ein (z.B. "Bash-Script-Maker GitHub Actions")
- Wählen Sie Scope: "Entire account (all projects)"
- Klicken Sie auf Add token
- Kopieren Sie den Token sofort (er wird nur einmal angezeigt!)
Secret Name: GITHUB_TOKEN
Verwendung: Für GitHub API Zugriffe innerhalb von Actions
✅ Dieses Secret wird automatisch von GitHub bereitgestellt - keine manuelle Einrichtung nötig!
- Gehen Sie zu Ihrem GitHub Repository:
https://github.com/securebitsorg/bash-script-maker - Klicken Sie auf Settings (Zahnrad-Symbol)
- Scrollen Sie im linken Menü nach unten zu Secrets and variables
- Klicken Sie auf Actions
- Klicken Sie auf New repository secret
- Name:
PYPI_API_TOKEN - Value: Fügen Sie Ihren PyPI API Token ein
- Klicken Sie auf Add secret
- Sie sollten jetzt diese Secrets in der Liste sehen:
PYPI_API_TOKEN✅GITHUB_TOKEN✅ (automatisch)
- ✅ Teilen Sie Secrets niemals in Code, Commits oder Issues
- ✅ Rotieren Sie Token regelmäßig
- ✅ Verwenden Sie dedizierte Token mit minimalen Berechtigungen
- ✅ Löschen Sie alte Token, die nicht mehr benötigt werden
- 📝 Dokumentieren Sie Ihre Token und deren Zweck
- 🔄 Erneuern Sie Token bei Sicherheitsvorfällen
- 🏷️ Verwenden Sie beschreibende Namen für Token
# Installieren Sie Twine
pip install twine
# Testen Sie die Verbindung (ohne Upload)
python -m build
python -m twine check dist/*
# Testen Sie den Upload (nur wenn Sie bereit sind)
python -m twine upload --repository testpypi dist/*- Push zu main branch → CI/CD Pipeline wird automatisch gestartet
- Überprüfen Sie den Actions Tab in GitHub
- Sehen Sie sich die Logs an für Fehler oder Erfolgsmeldungen
Lösung:
- Überprüfen Sie die Schreibweise:
PYPI_API_TOKEN(alles Großbuchstaben) - Stellen Sie sicher, dass das Secret im richtigen Repository gesetzt ist
- Überprüfen Sie, dass der Token nicht abgelaufen ist
Mögliche Ursachen:
- ❌ Ungültiger PyPI Token
- ❌ Package-Name bereits vergeben (ändern Sie den Namen in
setup.py) - ❌ Netzwerkprobleme (versuchen Sie es später erneut)
Lösung:
- Gehen Sie zu PyPI → Account Settings → API Tokens
- Löschen Sie den alten Token
- Erstellen Sie einen neuen Token
- Aktualisieren Sie das GitHub Secret
- Actions Tab: Zeigt alle Workflow-Läufe
- Badge hinzufügen:

- Klicken Sie auf einen Workflow-Lauf
- Öffnen Sie einzelne Jobs
- Suchen Sie nach Fehlermeldungen
- Verwenden Sie die Suchfunktion für spezifische Fehler
# Lokaler Test
python -m build
python -m twine check dist/*
# GitHub Release erstellen
# Gehen Sie zu GitHub → Releases → "Create a new release"
# Tag: v1.0.0
# Title: First Release
# Description: Initial release of Bash-Script-Maker# Für zukünftige Releases einfach Tags pushen
git tag v1.0.1
git push origin v1.0.1- Branches: Schützen Sie den main branch
- Issues: Aktivieren Sie Issue Templates
- Discussions: Für Community-Support
- Wiki: Für erweiterte Dokumentation
Bei Problemen mit den Secrets:
- GitHub Documentation: Creating and storing encrypted secrets
- PyPI Documentation: Using API tokens
- GitHub Community: GitHub Actions Forum
GitHub Actions benötigt explizite Berechtigungen für bestimmte Operationen:
contents: read- Lesen von Repository-Inhaltencontents: write- Schreiben/Erstellen von Releases und Tagssecurity-events: write- Hochladen von CodeQL-Ergebnissenactions: read- Lesen von Workflow-Informationen
Wichtiger Hinweis zu tkinter:
- tkinter ist kein pip-Paket und kann nicht über
pip installinstalliert werden - tkinter ist ein System-Paket das mit Python installiert werden muss
- In Ubuntu/Debian:
sudo apt install python3-tk - In Fedora/RHEL:
sudo dnf install python3-tkinter - Daher steht tkinter nicht in
requirements.txt
Warum passiert dieser Fehler?
- GitHub Actions Runner haben tkinter standardmäßig installiert
- Zusätzliche System-Pakete werden über
sudo apt installinstalliert - pip versucht tkinter zu installieren (fehlschlägt erwartungsgemäß)
- CI/CD Pipeline:
contents: read - Release Job:
contents: write - CodeQL:
security-events: write - Version & Release:
contents: write
Forks haben standardmäßig nicht alle Berechtigungen. Daher:
- CodeQL läuft nur im Haupt-Repository
- CI/CD Tests laufen in allen Branches
- Releases nur vom Haupt-Repository
Warum CodeQL deaktiviert wurde:
- Komplexe Berechtigungskonfiguration erforderlich
- SARIF-Upload funktioniert nicht in Forks
- Hoher Konfigurationsaufwand
Ersatz: Security-Scan Workflow (.github/workflows/security-scan.yml):
- ✅ Einfachere Konfiguration
- ✅ Funktioniert in Forks und Haupt-Repository
- ✅ Verwendet Bandit und Safety für Security-Scans
- ✅ Lädt Ergebnisse als Artefakte hoch
- ✅ Keine speziellen Berechtigungen erforderlich
Verwendung:
# Automatisch aktiviert für:
- Push zu main/develop
- Pull Requests
- Keine speziellen Secrets erforderlichWarum wurde MyPy gelockert?
- Ursprünglich wurden 58 Type-Annotation-Fehler gemeldet
- Für ein kleines Projekt wäre das Hinzufügen aller Annotations zu zeitaufwändig
- MyPy ist jetzt konfigurierbar zwischen "locker" und "streng"
Konfiguration verwenden:
- Locker (Standard):
pyproject.toml- ignoriert fehlende Annotations - Streng (Optional):
mypy.ini- erzwingt vollständige Type-Annotations - Manuell:
mypy --config-file mypy.ini bash_script_maker.py syntax_highlighter.py
Um Type-Annotations hinzuzufügen:
- Verwenden Sie
mypy.inials Konfigurationsdatei - Fügen Sie Type-Hints zu allen Funktionen hinzu
- Beispiel:
def meine_funktion(name: str) -> bool: - Führen Sie MyPy erneut aus um Fortschritt zu sehen
- GitHub Repository erstellt/geklont
- PyPI Account und API Token erstellt
-
PYPI_API_TOKENSecret in GitHub gesetzt -
GITHUB_TOKENautomatisch verfügbar - Repository zu GitHub gepusht
- CI/CD Pipeline erfolgreich gelaufen
- CodeQL Security Scan funktioniert
- Erstes Release erstellt
- Badges zum README hinzugefügt
GitHub.com → Ihr Repository → Settings → Secrets and variables → Actions
New repository secret
Name: PYPI_API_TOKEN
Value: [Ihr PyPI API Token]
✅ PYPI_API_TOKEN sollte in der Liste erscheinen
✅ GITHUB_TOKEN ist automatisch verfügbar
Option 1: Automatisch (empfohlen)
./init_github.shOption 2: Manuell
git init # falls noch nicht geschehen
git add .
git commit -m "🎉 Initial commit: Bash-Script-Maker mit GitHub Actions CI/CD
✨ Features:
• GUI-Programm zur Bash-Script-Erstellung
• Syntax-Highlighting für Bash-Scripts
• Autovervollständigung
• Intelligente Tab-Funktionalität
• Zenity-Dialog-Integration
🔧 Technik:
• Vollständige GitHub Actions CI/CD Pipeline
• Automatische Releases und Package-Publishing
• CodeQL Security Scanning
• Mehrere Linux-Distributionen unterstützt
• Umfassende Test-Suite"
git branch -M main
git remote add origin https://github.com/securebitsorg/bash-script-maker.git
git push -u origin main- Gehen Sie zu GitHub → Releases → Create a new release
- Tag version:
v1.0.0 - Release title:
First Release - Description:
Initial release of Bash-Script-Maker - Publish release
Nach dem ersten Release aktualisieren Sie die Badge-URLs im README.md:
# Ersetzen Sie 'yourusername' mit Ihrem GitHub-Benutzernamen
[](https://github.com/securebitsorg/bash-script-maker/actions/workflows/ci-cd.yml)- 🔒 Speichern Sie Token niemals in Code oder öffentlichen Commits
- 🔄 Rotieren Sie Token alle 6-12 Monate
- 🗑️ Löschen Sie nicht mehr benötigte Token
- 📝 Dokumentieren Sie Ihre Token für Team-Mitglieder
- "Secret not found": Überprüfen Sie die Schreibweise (alles Großbuchstaben)
- "Invalid token": Token könnte abgelaufen sein - neuen Token erstellen
- "Permission denied": Token hat nicht die richtigen Berechtigungen
- "Unable to resolve action": GitHub Action Version existiert nicht - Workflow wurde korrigiert
- "pre-commit-hooks-safety" Fehler: Wurde durch lokale safety Installation ersetzt
- "Python version X.X was not found": Python-Version aktualisiert auf 3.8+ (3.6/3.7 nicht mehr verfügbar)
- "Resource not accessible by integration": Fehlende Berechtigungen - Workflow wurde korrigiert
- "Could not find a version that satisfies the requirement tkinter": tkinter ist ein System-Paket - wurde korrigiert
- MyPy Type-Annotation-Fehler: MyPy-Konfiguration gelockert für einfachere Entwicklung
- Black Formatierungsfehler: Code wurde mit Black formatiert und entspricht jetzt dem Styleguide
- pytest Coverage-Fehler: Korrekte pytest-Tests erstellt, Coverage von 15% auf 23% erhöht
- CodeQL SARIF Upload-Fehler: CodeQL temporär deaktiviert, Security-Scan als Alternative
- Free Tier: 2.000 Minuten/Monat für öffentliche Repositories
- Pro Tier: 3.000 Minuten/Monat
- Storage: 500 MB pro Repository
- Concurrency: 20 gleichzeitige Jobs
Hinweis: Secrets sind für alle Repository-Typen kostenlos verfügbar. Bei privaten Repositorys haben Sie jedoch mehr Minuten für GitHub Actions zur Verfügung.
Viel Spaß beim ausprobieren!