这是一系列有关使用雪花的数据库更改管理的文章
- Database Change Management with Snowflake
- 使用雪花和github(这个)的数据库更改管理
概述
在上一篇文章Database Change Management with Snowflake中,您尝试了 ui工作流程 bytebase中的
本教程将通过引入 gitops workflow 将您的雪花架构更改为新的水平,在其中您将架构更改为GitHub存储库,这反过来又会触发模式部署管道的部署管道。 bytebase。
您可以使用字节键免费版本来完成教程。
先决条件
在启动本教程之前,请确保:
- 您遵循了我们以前基于UI的更改教程Database Change Management with Snowflake。
- 您有一个雪花帐户,带有
ACCOUNTADMIN
的角色。 - 您有一个github帐户。
- 您有一个公共GitHub存储库。
- 您在本地安装了Docker。
- 您有一个ngrok帐户。 Ngrok是一条反向代理隧道,在我们的情况下,我们需要一个公共网络地址才能从Github.com接收Webhooks。我们在这里使用Ngrok进行演示。供生产使用,我们建议使用Caddy。
步骤1-由Ngrok生成的URL在Docker中运行biettebase
为了使github可见局部运行的字节基础,我们将ngrok产生的URL传递给--external-url。如果您在没有此参数的情况下在Docker中运行字节键(如上一个教程中所述),则可以首先停止运行的字节键。上一个教程中创建的数据默认情况下存储在~/.bytebase/data
下,如果字节键重新启动,将恢复。
-
登录到ngrok Dashboard并按照其Getting Started步骤安装和配置。
-
确保您的docker守护程序正在运行,然后通过在终端中键入以下命令来启动字节基础码头容器。请注意由Ngrok生成的最后一个参数
--external-url
https://d19c-103-102-7-52.ngrok.io。
docker run --init \
--name bytebase \
--restart always \
--publish 5678:8080 \
--health-cmd "curl --fail http://localhost:5678/healthz || exit 1" \
--health-interval 5m \
--health-timeout 60s \
--volume ~/.bytebase/data:/var/opt/bytebase \
bytebase/bytebase:1.9.1 \
--data /var/opt/bytebase \
--port 8080 \
--external-url https://d19c-103-102-7-52.ngrok.io
- BYTEBASE在Docker成功运行,您可以通过
https://d19c-103-102-7-52.ngrok.io
访问它
步骤2-在Bytebase中找到您的雪花帐户
-
访问您的浏览器中的https://d19c-103-102-7-52.ngrok.io,并使用从上一篇文章创建的
Workspace Owner
帐户登录。
步骤3-与github.com连接bytebase
-
选择github.com,然后单击下一个。
步骤4-启用Gitops Workflow与雪花
- 转到项目
TestSnowflake
,单击版本控制,然后选择Gitops Workflow。单击配置版本控制。 - 选择github.com-您刚刚添加的提供商。它将显示您可以操纵的所有存储库。选择
snowflake-test-bb-local
。 - 保持默认设置,然后单击完成。
步骤5-通过将SQL模式更改为github来更改雪花架构
- 在您的github存储库
snowflake-test-bb-local
中,创建一个文件夹bytebase
,然后创建一个子文件夹test
,然后按照模式创建一个SQL文件{{ENV_NAME}}/{{DB_NAME}}##{{VERSION}}##{{TYPE}}##{{DESCRIPTION}}.sql
。它是以前配置项目版本控件时的文件路径模板设置的默认配置。
DB_DEMO_BB##202212152000#ddl#create_hello_world.sql
-
Test
对应于{{env_name}} -
DB_DEMO_BB
对应于{{db_name}} -
202212152000
对应{{version}} -
ddl
对应{{type}} -
create_hello_world corresponds
to {{description}}
在其中粘贴sql脚本。
`
CREATE SCHEMA DEMO;
CREATE TABLE HELLO_WORLD
(
FIRST_NAME VARCHAR
,LAST_NAME VARCHAR
);
- 提交并推开此文件。
- 转到字节键,然后进入项目
TestSnowflake
。您会发现有一个新的推动事件和新的第102期完成。 - 单击“问题/102”,然后进入问题页,您将参见:
- 问题是通过github.com创建的。
- 该问题未经手动批准完成,因为它将模式更改应用于测试环境的数据库。并且我们的测试环境不需要手动批准。
- SQL正是我们致力于GitHub存储库的SQL。
- 受让人是字节基础,因为它是自动的。如果您用于提交更改的github用户具有与字节键成员列表中相同的电子邮件地址,我们将使用该成员作为受让人。
- 转到GitHub存储库,除了承诺的SQL外,您还会看到一个.db_demo_bb ##最新的.sql文件。因为您以前已经配置了
Schema path template
,所以BYTEBASE在完成模式更改后会将最新的模式写回指定路径。因此,您可以随时访问更新的完整模式。 - 让我们创建另一个SQL文件
DB_DEMO_BB##202212152040#ddl#add_age.sql
,以查看应用新模式更改后如何更新该最新架构文件。在其中粘贴SQL脚本。
`
USE SCHEMA DEMO;
ALTER TABLE HELLO_WORLD ADD COLUMN AGE NUMBER;
- 推出新的SQL文件后,请返回字节键,您应该找到生成的问题。
- 单击查看迁移并比较差异。
- 转到GitHub存储库,您会发现最新的SQL已更新以反映最新的模式。
摘要和下一个
现在您已经尝试了 gitops workflow ,它将您的雪花架构存储在github中,并在将更改提交到存储库后触发更改,以使您的雪花更改工作流程将工作流程提升到新的数据库。 DevOps -Database as Code。
您可以查看我们的GitOps docs以了解更多配置详细信息。
在现实世界的情况下,您可能拥有与开发和生产环境相对应的单独功能和主分支,您可以检查GitOps with Feature Branch Workflow以学习设置。尝试一下,期待您的反馈!