Mit GitHub-Ratenbegrenzungen arbeiten
Mehr als 150 von Evergreen unterstützte Anwendungen werden in GitHub-Repositorys gehostet oder beziehen Daten aus einem GitHub-Repository, um die neueste Version zu ermitteln. Evergreen verwendet beim Abfragen von Details zu diesen Anwendungen die GitHub-REST-API.
Sowohl Get-EvergreenApp als auch Update-Evergreen senden Anforderungen an die GitHub-REST-API:
Get-EvergreenAppfragt GitHub-Releases und -Tags ab, um Versions- und Downloadinformationen für auf GitHub gehostete Anwendungen zurückzugebenUpdate-Evergreenlädt die neuesten Anwendungsfunktionen und Manifeste aus dem Repository eucpilots/evergreen-apps herunter
GitHub begrenzt die API für nicht authentifizierte Anforderungen auf 60 Anforderungen pro Stunde und IP-Adresse. In Umgebungen, in denen Evergreen häufig oder in mehreren Sitzungen ausgeführt wird, kann dieses Limit schnell erreicht werden. Weitere Informationen finden Sie unter Ratenbegrenzungen für die REST-API.
Durch Authentifizierung mit einem persönlichen Zugriffstoken steigt das Limit auf 5.000 Anforderungen pro Stunde.
Persönliches Zugriffstoken erstellen
Evergreen unterstützt authentifizierte Anforderungen mit persönlichen Zugriffstoken. Empfohlen werden persönliche Zugriffstoken mit differenzierten Berechtigungen.
Ein Token mit Lesezugriff auf öffentliche Repositorys ist ausreichend. Weitere Bereiche oder Berechtigungen sind nicht erforderlich. Da das Token nur Lesezugriff auf öffentliche Repositorys benötigt, ist eine lange Ablaufzeit sinnvoll. Dennoch sollte das Token sicher verwaltet werden.

Umgebungsvariable GITHUB_TOKEN festlegen
Evergreen liest die Umgebungsvariablen GITHUB_TOKEN und GH_TOKEN. Wenn Sie eine dieser Variablen auf den Wert des persönlichen Zugriffstokens setzen, kann Evergreen Anforderungen an die GitHub-API automatisch authentifizieren. Sowohl Get-EvergreenApp als auch Update-Evergreen verwenden das Token ohne zusätzliche Konfiguration.
Windows
So legen Sie die Variable dauerhaft für den aktuellen Benutzer fest (sie bleibt über Sitzungen und Neustarts hinweg erhalten):
[System.Environment]::SetEnvironmentVariable("GITHUB_TOKEN", "<your-token>", "User")So legen Sie sie für alle Benutzer des Computers fest (Administratorrechte erforderlich):
[System.Environment]::SetEnvironmentVariable("GITHUB_TOKEN", "<your-token>", "Machine")Die Variable kann auch in der Windows-Benutzeroberfläche unter Systemeigenschaften > Erweitert > Umgebungsvariablen festgelegt werden.
So legen Sie sie nur für die aktuelle PowerShell-Sitzung fest:
$env:GITHUB_TOKEN = "<your-token>"macOS und Linux
Fügen Sie die folgende Zeile zu Ihrem Shell-Profil hinzu (~/.zshrc für Zsh, ~/.bashrc oder ~/.bash_profile für Bash), um die Variable dauerhaft festzulegen:
export GITHUB_TOKEN="<your-token>"Laden Sie das Profil nach dem Speichern erneut:
source ~/.zshrc # or source ~/.bashrcSo legen Sie die Variable nur für die aktuelle Shell-Sitzung fest:
export GITHUB_TOKEN="<your-token>"GitHub Actions
Wenn Evergreen in einem GitHub-Actions-Workflow ausgeführt wird, ist das Secret GITHUB_TOKEN automatisch verfügbar; ein separates persönliches Zugriffstoken ist nicht erforderlich. Weitere Informationen finden Sie unter GITHUB_TOKEN zur Authentifizierung in Workflows verwenden.
Fügen Sie Folgendes am Anfang Ihrer Workflowdatei ein, damit das Token als Umgebungsvariable verfügbar ist:
# Environment variables
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}Evergreen erkennt die Variable automatisch, wenn der Workflow ausgeführt wird.
Status der Ratenbegrenzung prüfen
Wenn Sie Get-EvergreenApp für eine Anwendung ausführen, die GitHub als Quelle verwendet, gibt der Parameter -Verbose die aktuelle Anzahl der verbleibenden API-Anforderungen aus:
Get-EvergreenApp -Name "MicrosoftBicep" -VerboseDie ausführliche Ausgabe enthält eine Zeile ähnlich der folgenden:
VERBOSE: Get-GitHubRateLimit: Remaining requests to the GitHub API: 58 of 60Wenn das Ratenlimit ausgeschöpft ist, gibt Evergreen ein Versionsobjekt vom Typ RateLimited zurück und zeigt eine Warnung an. Legen Sie vor der Ausführung von Evergreen GITHUB_TOKEN oder GH_TOKEN fest, um dies zu vermeiden.
