如何使用 sqitch 部署雪花数据库?

How to deploy snowflake DB with sqitch?

我是 sqitch 的新手。 我正在尝试创建一个 Jenkins 管道来使用 sqitch 部署雪花。 因此,我在 Azure 中的 Ubuntu 18.04 LTS 中安装了 sqitch 和 snowsql。 我只是:

  1. 克隆现有的 sqitch 存储库
.git
.gitignore
sqitch
    snowflake
        deploy
        revert
        sqitch
        sqitch.conf
        sqitch.plan


  1. 修改以下配置:$WORKSPACE/.snowsql/config
[connections]
accountname = acc_name
region = east-us-2.azure
username = user_name
private_key_path = "/path/rsa_key.p8"
authenticator = SNOWFLAKE_JWT 
  1. 创建 sqitch 配置:$WORKSPACE/sqitch/snowflake/sqitch.conf
[core]
    engine = snowflake
[engine "snowflake"]
    target = dev
    client = snowsql
[target "dev"]
    uri = "db:snowflake://client.east-us-2.azure/DEV_DB?Driver=SnowflakeDSIIDriver;warehouse=DEV_WH;authenticator=SNOWFLAKE_JWT;UID=DEV;PRIV_KEY_FILE=/path/rsa_key.p8;PRIV_KEY_FILE_PWD=password;"

然后我尝试运行“sqitch verify”并得到以下输出:

Trace begun at /usr/share/perl5/App/Sqitch/Engine.pm line 116
App::Sqitch::Engine::load('App::Sqitch::Engine', 'HASH(0x55ba14ad8ce0)') called at /usr/share/perl5/App/Sqitch/Target.pm line 55
App::Sqitch::Target::__ANON__('App::Sqitch::Target=HASH(0x55ba14ad8470)') called at (eval 278) line 22
App::Sqitch::Target::engine('App::Sqitch::Target=HASH(0x55ba14ad8470)') called at /usr/share/perl5/App/Sqitch/Command/status.pm line 113
App::Sqitch::Command::status::execute(undef) called at /usr/share/perl5/App/Sqitch.pm line 205
App::Sqitch::try {...}  at /usr/share/perl5/Try/Tiny.pm line 100
eval {...} at /usr/share/perl5/Try/Tiny.pm line 93
Try::Tiny::try('CODE(0x55ba14acfb70)', 'Try::Tiny::Catch=REF(0x55ba15e7f2b0)') called at /usr/share/perl5/App/Sqitch.pm line 225
App::Sqitch::go('App::Sqitch') called at /usr/bin/sqitch line 14

我做错了什么? 对我来说,系统似乎缺少一些包。 Sqitch 的安装如下:

sudo apt-get install sqitch libdbd-pg-perl libdbd-odbc-perl

看来我需要执行以下操作:

sudo apt install cpanminus && cpanm App::Sqitch