Integração de CI/CD com Snowflake CLI¶
Snowflake CLI integra sistemas e frameworks populares de CI/CD (integração contínua e entrega contínua), como GitHub Actions, para automatizar com eficiência os fluxos de trabalho do Snowflake para SQL, Snowpark, Native Apps ou Notebooks.
Nota
As versões futuras incluirão suporte para DevOps Jenkins e Azure.
A ilustração a seguir mostra um fluxo de trabalho típico de CI/CD no Snowflake CLI.

Etapas do fluxo de trabalho de CI/CD¶
Armazenar: configure um repositório Git remoto para gerenciar seus arquivos do Snowflake com segurança.
Codificar: desenvolva seu código Snowflake usando um IDE ou Snowsight, adaptado às suas preferências.
Instalar: Instale Snowflake CLI e provisione seu provedor preferido de CI/CD, como GitHub Actions.
Implantar: automatize a implementação combinando o Snowflake CLI com sua ferramenta de CI/CD selecionada.
Monitorar: acompanhe o desempenho do código e do fluxo de trabalho no Snowflake usando o Snowflake Trail para obter insights em tempo real.
Iterar: aplique atualizações pequenas e frequentes ao seu projeto para melhoria contínua; mudanças menores simplificam o gerenciamento e a reversão, se necessário.
CI/CD com GitHub Actions¶
Uma ação do Snowflake CLI é uma ação GitHub criada para integrar o Snowflake CLI aos pipelines de CI/CD. Isso permite que você automatize a execução dos comandos do Snowflake CLI em seus fluxos de trabalho do GitHub.
Usar ações do Snowflake CLI¶
Snowflake CLI Github Actions simplifica o processo de instalação e uso do Snowflake CLI em seus fluxos de trabalho de CI/CD. O CLI é instalado de forma isolada, garantindo que não entrará em conflito com as dependências do seu projeto. Ele define automaticamente o arquivo de configuração de entrada no diretório ~/.snowflake/
.
Parâmetros de entrada¶
Uma ação do Snowflake CLI usa as seguintes entradas do arquivo YAML do seu fluxo de trabalho do Github, como <repo-name>/.github/workflows/my-workflow.yaml
:
cli-version
: a versão especificada do CLI do Snowflake, como3.6.0
. Se isso não for fornecido, será usada a versão mais recente do Snowflake CLI.default-config-file-path
: caminho para o arquivo de configuração (config.toml
) em seu repositório. O caminho deve ser relativo à raiz do repositório. O arquivo de configuração não é necessário quando uma conexão temporária (opção-x
) é usada.
Configurar com segurança a ação em seu fluxo de trabalho de CI/CD¶
Para usar uma ação do Github, você deve fazer o seguinte:
Gere uma chave privada. Para obter mais informações, consulte Autenticação de pares de chaves e rotação de pares de chaves.
Armazene as credenciais, como conta, chave privada e frase secreta, nos segredos do GitHub. Para obter mais informações, consulte a documentação de ações GitHub.
Definição de conexões¶
Você pode definir uma ação do GitHub para se conectar ao Snowflake com uma conexão temporária ou com uma conexão definida no seu arquivo de configuração. Para obter mais informações sobre o gerenciamento de conexões, consulte Gerenciando conexões Snowflake.
Use uma conexão temporária¶
Para obter mais informações sobre conexões temporárias, consulte Use uma conexão temporária.
Para configurar suas credenciais do Snowflake para uma conexão temporária, siga estas etapas:
Mapeie os segredos para as variáveis de ambiente no seu fluxo de trabalho do GitHub, no formato
SNOWFLAKE_<key>=<value>
, conforme mostrado:env: SNOWFLAKE_PRIVATE_KEY_RAW: ${{ secrets.SNOWFLAKE_PRIVATE_KEY_RAW }} SNOWFLAKE_ACCOUNT: ${{ secrets.SNOWFLAKE_ACCOUNT }}
- Configure a ação do CLI do Snowflake.
Se você usar a versão mais recente do Snowflake CLI, não precisará incluir o parâmetro
cli-version
. O exemplo a seguir instrui a ação a usar especificamente a versão 3.6.0 do Snowflake CLI:- 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 }}Para usar uma senha em vez de uma chave privada, desfaça a definição da variável de ambiente
SNOWFLAKE_AUTHENTICATOR
e adicione a variávelSNOWFLAKE_PASSWORD
, como segue:- name: Execute Snowflake CLI command env: SNOWFLAKE_USER: ${{ secrets.SNOWFLAKE_USER }} SNOWFLAKE_ACCOUNT: ${{ secrets.SNOWFLAKE_ACCOUNT }} SNOWFLAKE_PASSWORD: ${{ secrets.SNOWFLAKE_PASSWORD }}Nota
Para melhorar sua experiência ao usar uma senha e MFA, o Snowflake recomenda que você configure o cache de MFA.
Para obter mais informações sobre a configuração de credenciais do Snowflake em variáveis de ambiente, consulte Use variáveis de ambiente para credenciais Snowflake e para obter informações sobre a definição de variáveis de ambiente no seu fluxo de trabalho de CI/CD do GitHub, consulte Definição de variáveis de ambiente para um único fluxo de trabalho.
Adicione os comandos
snow
que você deseja executar com a conexão temporária, conforme mostrado:run: | snow --version snow connection test --temporary-connection
O exemplo a seguir mostra um arquivo de amostra concluído <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
Depois de verificar se sua ação pode se conectar ao Snowflake com sucesso, você pode adicionar mais comandos do Snowflake CLI como snow notebook create
ou snow git execute
. Para obter informações sobre os comandos aceitos, consulte Referência de comando de Snowflake CLI.
Usar um arquivo de configuração¶
Para obter mais informações sobre a definição de conexões, consulte Definição de conexões.
Para configurar suas credenciais do Snowflake para uma conexão específica, siga estas etapas:
Crie um arquivo config.toml na raiz do seu repositório Git com uma conexão de configuração vazia, conforme mostrado:
default_connection_name = "myconnection" [connections.myconnection]
Esse arquivo serve como um modelo e não deve conter credenciais reais.
Mapeie os segredos para as variáveis de ambiente no seu fluxo de trabalho do GitHub, no formato
SNOWFLAKE_<key>=<value>
, conforme mostrado: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 }}Para usar uma senha em vez de uma chave privada, desfaça a definição da variável de ambiente
SNOWFLAKE_AUTHENTICATOR
e adicione a variávelSNOWFLAKE_PASSWORD
, como segue:- 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 }}Nota
Para melhorar sua experiência ao usar uma senha e MFA, o Snowflake recomenda que você configure o cache de MFA.
Adicione os comandos snow que você deseja executar com uma conexão nomeada, conforme mostrado:
run: | snow --version snow connection test
O exemplo a seguir mostra um arquivo de amostra config.toml
em seu repositório Git e um arquivo de amostra <repo-name>/.github/workflows/my-workflow.yaml
concluído:
Arquivo
config.toml
de exemplodefault_connection_name = "myconnection" [connections.myconnection]
Amostra de arquivo de fluxo de trabalho Git:
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
Depois de verificar se sua ação pode se conectar ao Snowflake com sucesso, você pode adicionar mais comandos do Snowflake CLI como snow notebook create
ou snow git execute
. Para obter informações sobre os comandos aceitos, consulte Referência de comando de Snowflake CLI.