Snowflake-CLI-GitHub-Aktion¶
Die Snowflake CLI-GitHub-Aktion (snowflakedb/snowflake-cli-action) installiert und konfiguriert Snowflake CLI in einem GitHub Actions-Workflow. Verwenden Sie es, um Snowflake-Bereitstellungen (DCM-Projekte, Snowpark-Anwendungen, Snowflake Native Apps und SQL-Skripte) von IhremGitHub-Repository zu automatisieren.
Wie es funktioniert¶
Die Aktion führt folgende Schritte für den ausführenden Benutzer aus:
Installiert Python 3.11 und den
uv-Paketmanager mit astral-sh/setup-uv.Installiert Snowflake CLI in einer isolierten Umgebung (
uv tool install snowflake-cli.Kopiert
config.tomlvom Repository zu~/.snowflake/config.toml(0600auf Linux/macOS). Übersprungen, wenn die Datei nicht vorhanden ist.Wenn die OIDC-Authentifizierung aktiviert ist, erhält sie ein von GitHub ausgestelltes OIDC-Token und legt die Umgebungsvariablen der Snowflake-Workload-Identität für nachfolgende Schritte fest.
Nachdem die Aktion abgeschlossen ist, ist der snow-Befehl auf PATH für jeden nachfolgenden Schritt im Job verfügbar.
Schnelles Nutzungsbeispiel¶
Der folgende Workflow führt die Authentifizierung bei Snowflake unter Verwendung von OIDC und einen Verbindungstest aus:
Weitere Authentifizierungsmethoden finden Sie unter Authentifizierungsmethoden.
Version anheften¶
Die -Aktion unterstützt drei Pin-Stile:
**Commit für SHA ** (
@a1b2c3d...): Dies gilt für ein bestimmtes Commit.Patch-Version-Tag (
@v2.0.2): Dies gilt für ein bestimmtes Release.Gleitender Major-Tag (
@v2): folgt dem neuesten Release in dieser Major-Version.
Eingaben¶
Die Aktion akzeptiert die folgenden Eingaben, die unter with: in Ihrem -WorkflowYAML angegeben sind:
Eingabe |
Erforderlich |
Standard |
Beschreibung |
|---|---|---|---|
|
Nein |
(neueste) |
Snowflake CLI-Version zum Installieren, z. B. |
|
Nein |
(–) |
GitHub-Branch, -Tag oder -Commit, von dem Snowflake CLI installiert werden soll. Verwenden Sie dies, um nicht veröffentlichte Features oder eine Abspaltung zu testen. Gegenseitig ausschließend mit |
|
Nein |
|
Pfad zu |
|
Nein |
|
Wenn |
|
Nein |
|
Name der Umgebungsvariable, als die das OIDC-Token exportiert wird. Legen Sie dies als |
Bemerkung
Geben Sie nur eine Version an: entweder cli-version oder custom-github-ref; wenn Sie beide gleichzeitig verwenden, wird ein Fehler ausgegeben.
Methoden der Authentifizierung¶
Die -Aktion unterstützt drei Möglichkeiten der Authentifizierung bei Snowflake. Snowflake empfiehlt OIDC, da dadurch die Speicherung langlebiger Geheimnisse in GitHub vermieden wird.
Methode |
Sicherheit |
Erforderliche Geheimnisse |
Snowflake CLI-Version |
|---|---|---|---|
Workload-Identitäts-Verbund (WIF) mit OIDC (empfohlen) |
Geheimnislose, kurzlebige Token |
Nur Snowflake-Konto |
3.11 oder höher |
Privater Schlüssel, der in GitHub Secrets gespeichert ist |
Privater Schlüssel, Konto, Benutzer |
Beliebig |
|
Kennwort, das in GitHub Secrets gespeichert ist |
Kennwort, Konto, Benutzer |
Beliebig |
Workload Identity Federation (WIF) mit OIDC¶
Bemerkung
Die OIDC-Authentifizierung erfordert Snowflake CLI-Version 3.11.0 oder höher.
Mit OIDC stellt GitHub ein kurzlebiges OpenID Connect-Token aus, das Snowflake direkt validiert. Kein privater Schlüssel oder Kennwort wird in GitHub gespeichert.
Erstellen des Service-Benutzers¶
Erstellen eines Snowflake-Service-Benutzers, der dem GitHub OIDC-Anbieter vertraut:
SUBJECT muss mit dem Anspruch übereinstimmen, den GitHub für den Workflow ausgibt. Verwenden Sie eines der folgenden Formate:
Format des Betreffs |
Übereinstimmungen |
Workflow-Anforderung |
|---|---|---|
|
Mit Push an den angegebenen Zweig |
|
|
Jedes Pull-Anforderungs-Ereignis |
|
|
Der Job zielt auf eine benannteGitHub-Umgebung ab |
Job legt :codenowrap:`environment:<name> fest (die Umgebung muss in den Repository-Einstellungen vorhanden sein) |
Wenn ein Job environment: festlegt, verwendet GitHub die Umgebungsform unabhängig vom Auslöser.
Um den Subject-Claim um einen übergeordneten Wert wie repository_owner anzupassen, lesen Sie die GitHub `OpenID Connect-Referenz <https://docs.github.com/en/actions/reference/security/oidc>.
Konfigurieren der Aktion¶
Erteilen Sie die Berechtigung id-token: write für den Job und legen Sie use-oidc: true in der Aktion fest:
Wenn use-oidc: true festgelegt ist, exportiert die Aktion die folgenden Umgebungsvariablen für nachfolgende Schritte:
SNOWFLAKE_AUTHENTICATOR=WORKLOAD_IDENTITYSNOWFLAKE_WORKLOAD_IDENTITY_PROVIDER=OIDCSNOWFLAKE_AUDIENCE=snowflakecomputing.comSNOWFLAKE_TOKEN =<token>(oder die von :codenowrap benannte Variable:oidc-token-name)
Für einen breiteren Kontext siehe:doc:/user-guide/workload-identity-federation.
Schlüsselpaar-Authentifizierung¶
Speichern Sie Ihren privaten Snowflake-Schlüssel als GitHub Secret und geben Sie es über die Umgebung weiter. Sie können eine temporäre Verbindung verwenden (config.toml nicht erforderlich) oder eine benannte Verbindung, die in config.toml definiert ist.
Temporäre Verbindung:
„Benannte Verbindung: Committen Sie eine config.toml mit einem leeren Verbindungsblock und überschreiben Sie die Felder durch Umgebungsvariablen:
Weitere Informationen zu Verbindung finden Sie unter Verwalten von Snowflake-Verbindungen.
Kennwortauthentifizierung¶
Die Authentifizierung per Kennwort wird für ältere Workflows unterstützt, wird aber nicht für Produktion-CI/-CD empfohlen. Um sie zu verwenden, lassen Sie SNOWFLAKE_AUTHENTICATOR weg (der CLI-Standard ist die Passwort-Authentifizierung) und übergeben Sie SNOWFLAKE_PASSWORD:
Bemerkung
Bei Verwendung eines Passworts und MFA empfiehlt Snowflake, das :ref:`MFA-Caching <label_snowcli_mfa_caching> zu aktivieren.
Installation von einem Zweig, Tag oder Commit¶
Um eine unveröffentlichte Snowflake CLI-Änderung oder einen Fork zu testen, verwenden Sie custom-github-ref:
Plattformunterstützung¶
Die Aktion wird auf Ubuntu-, macOS- und Windows-GitHub-gehosteten Runnern ausgeführt und wurde gegen Python 3.10 und 3.13 getestet. Beachten Sie das folgende plattformspezifische Verhalten:
Linux und macOS: die kopierte
config.tomlwird auf0600-Berechtigungen festgelegt.Windows: Dateiberechtigungen für
config.tomlwerden nicht geändert. Verwenden Sie GitHub-Secrets für Anmeldeinformationen und vermeiden Sie es, Secrets inconfig.tomlzu committen, unabhängig vom Runner.