GitHub Action na Snowflake CLI¶
O GitHub Action na Snowflake CLI (snowflakedb/snowflake-cli-action) instala e configura a Snowflake CLI em um fluxo de trabalho do GitHub Actions. Use-o para automatizar as implantações do Snowflake (projetos DCM, aplicativos Snowpark, Snowflake Native Apps e scripts SQL) do seu repositório GitHub.
Como funciona¶
A ação executa estas etapas no executor:
Instala o Python 3.11 e o gerenciador de pacotes
uvusando astral-sh/setup-uv.Instala a Snowflake CLI em um ambiente isolado (
uv tool install snowflake-cli).Copia
config.tomldo repositório para~/.snowflake/config.toml(0600no Linux/macOS). Ignorada se o arquivo estiver ausente.Quando a autenticação OIDC está habilitada, obtém um token OIDC emitido pelo GitHub e define as variáveis do ambiente de identidade da carga de trabalho do Snowflake para as etapas subsequentes.
Após a conclusão da ação, o comando snow fica disponível em PATH para cada etapa subsequente no trabalho.
Exemplo de uso rápido¶
O fluxo de trabalho a seguir faz a autenticação com o Snowflake usando OIDC e executa um teste de conexão:
Para outros métodos de autenticação, consulte Métodos de autenticação.
Fixação de versão¶
A ação oferece suporte a três estilos de fixação:
Commit SHA (
@a1b2c3d...): fixa a uma confirmação específica.Patch version tag (
@v2.0.2): fixa a uma versão específica.Floating major tag (
@v2): segue a versão mais recente na respectiva versão principal.
Entradas¶
A ação aceita as seguintes entradas, especificadas em with: no fluxo de trabalho YAML:
Entrada |
Obrigatório |
Padrão |
Descrição |
|---|---|---|---|
|
Não |
(mais recente) |
Versão da Snowflake CLI a ser instalada, por exemplo |
|
Não |
(nenhum) |
Ramificação GitHub, tag ou confirmação da qual instalar a Snowflake CLI. Use esta entrada para testar recursos não lançados ou uma bifurcação. Mutualmente exclusiva com |
|
Não |
|
Caminho para o |
|
Não |
|
Quando |
|
Não |
|
Nome da variável de ambiente que o token OIDC usa para ser exportado. Defina-o como |
Nota
Especifique apenas uma das entradas cli-version ou custom-github-ref. Usar as duas ao mesmo tempo resulta em erro.
Métodos de autenticação¶
A ação oferece suporte a três métodos de autenticação com o Snowflake. A Snowflake recomenda o OIDC porque evita o armazenamento de segredos de longa duração no GitHub.
Método |
Segurança |
Segredos necessários |
Versão do Snowflake CLI |
|---|---|---|---|
Federação de identidade da carga de trabalho (WIF) com OIDC (recomendado) |
Tokens sem segredo e de curta duração |
Somente conta Snowflake |
3.11 ou posterior |
Chave privada armazenada em segredos do GitHub |
Chave privada, conta, usuário |
Qualquer |
|
Senha armazenada em segredos do GitHub |
Senha, conta, usuário |
Qualquer |
Federação de identidade da carga de trabalho (WIF) com OIDC¶
Nota
A autenticação OIDC requer a Snowflake CLI versão 3.11.0 ou mais recente.
Com o OIDC, o GitHub emite um token OpenID Connect de curta duração que o Snowflake valida diretamente. Nenhuma chave privada ou senha é armazenada no GitHub.
Criar o usuário de serviço¶
Crie um usuário de serviço do Snowflake que confie no provedor OIDC do GitHub:
SUBJECT deve corresponder à declaração que o GitHub emite para o fluxo de trabalho. Use um dos seguintes formatos:
Formato da entidade |
Corresponde a |
Requisito de fluxo de trabalho |
|---|---|---|
|
Envio para a ramificação especificada |
|
|
Qualquer evento de solicitação de pull |
|
|
O destino do trabalho é um ambiente GitHub nomeado |
O trabalho define |
Quando um trabalho define environment:, o GitHub usa o formato do ambiente, seja qual for o acionador.
Para personalizar a entidade para incluir uma declaração mais ampla, como repository_owner, consulte a Referência do OpenID Connect do GitHub.
Configurar a ação¶
Conceda a permissão id-token: write ao trabalho e defina use-oidc: true na ação:
Quando use-oidc: true é definido, a ação exporta as seguintes variáveis de ambiente para as etapas subsequentes:
SNOWFLAKE_AUTHENTICATOR=WORKLOAD_IDENTITYSNOWFLAKE_WORKLOAD_IDENTITY_PROVIDER=OIDCSNOWFLAKE_AUDIENCE=snowflakecomputing.comSNOWFLAKE_TOKEN=<token>(ou a variável nomeada poroidc-token-name)
Para ver um contexto mais amplo, consulte Federação de identidades de carga de trabalho.
Autenticação por par de chaves¶
Armazene sua chave privada do Snowflake como um segredo do GitHub e passe-o através do ambiente. Você pode usar uma conexão temporária (sem necessidade do config.toml) ou uma conexão nomeada definida no config.toml.
Conexão temporária:
Conexão nomeada: confirme um config.toml com um bloco de conexão vazio e substitua os campos por meio de variáveis de ambiente:
Para obter mais informações sobre conexões, consulte Gerenciando conexões Snowflake.
Autenticação de senha¶
A autenticação de senha é compatível com fluxos de trabalho legados, mas não é recomendada para CI/CD de produção. Para usá-la, omita SNOWFLAKE_AUTHENTICATOR (a CLI usa como padrão a autenticação de senha) e passe SNOWFLAKE_PASSWORD:
Nota
Ao usar uma senha e MFA, a Snowflake recomenda habilitar o armazenamento em cache de MFA.
Instalando de uma ramificação, tag ou conformação¶
Para testar uma mudança ou uma bifurcação da Snowflake CLI não lançada, use custom-github-ref:
Suporte à plataforma¶
A ação é executada em executores hospedados por GitHub no Ubuntu, macOS e Windows e é testada em Python 3.10 e 3.13. Observe o seguinte comportamento específico da plataforma:
Linux e macOS: o
config.tomlcopiado é definido com permissões0600.Windows: permissões de arquivo em
config.tomlnão são modificadas. Use segredos do GitHub para credenciais. Evite confirmar segredos paraconfig.toml, seja qual for o executor.