本页介绍了如何配置项目的元素以与 Git 集成以进行版本控制。
项目设置
您必须是 Looker 管理员,才能更改项目设置页面上的选项。不是管理员的 Looker 开发者可以查看项目设置页面,但无法更改其中的选项。
项目设置页面提供了项目的配置选项。要查看此页面,请打开您的项目,然后从左侧的图标菜单中选择设置图标。
您可以从此处访问三个部分:
配置
在项目设置页面的配置标签页中,您可以配置以下设置:
- 名称:您的项目的名称。您可以修改文本,然后点击 Save Project Configuration 按钮,以重命名项目。如需了解详情,请参阅访问和修改项目信息文档页面。
Git 生产分支名称:指定用作项目的开发分支合并目标的 Git 分支名称。Git 分支必须位于您的 Git 代码库中。如需了解详情,请参阅本页面的 Git 生产分支名称部分。
代码质量:确定是否需要要求开发者对项目成功运行 LookML 验证工具,然后再对项目进行任何更改。代码质量具有以下选项:
- 在提交之前需要修复错误和警告:只有在成功运行 LookML 验证器并解决所有错误和警告后,Looker 开发者才能提交更改。这是推荐设置。
- 仅在提交之前修复错误:只有在成功运行 LookML 验证器并解决所有错误之后,Looker 开发者才能提交更改。开发者可以在出现警告时提交更改。虽然不建议这样做,例如,如果在 Looker 更新后向工作 ML 引入新警告,此选项会很有用。
- 允许提交损坏的代码:无论 LookML 中是否存在错误或警告,Looker 开发者都可以提交更改,而无需运行 LookML 验证器。不建议使用此选项,因为这可能导致 LookML 不起作用或产生错误的结果。
需要先通过数据测试,然后才能将此项目部署到生产环境:要求开发者先运行数据测试,然后再部署更改。如果数据测试通过,IDE 将允许开发者将更改部署到生产环境中。如需了解如何在 LookML 项目中设置数据测试,请参阅
test
参数文档页面。如需了解如何对项目运行数据测试,请参阅使用版本控制和部署文档页面。Git 集成:指定与您的 Git 提供商的集成级别。如需了解详情,请参阅 Git 集成选项。
启用高级部署模式:启用后,可让用户将任何 SHA、标记或分支部署到生产环境。如需详细了解如何在启用高级部署模式的情况下进行版本控制,请参阅高级部署模式文档页面。
网络钩子部署密钥:设置身份验证以在 Looker 实例上将更改部署到生产环境中。如需了解详情,请参阅配置网络钩子部署密钥文档页面。
重置 Git 连接 (Reset Git Connection):点击此按钮可打开配置 Git 窗口,您可以在其中更新 Git 代码库的连接设置。
重置 Git 连接将保留 master 分支的 Git 历史记录。并且会在同步每个 Looker 开发者的开发者模式后保留其个人分支的历史记录。如需保留所有分支的历史记录,请参阅迁移到新的 Git 代码库最佳实践页面。
删除项目:点击此按钮可删除项目,从而从 Looker 实例的所有开发和生产环境中移除项目中的所有 LookML。
Git 生产分支名称
通过默认的 Looker Git 集成,所有 Looker 开发者都可以将其更改合并到名为 master
的分支中。您可以使用 Git 生产分支名称字段指定 Git 代码库中哪个 Looker 应作为 Looker 开发者分支合并到的目标分支。(如需查看默认的 Git 工作流以及适用于高级 Git 实现的其他选项,请参阅使用版本控制和部署文档页面。)
对于现有项目,请考虑在更改 Git 生产分支名称之前执行以下操作:
- 让 Looker 项目的所有开发者提交更改并将分支合并到现有生产分支,然后暂停工作,直到 Git 生产分支名称更新并保存在 Looker 项目配置中。
- 如果您的项目使用集成式拉取请求,请最终确定并合并任何打开的拉取请求。
- 在 Git 提供商端执行所有必要的准备工作,例如在代码库中创建新分支、重命名现有的默认 Git 分支,或者准备任何分支以进行准备分支,以便 Looker 将其用作合并的目标分支。您必须至少验证您要使用的分支是 Git 代码库中的现有分支。
如需更改项目用作开发分支的合并目标的 Git 分支,请执行以下操作:
- 从左侧图标菜单中选择 Settings 图标以显示 Project Settings 页面。默认情况下,系统会打开配置标签页。
- 在 Git 生产分支名称字段中,输入要用作 Looker 项目的生产分支的 Git 分支名称。
- 向下滚动,然后点击 Save Project Configuration(保存项目配置)按钮以保存您的更改。
导入凭据
在导入凭据部分,您可以管理私有远程代码库的身份验证凭据。如需了解详情,请参阅从其他项目导入文件 文档页面。
分支管理
在 Projects Settings 页面的 Branch Management 标签页中,您可以查看与项目关联的所有 Git 分支。如需了解详情,请参阅使用版本控制和部署文档页面。
Git 集成选项
设置 Git 连接后,Looker 会使用 Git 提供商来管理 LookML 源文件,如使用版本控制和部署文档页面所述。
如果您是 Looker 管理员,则可以使用项目设置页面上的配置标签页上的 Git 集成选项,为 Looker 与 Git 的集成配置其他选项:
- 关闭:Looker 不会显示指向 Git 提供商界面的任何外部链接。
- 显示链接:Looker 将提供指向 Git 提供商接口的外部链接,以便您的开发者可以在 Git 提供商的界面中查看该项目。Looker 还会为每个项目文件提供链接,以便您的开发者可以在 Git 提供商的界面中查看文件的历史记录和 Git 问责信息。如需了解链接,请参阅将外部链接集成到 Git 提供商部分。
- 推荐的拉取请求:除了提供指向 Git 提供商接口的外部链接外,Looker 还允许开发者提交拉取请求,以便其他开发者可以批准更改,然后再将请求添加到项目中。如需了解如何进行此项设置,请参阅为项目集成拉取请求部分。
- 需要拉取请求:这与上述方法相同,但您的 LookML 开发者需要打开拉取请求才能提交对项目的更改。如需了解如何进行此项设置,请参阅为项目集成拉取请求部分。
如需保存 Git 集成设置,请向下滚动,然后点击 Deployment 部分下的 Save Project Configuration。
将外部链接集成到您的 Git 提供商
如果您已启用任何其他 Git 集成选项(显示链接、建议拉取或需要拉取请求),Looker 会提供指向 Git 提供商界面的外部链接。这些外部链接会在新的浏览器标签页中打开您 Git 提供商的网站。
如需查看这些外部链接,您的开发者必须拥有您的 Git 提供商的帐号,并且必须有权访问项目的 Git 代码库。
在每个 LookML 文件的三点状文件选项菜单中,Looker 提供指向 Git 提供商网站的链接,用于查看该文件、查看该文件的 Git 问责信息以及文件的提交历史记录。
在 Git Actions 面板中,您还可以使用 View Project on <Git provider>
选项在 Git 提供商的网站上打开项目文件。
为项目集成拉取请求
借助默认的 Looker Git 集成,Looker 开发者将更改提交到开发分支,然后将开发分支合并到生产分支。然后,当您部署到 Looker 环境时,Looker 会对生产分支使用最新的提交内容。(如需查看默认的 Git 工作流以及适用于高级 Git 实现的其他选项,请参阅使用版本控制和部署文档页面。)
您可以使用推荐的拉取请求或需要拉取请求选项设置您的项目,而不是允许 Looker 开发者将其开发分支合并到 Looker 生产分支中:
- 推荐的拉取请求:开发者将变更提交到其开发分支后,Looker IDE 中的 Git 按钮会提示开发者打开拉取请求,以将开发分支合并到生产分支。然后,开发者可以通过 Git 提供商的网页界面打开拉取请求,以供其他 Looker 开发者审核和批准。或者,开发者也可以使用 Git Actions 面板中的 Deploy to Production(部署至生产环境)选项跳过创建拉取请求,并将其更改部署到生产环境中。(如果项目是通过高级部署模式启用的,则部署到生产环境选项不可用。)
- 需要拉取请求:开发者向开发分支提交更改请求后,Looker IDE 中的 Git 按钮会提示开发者打开拉取请求。开发者必须打开拉取请求,以将其开发分支合并到生产分支。然后,其他 Looker 开发者便可以通过 Git 提供商的网页界面查看和批准拉取请求。
Looker 支持为以下 Git 提供商集成拉取请求:
- GitHub
- GitLab
- Bitbucket 云
- Bitbucket Server(以前称为“Stash”)
以下是将拉取请求与 Looker 搭配使用的一些其他说明:
如需打开拉取请求,您的开发者必须拥有您的 Git 提供商的帐号,并且必须有权访问项目的 Git 代码库。
如果您的实例启用了 IP 许可名单功能,若要将拉取请求与任何 LookML 项目集成,您需要将 Git 提供商从其中发出出站请求的 IP 地址范围添加到许可名单中。例如,当前的 GitHub IP 地址列在 GitHub 更新日志中。IP 可能会发生变化,其他 Git 提供商的 IP 地址可能会有所不同。
如果您启用了高级部署模式,则无需在使用集成式拉取请求设置项目部分中配置 webhook,因为高级部署模式将合并和部署函数分开。
如果 Looker 开发者已发出您要还原的拉取请求,请参阅如何通过 GitHub 还原来自 Looker 的拉取请求社区帖子。
通过 Git 拉取请求,您可以使用 Looker 的预演实例,因此您可以拥有一个预演实例和一个生产实例,并在预演实例上启用拉取请求。所有开发和代码审核工作都可以在预演环境中完成,之后所审核的代码可以根据需要部署到生产实例中。如需进行设置,请参阅跨多个代码库使用一个代码库 - 开发、预演和生产 Git 工作流。
Looker 使用合并提交方法将来自 Looker 开发者分支的更改合并到生产分支。使用 Git 提供商的接口时,请确保您的开发者不使用压缩合并和 rebase 合并。如需了解详情,请参阅 Git 提供程序的接口中的合并选项部分。
使用集成的拉取请求设置项目
如需使用 Git 拉取请求设置 Looker 项目,请执行以下操作:
- 在您的项目中,从左侧的图标菜单中选择项目设置。
- 在配置标签页的 Git 集成部分中,选择建议拉取请求 (Pull Requests Recommended) 或需要拉取请求 (Pull Requests required)。
- (可选)如果您想在 Git 提供商的界面中设置自动部署网络钩子,请复制该网络钩子信息并将其粘贴到文本文件中。如果您的项目配置为使用高级部署模式,则可以跳过此步骤。您也可以稍后决定,返回项目设置来获取网络钩子信息。
- (可选)您可以设置网络钩子部署密钥,以通过 Git 提供商或高级部署模式网络钩子对自动部署 webhook 进行身份验证。如需创建网络钩子密钥,请点击设置网络钩子密钥。复制部署密钥并将其粘贴到文本文件中,以便在将 webhook 添加到 Git 提供商的界面时使用。您也可以稍后决定返回项目设置,以添加部署密钥。如需了解详情,请参阅配置网络钩子部署密钥文档页面。
- 点击保存项目配置。
现在,每当 Looker 开发者提交项目更改时,Looker IDE 都会显示 Open Pull Request 按钮。点击此按钮后,系统会在您的 Git 提供商的网站上直接打开新的浏览器请求页面。
将 Looker 项目设置为使用拉取请求后,请执行以下任一操作来设置如何将提交内容部署到生产环境中:
- 如需自动部署已合并到生产分支的最新提交内容,请使用 Git 提供商的界面添加 webhook(如本页下一部分所述)。
- 如需手动指定部署哪些分支或提交内容,请启用高级部署模式。如需了解如何启用和管理高级部署模式,请参阅高级部署模式文档页面。
向 Git 提供商添加网络钩子
对于启用了拉取请求的 Looker 项目,您可以在 Git 提供商的界面中设置部署网络钩子。每当您在 Git 提供商的接口上合并拉取请求时,此 webhook 都将触发 Looker 从生产分支部署最新提交内容。
在大多数情况下,如果您的项目配置为使用高级部署模式,则您不希望设置自动部署网络钩子。高级部署模式允许您选择要部署的提交和分支,因此在大多数情况下,如果设置了自动部署网络钩子,会导致高级部署模式的功能无效。
如需在 Git 提供商的界面中添加自动部署网络钩子,请先点击项目左侧图标菜单中的“设置”图标,前往 Looker 中的项目设置。接下来,从 Git 集成部分复制网络钩子。
网络钩子格式为 <instance_url>/webhooks/projects/<project_name>/deploy
。
将 <instance_url>
替换为 Looker 实例的网址。例如,如果您的 Looker 实例网址为 example.looker.com
,项目名称为 e_faa
,则网络钩子如下所示:
https://example.looker.com/webhooks/projects/e_faa/deploy
在 Looker 项目设置中,您还可以获取网络钩子部署密钥,以对项目的 Git 与 Git 提供商的集成进行身份验证。如需了解详情,请参阅配置网络钩子部署密钥文档页面。
获得网络钩子网址和部署 webhook 密钥后,就可以将它们输入到 Git 提供商的界面中。如果您的 Git 提供商是 GitHub,请按以下步骤操作:
- 在 GitHub 代码库中导航到项目的代码库设置。
- 在代码库的设置中,点击网络钩子。点击添加网络钩子以打开添加网络钩子窗口。
- 在载荷网址文本框中,粘贴从 Looker 的 Git 集成部分复制的网络钩子信息。
- (可选)您可以添加网络钩子部署密钥,以对项目的 Git 集成与您的 Git 提供商进行身份验证。从 LookML 项目的项目设置中复制部署密钥,并将该密钥粘贴到 Git 提供商界面上的密钥文本框中。如需了解详情,请参阅配置网络钩子部署密钥文档页面。
- 在您希望触发这个网络钩子吗?字段中选择仅推送事件选项。
- 点击 Add webhook。
使用部署网络钩子从远程 Git 代码库拉取
为 LookML 项目启用拉取请求(并且部署 Webhook 不是自动操作)后,您可能偶尔会发现您在 Looker 的生产模式中看到的 LookML 与 Git 代码库的主分支上的 LookML 不匹配。以下情况可能会出现:
- 为代码库启用拉取请求后
- 在 Looker 开发环境之外修改 LookML 时,例如:
- 在 Git 代码库中本身
- 在另一个 Looker 实例(例如预演实例)上
您可以使用部署网络钩子将 Looker 的生产分支同步到代码库的主分支:
打开新的浏览器标签页并输入以下网址,将
<instance_url>
替换为您的 Looker 实例网址,并将<project_name>
替换为您的 LookML 项目名称:<instance_url>/webhooks/projects/<project name>/deploy
运行部署网络钩子网址后,空白网页会显示类似于以下内容的成功消息:
{"operations":[{"error":false,"error_code":0,"command":"Checkout Branch #\u003cLooker::GitBranch:0x5798672b\u003e","node_id":728,"results":["Success"]},{"error":false,"error_code":0,"command":"jgit revert_repo","node_id":728,"results":["Success"]}],"new_head":"05f772af48709fc2799fefe408e3fdd895a63284","old_head":"77412cad9fd7ed3eed1627afa201fdf7dcb97dd1"}
现在,Looker 中的生产模式已更新,以反映您的远程 Git 主分支。您的个人开发者分支和共享分支不受影响。
从具有部署密钥的网络钩子的远程 Git 代码库拉取
如果您的 LookML 项目还需要网络钩子部署密钥才能将更改从主分支推送到生产分支,当您使用上一部分使用部署 webhook 从远程 Git 代码库拉取中所述的方法将生产分支与代码库的主分支同步时,您会收到以下错误之一:
{"error":"Uh oh! Something went wrong."}
或:
{"error":"Not found."}
您可以在终端中使用 webhook 密钥运行以下 c网址 命令,而不是使用部署 webhook。请务必替换以下字段:
- 将
<instance_URL>
替换为您的 Looker 实例网址。 - 将
<deploy_secret>
替换为您的项目的部署密钥。 - 将
<project_name>
替换为您的 LookML 项目的名称。
curl -i -X POST -H "X-Looker-Deploy-Secret:<deploy_secret>" https://<instance_url>/webhooks/projects/<project_name>/deploy
例如,要将 Brettcase 实例上的 ecommerce_project 的生产分支与代码库的主分支同步,请执行以下操作:
curl -i -X POST -H "X-Looker-Deploy-Secret:123123123secretgoeshere123123123" https://brettcase.looker.com/webhooks/projects/ecommerce_project/deploy
Git 提供商界面中的合并选项
如果您的 Looker 项目与拉取请求集成,您的开发者会使用 Git 提供商的界面提交拉取请求并将更改合并到生产分支。
Looker 支持使用合并提交方法将开发分支中的变更合并到生产分支。不过,Git 提供程序的界面可能会显示其他合并选项,例如合并与合并或对准并合并。
Looker 不支持合并合并或rebase 合并,因此您的开发者应避免使用这些选项。如果可能,最佳实践是为代码库停用这些选项。如需在 GitHub 代码库中停用这些选项,请按以下步骤操作:
前往 Settings 标签页,在 GitHub 上访问项目的代码库设置。
提示:对于配置了 Git 集成的项目,您可以在 Looker 中项目的 Git 菜单中使用查看 Git 上的项目选项。
在代码库的设置中,点击左侧导航菜单中的选项。
向下滚动到 Merge button(合并按钮)部分,并仅选中 Allow merge commits(允许合并提交)选项。取消选中 Allow squash merge 和 Allow rebase merge 选项。
取消选中这些选项后,当有人合并代码库中的分支时,这些选项将无法使用。