GitHub Action Snowflake CLI¶
La Snowflake CLI GitHub Action (snowflakedb/snowflake-cli-action) installe et configure la Snowflake CLI dans un workflow GitHub Actions. Utilisez-la pour automatiser les déploiements Snowflake (projets DCM, applications Snowpark, Snowflake Native Apps et scripts SQL) de votre référentiel GitHub.
Fonctionnement¶
Cette action effectue les opérations suivantes sur le runner :
Installe Python 3.11 et le ``uv``gestionnaire de paquets utilisant astral-sh/setup-uv.
Installe la Snowflake CLI dans un environnement isolé (
uv tool install snowflake-cli).Copie
config.tomldu référentiel vers~/.snowflake/config.toml(0600sous Linux/macOS). Ignoré si le fichier est absent.Lorsque l’authentification OIDC est activée, le système récupère un jeton OIDC émis par GitHub et définit les variables d’environnement d’identité de la charge de travail Snowflake pour les étapes suivantes.
Une fois l’action terminée, la commande snow est disponible sur PATH pour chaque étape suivante de la tâche.
Exemple d’utilisation rapide¶
Le flux de travail suivant s’authentifie auprès de Snowflake à l’aide d’OIDC et exécute un test de connexion :
Pour d’autres méthodes d’authentification, voir Méthodes d’authentification.
Épinglage de la version¶
L’action prend en charge trois style d’épinglage :
Valider SHA (
@a1b2c3d...) : épingle sur une validation spécifique.Balise de la version de correctif (
@v2.0.2) : épingle sur une version spécifique.Balise majeure flottante (
@v2) : suit la dernière version de cette version majeure.
Entrées¶
L’action accepte les entrées suivantes, spécifiées sous with: dans votre workflow YAML :
Entrée |
Obligatoire |
Par défaut |
Description |
|---|---|---|---|
|
Non |
(la plus récente) |
Version Snowflake CLI à installer, par exemple |
|
Non |
(aucun) |
Branche GitHub, balise ou validation pour l’installation de Snowflake CLI. Utilisez cette option pour tester des fonctionnalités non encore publiées ou un fork. Incompatible avec |
|
Non |
|
Chemin vers votre |
|
Non |
|
Lorsque |
|
Non |
|
Nom de la variable d’environnement sous laquelle le jeton OIDC est exporté. Définissez-la sur |
Note
Spécifiez uniquement l’un des éléments suivants : cli-version ou custom-github-ref ; l’utilisation des deux en même temps entraîne une erreur.
Méthodes d’authentification¶
L’action prend en charge trois méthodes d’authentification auprès de Snowflake. Snowflake recommande OIDC, car cela évite de stocker des secrets à longue durée de vie dans GitHub.
Méthode |
Sécurité |
Secrets obligatoires |
Version Snowflake CLI : |
|---|---|---|---|
Fédération d’identité de charge de travail (WIF) avec OIDC (recommandé) |
Jetons sans secret et de courte durée |
Compte Snowflake uniquement |
3.11 ou plus récent |
Clé privée stockée dans les secrets GitHub |
Clé privée, compte, utilisateur |
N’importe quel |
|
Mot de passe enregistré dans les secrets GitHub |
Mot de passe, compte, utilisateur |
N’importe quel |
Fédération d’identité de charge de travail (WIF) avec OIDC¶
Note
L’authentification OIDC nécessite la version 3.11.0 ou ultérieure de Snowflake CLI.
Avec OIDC, GitHub émet un jeton OpenID Connect de courte durée que Snowflake valide directement. Aucune clé privée ou aucun mot de passe n’est stocké dans GitHub.
Créer l’utilisateur de service¶
Créez un utilisateur de service Snowflake qui fait confiance au fournisseur OIDC de GitHub :
Le SUBJECT doit correspondre à la revendication générée par GitHub pour le workflow. Utilisez l’un des formats suivants :
Format d’objet |
Correspond |
Exigence de workflow |
|---|---|---|
|
Transfert vers la branche spécifiée |
|
|
Tout événement de pull request |
|
|
La tâche cible un environnement GitHub nommé |
La tâche définit |
Lorsqu’une tâche définit environment:, GitHub utilise la forme de l’environnement quel que soit le déclencheur.
Pour personnaliser le sujet afin d’inclure une revendication plus large telle que repository_owner, consultez la ressource GitHub OpenID Connect.
Configurer l’action¶
Accordez l’autorisation id-token: write à la tâche et définissez use-oidc: true sur l’action :
Lorsque use-oidc: true est défini, l’action exporte les variables d’environnement suivantes pour les étapes à venir :
SNOWFLAKE_AUTHENTICATOR=WORKLOAD_IDENTITYSNOWFLAKE_WORKLOAD_IDENTITY_PROVIDER=OIDCSNOWFLAKE_AUDIENCE=snowflakecomputing.comSNOWFLAKE_TOKEN=<token>(ou la variable nommée paroidc-token-name)
Pour plus de contexte, consultez Fédération d’identité de charge de travail.
Authentification par paire de clés¶
Stockez votre clé privée Snowflake en tant que secret GitHub et transmettez-le dans l’environnement. Vous pouvez utiliser une connexion temporaire (config.toml non requis) ou une connexion nommée définie dans config.toml.
Connexion temporaire :
Connexion nommée : validez un config.toml avec un bloc de connexion vide et remplacez les champs par des variables d’environnement :
Pour plus d’informations sur les connexions, voir Gestion des connexions Snowflake.
Authentification par mot de passe¶
L’authentification par mot de passe est prise en charge pour les workflows hérités, mais n’est pas recommandée pour la production.CI/CD. Pour l’utiliser, omettez SNOWFLAKE_AUTHENTICATOR (par défaut, la CLI utilise l’authentification par mot de passe) et transmettez SNOWFLAKE_PASSWORD :
Note
Lorsque vous utilisez un mot de passe et une MFA, Snowflake recommande d’activer la mise en cache MFA.
Installation à partir d’une branche, d’une balise ou d’une validation¶
Pour tester une modification de la Snowflake CLI qui n’a pas encore été publiée ou un fork, utilisez custom-github-ref :
Prise en charge de plateforme¶
Cette action fonctionne sur les runners hébergés par GitHub sous Ubuntu, macOS et Windows, et a été testée avec Python 3.10 et 3.13. Notez le comportement suivant spécifique à la plateforme :
Linux et macOS : le
config.tomlcopié est défini sur les autorisations0600.Windows : les autorisations de fichiers sur
config.tomlne sont pas modifiées. Utilisez les secrets GitHub pour les identifiants de connexion ; évitez de valider des secrets dansconfig.tomlquel que soit le runner.