Integration von CI/CD mit Snowflake CLI¶
Snowflake CLI integriert gängige CI/CD-Systeme (kontinuierliche Integration und kontinuierliche Bereitstellung) und Frameworks wie GitHub Actions, um Ihre Snowflake-Workflows für SQL, Snowpark, Native Apps oder Notebooks effizient zu automatisieren.
Bemerkung
Zukünftige Versionen werden Unterstützung für Jenkins und Azure-DevOps enthalten.
Die folgende Abbildung zeigt einen typischen CI/CD-Workflow in Snowflake CLI.

CI/CD-Workflowschritte¶
Speichern: Konfigurieren Sie ein externes Git-Repository, um Ihre Snowflake-Dateien sicher zu verwalten.
Code: Entwickeln Sie Ihren Snowflake-Code mit IDE oder Snowsight, ganz nach Ihren Wünschen.
Installieren: Installieren Sie Snowflake CLI und stellen Sie Ihren bevorzugten CI/CD-Anbieter bereit, z. B. GitHub Actions.
Bereitstellen: Automatisieren Sie die Bereitstellung, indem Sie Snowflake CLI mit dem von Ihnen gewählten CI/CD-Tool kombinieren.
Überwachen: Verfolgen Sie die Code- und Workflow-Leistung in Snowflake mit Snowflake Trail für Einblicke in Echtzeit.
Iterieren: Wenden Sie kleine, häufige Aktualisierungen an Ihrem Projekt an, um es kontinuierlich zu verbessern. Kleinere Änderungen vereinfachen das Management und das Rollback, falls erforderlich.
CI/CD mit GitHub Actions¶
Eine Snowflake CLI-Aktion ist eine GitHub-Aktion, die dazu dient, Snowflake CLI in CI/CD-Pipelines zu integrieren. Damit können Sie die Ausführung von Snowflake CLI-Befehlen innerhalb Ihrer GitHub-Workflows automatisieren.
Verwendung von Snowflake CLI-Aktionen¶
Snowflake CLI Github Actions rationalisiert den Prozess der Installation und Verwendung von Snowflake CLI in Ihren CI/CD-Workflows. Die CLI wird isoliert installiert, um sicherzustellen, dass sie nicht mit den Abhängigkeiten Ihres Projekts in Konflikt gerät. Es legt automatisch die Eingabekonfigurationsdatei im Verzeichnis ~/.snowflake/
an.
Eingabeparameter¶
Eine Snowflake CLI-Aktion verwendet die folgenden Eingaben aus Ihrer Github-Workflow YAML-Datei, z. B. <repo-name>/.github/workflows/my-workflow.yaml
:
cli-version
: Die angegebene Snowflake CLI-Version, z. B.3.6.0
. Falls nicht angegeben, wird die neueste Version von Snowflake CLI verwendet.default-config-file-path
: Pfad zu der Konfigurationsdatei (config.toml
) in Ihrem Repository. Der Pfad muss relativ zum Stammverzeichnis des Repositorys sein. Die Konfigurationsdatei ist nicht erforderlich, wenn eine temporäre Verbindung (Option-x
) verwendet wird.
Konfigurieren Sie die Aktion sicher in Ihrem CI/CD-Workflow¶
Um eine Github-Aktion zu verwenden, müssen Sie Folgendes tun:
Erzeugen Sie einen privaten Schlüssel. Weitere Informationen dazu finden Sie unter Schlüsselpaar-Authentifizierung und Schlüsselpaar-Rotation.
Speichern Sie die Anmeldeinformationen wie Konto, privater Schlüssel und Passphrase in GitHub-Geheimnissen. Weitere Informationen finden Sie in der GitHub Dokumentation zu Aktionen.
Definieren von Verbindungen¶
Sie können eine GitHub-Aktion definieren, um eine Verbindung zu Snowflake mit einer temporären Verbindung oder mit einer in Ihrer Konfigurationsdatei definierten Verbindung herzustellen. Weitere Informationen zur Verwaltung von Verbindungen finden Sie unter Verwalten von Snowflake-Verbindungen.
Verwenden Sie eine temporäre Verbindung¶
Weitere Informationen über temporäre Verbindungen finden Sie unter Verwenden Sie eine temporäre Verbindung.
Um Ihre Snowflake-Anmeldeinformationen für eine temporäre Verbindung einzurichten, gehen Sie folgendermaßen vor:
Ordnen Sie die Geheimnisse den Umgebungsvariablen in Ihrem GitHub-Workflow zu, und zwar in der Form
SNOWFLAKE_<key>=<value>
, wie gezeigt:env: SNOWFLAKE_PRIVATE_KEY_RAW: ${{ secrets.SNOWFLAKE_PRIVATE_KEY_RAW }} SNOWFLAKE_ACCOUNT: ${{ secrets.SNOWFLAKE_ACCOUNT }}
- Konfigurieren Sie die Snowflake CLI-Aktion.
Wenn Sie die neueste Version von Snowflake CLI verwenden, brauchen Sie den Parameter
cli-version
nicht zu berücksichtigen. Das folgende Beispiel weist die Aktion an, speziell Snowflake CLI Version 3.6.0 zu verwenden:- uses: snowflakedb/snowflake-cli-action@v1.5 with: cli-version: "3.6.0"
#. Optional: If your private key is encrypted, to set up a passphrase, set the PRIVATE_KEY_PASSPHRASE environment variable to the private key passphrase. Snowflake uses this passphrase to decrypt the private key. For example:
- name: Execute Snowflake CLI command env: PRIVATE_KEY_PASSPHRASE: ${{ secrets.PASSPHARSE }}Um ein Kennwort anstelle eines privaten Schlüssels zu verwenden, deaktivieren Sie die Umgebungsvariable
SNOWFLAKE_AUTHENTICATOR
und fügen Sie die VariableSNOWFLAKE_PASSWORD
hinzu, wie folgt:- name: Execute Snowflake CLI command env: SNOWFLAKE_USER: ${{ secrets.SNOWFLAKE_USER }} SNOWFLAKE_ACCOUNT: ${{ secrets.SNOWFLAKE_ACCOUNT }} SNOWFLAKE_PASSWORD: ${{ secrets.SNOWFLAKE_PASSWORD }}Bemerkung
Um die Nutzung eines Kennworts und MFA zu verbessern, empfiehlt Snowflake die Konfiguration von MFA-Caching.
Weitere Informationen zum Festlegen von Snowflake-Anmeldeinformationen in Umgebungsvariablen finden Sie unter Umgebungsvariablen für Snowflake-Anmeldeinformationen verwenden und Informationen zum Definieren von Umgebungsvariablen innerhalb Ihres GitHub CI/CD -Workflows finden Sie unter Definieren von Umgebungsvariablen für einen einzelnen Workflow.
Fügen Sie die
snow
-Befehle hinzu, die Sie mit der temporären Verbindung ausführen möchten, wie gezeigt:run: | snow --version snow connection test --temporary-connection
Das folgende Beispiel zeigt eine fertige Beispieldatei <repo-name>/.github/workflows/my-workflow.yaml
:
name: deploy
on: [push]
jobs:
version:
name: "Check Snowflake CLI version"
runs-on: ubuntu-latest
steps:
# Snowflake CLI installation
- uses: snowflakedb/snowflake-cli-action@v1.5
# Use the CLI
- name: Execute Snowflake CLI command
env:
SNOWFLAKE_AUTHENTICATOR: SNOWFLAKE_JWT
SNOWFLAKE_USER: ${{ secrets.SNOWFLAKE_USER }}
SNOWFLAKE_ACCOUNT: ${{ secrets.SNOWFLAKE_ACCOUNT }}
SNOWFLAKE_PRIVATE_KEY_RAW: ${{ secrets.SNOWFLAKE_PRIVATE_KEY_RAW }}
PRIVATE_KEY_PASSPHRASE: ${{ secrets.PASSPHARSE }} # Passphrase is only necessary if private key is encrypted.
run: |
snow --help
snow connection test -x
Nachdem Sie überprüft haben, dass Ihre Aktion erfolgreich eine Verbindung zu Snowflake herstellen kann, können Sie weitere Snowflake CLI-Befehle wie snow notebook create
oder snow git execute
hinzufügen. Informationen über unterstützte Befehle finden Sie unter Referenz zu Snowflake CLI-Befehlen.
Verwenden Sie eine Konfigurationsdatei¶
Weitere Informationen zur Definition von Verbindungen finden Sie unter Definieren Sie Verbindungen.
Um Ihre Snowflake-Anmeldeinformationen für eine bestimmte Verbindung einzurichten, gehen Sie wie folgt vor:
Erstellen Sie eine Datei config.toml im Stammverzeichnis Ihres Git-Repositorys mit einer leeren Konfigurationsverbindung, wie gezeigt:
default_connection_name = "myconnection" [connections.myconnection]
Diese Datei dient als Vorlage und sollte keine tatsächlichen Anmeldeinformationen enthalten.
Ordnen Sie die Geheimnisse den Umgebungsvariablen in Ihrem GitHub-Workflow zu, und zwar in der Form
SNOWFLAKE_<key>=<value>
, wie gezeigt:env: SNOWFLAKE_CONNECTIONS_MYCONNECTION_PRIVATE_KEY_RAW: ${{ secrets.SNOWFLAKE_PRIVATE_KEY_RAW }} SNOWFLAKE_CONNECTIONS_MYCONNECTION_ACCOUNT: ${{ secrets.SNOWFLAKE_ACCOUNT }}
#. Configure the Snowflake CLI action.
If you use the latest version of Snowflake CLI, you do not need to include the cli-version
parameter.
The following example specifies a desired version and the name of your default configuration file:
- uses: snowflakedb/snowflake-cli-action@v1.5 with: cli-version: "3.6.0" default-config-file-path: "config.toml"
#. Optional: If your private key is encrypted, to set up a passphrase, set the PRIVATE_KEY_PASSPHRASE environment variable to the private key passphrase. Snowflake uses this passphrase to decrypt the private key. For example:
- name: Execute Snowflake CLI command env: PRIVATE_KEY_PASSPHRASE: ${{ secrets.PASSPHARSE }}Um ein Kennwort anstelle eines privaten Schlüssels zu verwenden, deaktivieren Sie die Umgebungsvariable
SNOWFLAKE_AUTHENTICATOR
und fügen Sie die VariableSNOWFLAKE_PASSWORD
hinzu, wie folgt:- name: Execute Snowflake CLI command env: SNOWFLAKE_CONNECTIONS_MYCONNECTION_USER: ${{ secrets.SNOWFLAKE_USER }} SNOWFLAKE_CONNECTIONS_MYCONNECTION_ACCOUNT: ${{ secrets.SNOWFLAKE_ACCOUNT }} SNOWFLAKE_CONNECTIONS_MYCONNECTION_PASSWORD: ${{ secrets.SNOWFLAKE_PASSWORD }}Bemerkung
Um die Nutzung eines Kennworts und MFA zu verbessern, empfiehlt Snowflake die Konfiguration von MFA-Caching.
Fügen Sie die snow-Befehle hinzu, die Sie mit einer benannten Verbindung ausführen möchten, wie gezeigt:
run: | snow --version snow connection test
Das folgende Beispiel zeigt eine Beispieldatei config.toml
in Ihrem Git-Repository und eine fertige Beispieldatei <repo-name>/.github/workflows/my-workflow.yaml
:
Beispiel
config.toml
-Datei:default_connection_name = "myconnection" [connections.myconnection]
Beispiel einer Git-Workflow-Datei:
name: deploy on: [push] jobs: version: name: "Check Snowflake CLI version" runs-on: ubuntu-latest steps: # Checkout step is necessary if you want to use a config file from your repo - name: Checkout repo uses: actions/checkout@v4 with: persist-credentials: false # Snowflake CLI installation - uses: snowflakedb/snowflake-cli-action@v1.5 with: default-config-file-path: "config.toml" # Use the CLI - name: Execute Snowflake CLI command env: SNOWFLAKE_CONNECTIONS_MYCONNECTION_AUTHENTICATOR: SNOWFLAKE_JWT SNOWFLAKE_CONNECTIONS_MYCONNECTION_USER: ${{ secrets.SNOWFLAKE_USER }} SNOWFLAKE_CONNECTIONS_MYCONNECTION_ACCOUNT: ${{ secrets.SNOWFLAKE_ACCOUNT }} SNOWFLAKE_CONNECTIONS_MYCONNECTION_PRIVATE_KEY_RAW: ${{ secrets.SNOWFLAKE_PRIVATE_KEY_RAW }} PRIVATE_KEY_PASSPHRASE: ${{ secrets.PASSPHARSE }} #Passphrase is only necessary if private key is encrypted. run: | snow --help snow connection test
Nachdem Sie überprüft haben, dass Ihre Aktion erfolgreich eine Verbindung zu Snowflake herstellen kann, können Sie weitere Snowflake CLI-Befehle wie snow notebook create
oder snow git execute
hinzufügen. Informationen über unterstützte Befehle finden Sie unter Referenz zu Snowflake CLI-Befehlen.