笔记本电脑软件工程最佳实践

本文提供了一个动手演练,演示了如何将软件工程最佳实践应用到Databricks笔记本,包括版本控制、代码共享、测试,以及可选的持续集成和持续交付或部署(CI/CD)。

在本演练中,您将:

  • 将笔记本添加到Databricks Repos进行版本控制。

  • 从一个笔记本中提取部分代码到一个可共享的模块中。

  • 测试共享代码。

  • 运行Databricks作业中的笔记本。

  • 可选地将CI/CD应用于共享代码。

需求

要完成此演练,必须提供以下资源:

  • 控件的远程存储库Git提供者Databricks支持的。本文的演练使用GitHub。本演练假设您有一个名为best-notebooks可用。(您可以给您的存储库一个不同的名称。如果有,那就换掉best-notebooks在本演练中使用您的回购名称。)创建一个GitHub回购如果你还没有。

    请注意

    如果您创建了一个新的repo,请确保使用至少一个文件初始化存储库,例如a自述文件。

  • 一个砖工作空间创建一个工作区如果你还没有。

  • 一个砖通用的集群在工作空间中。要在设计阶段运行笔记本电脑,您将笔记本连接到正在运行的通用集群.稍后,本演练将使用Databricks工作在此集群上自动运行笔记本电脑。(也可以在上面运行作业工作的集群它们只存在于工作的一生中。)创建通用集群如果你还没有。

    请注意

    要使用Databricks Repos中的文件,参与集群必须安装Databricks Runtime 8.4或更高版本。Databricks建议这些集群安装最新的长期支持(LTS)版本,即Databricks Runtime 10.4 LTS。

预排

在本演练中,您将:

  1. 将现有的GitHub回购连接到Databricks回购。

  2. 将现有的笔记本添加到回购中,然后第一次运行该笔记本。

  3. 将一些代码从笔记本移动到共享模块中。第二次运行notebook以确保notebook按预期调用共享代码。

  4. 使用第二个笔记本分别测试共享代码,而无需再次运行第一个笔记本。

  5. 创建Databricks作业以自动运行两个笔记本,可以按需运行,也可以定期运行。

  6. 设置repo以在repo中创建拉取请求时运行第二个notebook来测试共享代码。

  7. 发出更改共享代码的拉取请求,这将触发测试自动运行。

下面的步骤将引导您完成这些活动。

步骤1:设置Databricks Repos

在这一步中,您将现有的GitHub回购连接到现有Databricks工作区中的Databricks回购。

为了使您的工作空间连接到您的GitHub回购,您必须首先向您的工作空间提供您的GitHub凭据,如果您还没有这样做的话。

步骤1.1:提供你的GitHub凭证

  1. 在你的工作空间里侧边栏数据科学与工程Databricks机器学习环境中,点击>用户设置

  2. 用户设置页面,点击Git集成

  3. Git集成选项卡,Git提供者中,选择GitHub

  4. Git提供商用户名或电子邮件,输入你的GitHub用户名。

  5. 令牌,进入你的GitHub个人访问令牌.标记必须具有回购许可。

  6. 点击保存

步骤1.2:连接到你的GitHub回购

  1. 的侧栏上数据科学与工程Databricks机器学习环境中,点击回购

  2. 回购窗格中,单击添加回购

  3. 添加回购对话框:

    1. 点击克隆远程Git回购

    2. Git存储库URL,进入GitHub使用HTTPS克隆URL为您的GitHub回购。本文假设您的URL以best-notebooks.git例如,https://github.com/ < your-GitHub-username > / best-notebooks.git

    3. 的下拉列表中Git存储库URL中,选择GitHub

    4. 离开回购的名字例如,设置为您的回购的名称best-notebooks

    5. 点击创建

步骤2:导入并运行笔记本

在这一步中,您将一个现有的外部笔记本导入到您的repo中。您可以为本演练创建自己的笔记本,但为了加快速度,我们在这里为您提供了笔记本。

步骤2.1:在回购中创建一个工作分支

在此子步骤中,您将创建一个名为eda在你的回购中。这个分支使您能够独立于您的repo处理文件和代码主要分支,这是软件工程的最佳实践。(你可以给你的分支一个不同的名字。)

请注意

在一些回购中主要分支可以命名为代替。如果是,替换主要在本演练中。

提示

如果您不熟悉在Git分支中工作,请参见Git分支-果壳中的分支在Git网站上。

  1. 如果回购窗格未显示,则在侧栏中数据科学与工程Databricks机器学习环境中,点击回购

  2. 属性中未显示在上一步中连接的回购回购窗格,然后选择您的工作区用户名,并选择您在上一步中连接到的repo的名称。

  3. 单击回购名称旁边的下拉箭头,然后单击Git

  4. best-notebooks对话框,单击+创建分支)按钮。

    请注意

    如果你的回购标的不是best-notebooks,这个对话框的标题在这里和整个演练过程中都是不同的。

  5. 输入eda然后按“Enter”。

  6. 关闭对话框。

步骤2.2:将笔记本导入到repo中

在此子步骤中,您将从另一个回购中导入现有笔记本到您的回购中。这个笔记本有以下功能:

  1. 文件中复制CSV文件owid / covid-19-dataGitHub存储库到您工作空间中的集群。此CSV文件包含来自世界各地的关于COVID-19住院和重症监护指标的公开数据。

  2. 将CSV文件的内容读入熊猫DataFrame

  3. 过滤数据以只包含来自美国的指标。

  4. 显示数据的图形。

  5. 将熊猫数据帧保存为Spark上的Pandas APIDataFrame

  6. 在Spark DataFrame的Pandas API上执行数据清理。

  7. 在Spark DataFrame上写入Pandas API差值表在你的工作空间。

  8. 显示Delta表的内容。

虽然您可以在这里的repo中创建自己的笔记本,但在这里导入现有笔记本有助于加快本演练的速度。若要在此分支中创建笔记本,或将现有笔记本移动到此分支中而不是导入笔记本,请参见文件基本用法

  1. 回购窗格的回购,单击回购名称旁边的下拉箭头,然后单击创建文件夹>

  2. 新文件夹名称对话框中,输入笔记本电脑,然后按创建文件夹

  3. 回购窗格中,单击您的回购名称,单击旁边的下拉箭头笔记本电脑文件夹,然后单击进口

  4. 进口笔记本电脑对话框:

    1. 进口的中,选择URL

    2. 的原始内容的URLcovid_eda_raw笔记本电脑砖/ notebook-best-practices在GitHub repo。获取此URL:

      1. https://github.com/databricks/notebook-best-practices

      2. 单击笔记本电脑文件夹中。

      3. 单击covid_eda_raw.py文件。

      4. 点击

      5. 复制完整的URL从您的网络浏览器的地址栏到进口笔记本电脑对话框。

        请注意

        进口笔记本电脑对话框只适用于公共存储库的Git url。

    3. 点击进口

步骤2.3:运行笔记本

  1. 如果笔记本尚未显示,则在回购窗格,双击covid_eda_raw笔记本电脑在笔记本电脑文件夹打开它。

  2. 在笔记本上,在下拉列表旁边文件,选择要附加此笔记本的集群。

  3. 点击运行所有

  4. 如果出现提示,请单击连接&运行启动,连接&运行

  5. 等一下,让笔记本运行起来。

在笔记本完成运行后,您应该在笔记本中看到一个数据图,以及Delta表中的600多行原始数据。如果在开始运行此笔记本时集群尚未运行,则在显示结果之前集群可能需要几分钟才能启动。

步骤2.4:签入并合并笔记本

在此子步骤中,您将迄今为止的工作保存到GitHub回购中。然后将工作分支中的笔记本合并到回购分支中主要分支。

  1. 回购窗格,单击eda分支。

  2. best-notebooks对话,在变化Tab,确保笔记本/ covid_eda_raw.py选中“文件”。

  3. 总结(必需),输入添加笔记本

  4. 描述(可选),输入第一个版本笔记本。

  5. 点击提交&推送

  6. 点击历史,或按在git提供程序上创建一个pull请求链接在弹出窗口。

  7. 在GitHub中,单击把请求选项卡,创建拉取请求,然后将拉取请求合并到主要分支。

  8. 回到Databricks工作空间,关闭best-notebooks对话框,如果它仍然显示。

步骤3:将代码移动到共享模块中

在这一步中,将笔记本中的一些代码移到笔记本之外的一组共享函数中。这使您能够将这些函数与其他类似的笔记本电脑一起使用,这可以加快未来的编码速度,并帮助确保更可预测和一致的笔记本电脑结果。共享这些代码还使您能够更容易地测试这些函数,作为软件工程的最佳实践,这可以提高您的代码的整体质量。

步骤3.1:在回购中创建另一个工作分支

  1. 在你的工作空间里回购窗格,单击eda分支。

  2. best-notebooks对话框中,单击旁边的下拉箭头eda分支,然后选择主要

  3. 单击按钮。如果提示继续拉,单击确认

  4. 单击+创建分支)按钮。

  5. 输入first_modules,按“Enter”。(你可以给你的分支一个不同的名字。)

  6. 关闭对话框。

步骤3.2:将笔记本导入到repo中

为了加快本演练的速度,在本子步骤中,将另一个现有笔记本导入到您的repo中。这个笔记本电脑做的事情与前一个笔记本电脑相同,除了这个笔记本电脑将调用存储在笔记本电脑外部的共享代码函数。同样,您可以在这里的repo中创建自己的笔记本,并自己进行实际的代码共享。

  1. 回购窗格中,单击笔记本电脑文件夹,然后单击进口

  2. 进口笔记本电脑对话框:

    1. 进口的中,选择URL

    2. 的原始内容的URLcovid_eda_modular笔记本电脑砖/ notebook-best-practices在GitHub repo。获取此URL:

      1. https://github.com/databricks/notebook-best-practices

      2. 单击笔记本电脑文件夹中。

      3. 单击covid_eda_modular.py文件。

      4. 点击

      5. 复制完整的URL从您的网络浏览器的地址栏到进口笔记本电脑对话框。

        请注意

        进口笔记本电脑对话框只适用于公共存储库的Git url。

    3. 点击进口

    请注意

    你可以删除现有的covid_eda_raw笔记本在这里,因为新covid_eda_modular笔记本是第一个笔记本的共享版本。但是,您可能仍然希望保留以前的笔记本,以便进行比较,即使您不再使用它。

步骤3.3:添加笔记本支持的共享代码函数

  1. 回购窗格的回购,单击回购名称旁边的下拉箭头,然后单击创建文件夹>

    请注意

    不单击旁边的下拉箭头笔记本电脑文件夹中。相反,单击回购名称旁边的下拉箭头。你想让它进入到回购的根目录,而不是笔记本电脑文件夹中。

  2. 新文件夹名称对话框中,输入covid_analysis,然后按创建文件夹

  3. 回购窗格中,单击covid_analysis文件夹,然后单击创建>文件

  4. 新文件名对话框中,输入transforms.py,然后按创建文件

  5. 回购窗格,单击covid_analysis文件夹,然后单击transforms.py

  6. 在编辑器窗口中,输入以下代码:

    进口熊猫作为pd#按国家代码过滤。deffilter_countrypdf国家“美国”):pdfpdfpdfiso_code= =国家返回pdf#以指示器为轴心,并填充缺失的值。defpivot_and_cleanpdffillna):pdf“价值”pdto_numericpdf“价值”])pdfpdffillnafillnapivot_table“价值”“指标”指数“日期”返回pdf#创建与Delta表兼容的列名。defclean_spark_colspdf):pdfpdfstr取代”““_”返回pdf#将索引转换为列(也适用于Spark上的pandas API)。defindex_to_coldfcolname):dfcolnamedf指数返回df

提示

有关其他代码共享技术,请参见在Databricks笔记本之间共享代码

步骤3.4:添加共享代码的依赖项

上面的代码有几个Python包依赖关系,以使代码能够正常运行。在此子步骤中,声明这些包依赖项。声明依赖项通过使用精确定义的库版本提高了可再现性。

  1. 回购窗格的回购,单击回购名称旁边的下拉箭头,然后单击创建>文件

    请注意

    不单击旁边的下拉箭头笔记本电脑covid_analysis文件夹。您希望将包依赖项列表放入repo的根文件夹,而不是笔记本电脑covid_analysis文件夹。

  2. 新文件名对话框中,输入,然后按创建文件

  3. 回购窗格为您的回购,单击,并输入以下代码:

    请注意

    如果文件不可见,您可能需要刷新web浏览器。

    -i https://pypi.org/simple attrs==21.4.0 cycler==0.11.0 fonttools==4.33.3 iniconfig==1.1.1 kiwisolver==1.4.2 matplotlib==3.5.1 numpy==1.22.3 packaging==21.3 pandas==1.4.2 pillow==9.1.0 plugin ==1.0.0 py==1.11.0 py4j==0.10.9.3 pyarrow==7.0.0 pyparsing==3.0.8 pyspark==3.2.1 pytest==7.1.2 python-dateutil==2.8.2 pytz==2022.1 six==1.16.0 tomli==2.0.1 wget==3.2

    请注意

    上面的文件列出了具体的包版本。为了获得更好的兼容性,可以将这些版本与安装在通用集群上的版本进行交叉引用。的Databricks运行时版本,请参阅“系统环境”部分Databricks运行时发布

你的回购结构现在应该是这样的:

|——covid_analysis | '——transform .py |——notebooks | |——covid_eda_modular | '——covid_eda_raw(可选)”,让

步骤3.5:运行重构的笔记本

在此子步骤中,运行covid_eda_modularNotebook,它调用共享代码covid_analysis / transforms.py

  1. 回购窗格,双击covid_eda_modular笔记本电脑内笔记本电脑文件夹中。

  2. 的下拉列表中文件,选择要附加此笔记本的集群。

  3. 点击运行所有

  4. 如果出现提示,请单击连接&运行启动,连接&运行

  5. 等一下,让笔记本运行起来。

在笔记本完成运行后,在笔记本中您应该看到与covid_eda_raw笔记本:一个图表的数据以及超过600行的原始数据在Delta表。这款笔记本的主要区别是使用了不同的过滤器iso_codeDZA而不是美国).如果在开始运行此笔记本时集群尚未运行,则在显示结果之前集群可能需要几分钟才能启动。

步骤4:测试共享代码

在这一步中,您将测试上一步中的共享代码。但是,您希望在不运行covid_eda_modular笔记本本身。这是因为如果共享代码无法运行,那么笔记本本身也可能无法运行。您希望在主笔记本最终出现故障之前,首先捕获共享代码中的故障。这种测试技术是软件工程的最佳实践。

提示

有关笔记本电脑测试以及R和Scala笔记本电脑测试的其他方法,请参见笔记本的单元测试

步骤4.1:在回购中创建另一个工作分支

  1. 在你的工作空间里回购窗格,单击first_modules分支。

  2. best-notebooks对话框中,单击旁边的下拉箭头first_modules分支,然后选择主要

  3. 单击按钮。如果提示继续拉,单击确认

  4. 单击+创建分支)按钮。

  5. 输入first_tests,按“Enter”。(你可以给你的分支一个不同的名字。)

  6. 关闭对话框。

步骤4.2:添加测试

在此子步骤中,将使用pytest框架来测试您的共享代码。在这些测试中,你断言是否达到特定的测试结果。如果任何测试产生了意外的结果,则该特定测试的断言失败,因此测试本身也失败。

  1. 回购窗格的回购,单击回购名称旁边的下拉箭头,然后单击创建文件夹>

  2. 新文件夹名称对话框中,输入测试,然后按创建文件夹

  3. 回购窗格中,单击测试文件夹,然后单击创建>文件

  4. 新文件名对话框中,输入文档,然后按创建文件

  5. 回购窗格,单击测试文件夹,然后单击文档

  6. 在编辑器窗口中,输入以下测试数据:

    实体,iso_code,日期,指标,值美国,USA,2022-04-17,每日ICU占用率,美国,美国,2022-04-17,每日ICU入住率每百万,4.1美国,美国,2022-04-17,每天医院入住率,10000年美国,美国,2022-04-17,每天医院入住率每百万,30.3美国,美国,2022-04-17,每周新医院录取,11000年美国,美国,2022-04-17,每周新入院每百万,32.8阿尔及利亚、DZA, 2022-04-18,每日ICU入住率,1010年阿尔及利亚、DZA, 2022-04-18,每日ICU入住率每百万,4.5阿尔及利亚、DZA, 2022-04-18,每天医院入住率,11000阿尔及利亚,DZA,2022-04-18,每周新入院人数,10000阿尔及利亚,DZA,2022-04-18,每周每百万新入院人数,32.1

    请注意

    使用测试数据是软件工程的最佳实践。这使您能够依靠与实际数据具有相同格式的一小部分数据更快地运行测试。当然,在运行测试之前,您总是希望确保该测试数据准确地代表您的真实数据。

  7. 回购窗格中,单击测试文件夹,然后单击创建>文件

  8. 新文件名对话框中,输入transforms_test.py,然后按创建文件

  9. 回购窗格,单击测试文件夹,然后单击transforms_test.py

  10. 在编辑器窗口中,输入以下测试代码。这些测试使用标准pytest固定装置以及一个模拟的内存中的熊猫数据框架:

    测试每个转换函数。进口pytesttextwrap进口填满进口操作系统进口熊猫作为pd进口numpy作为npcovid_analysis.transforms进口pyspark.sql进口SparkSession@pytest夹具defraw_input_df()->pdDataFrame”“”创建用于测试的输入数据集的基本版本,包括nan。”“”返回pdread_csv“测试/文档”@pytest夹具defcolnames_df()->pdDataFramedfpdDataFrame数据[[0123.45]],“ICU日均入住情况”“每日ICU入住率/百万”“医院日入住率”“每百万医院日入住率”“每周新入院人数”“每百万人每周新入院人数”返回df#确保过滤器按预期工作。deftest_filterraw_input_df):过滤后的filter_countryraw_input_df断言过滤后的iso_codedrop_duplicates() (0= =“美国”#测试数据有每日ICU占用率的nan;这个应该被填满为0。deftest_pivotraw_input_df):旋转pivot_and_cleanraw_input_df0断言旋转“ICU日均入住情况”] [0= =0#测试柱清洗。deftest_clean_colscolnames_df):清洗clean_spark_colscolnames_dfcols_w_spaces清洗过滤器正则表达式”“))断言cols_w_spaces= =真正的#测试从索引创建列。deftest_index_to_colraw_input_df):raw_input_df“col_from_index”raw_input_df指数断言raw_input_df指数= =raw_input_dfcol_from_index所有()

你的回购结构现在应该是这样的:

|——covid_analysis | '——transforms.py |——notebooks | |——covid_eda_modular | '——covid_eda_raw(可选)|——requirements.txt '——tests |——testdata.csv '——transforms_test.py

步骤4.3:运行测试

为了加快本演练的速度,在本子步骤中使用导入的笔记本运行前面的测试。本笔记本下载测试的依赖Python包并将其安装到您的工作空间中,运行测试并报告测试结果。当你可以奔跑pytest从您的集群网络终端,运行pytest从笔记本上可以更方便。

请注意

运行pytest运行名称遵循该表单的所有文件test_ * . py\ * _test.py在当前目录及其子目录中。

  1. 回购窗格中,单击笔记本电脑文件夹,然后单击进口

  2. 进口笔记本电脑对话框:

    1. 进口的中,选择URL

    2. 的原始内容的URLrun_unit_tests笔记本电脑砖/ notebook-best-practices在GitHub repo。获取此URL:

      1. https://github.com/databricks/notebook-best-practices

      2. 单击笔记本电脑文件夹中。

      3. 单击run_unit_tests.py文件。

      4. 点击

      5. 复制完整的URL从您的网络浏览器的地址栏到进口笔记本电脑对话框。

        请注意

        进口笔记本电脑对话框只适用于公共存储库的Git url。

    3. 点击进口

  3. 如果笔记本尚未显示,则在回购窗格,单击笔记本电脑文件夹,然后双击run_unit_tests笔记本。

  4. 的下拉列表中文件,选择要附加此笔记本的集群。

  5. 点击运行所有

  6. 如果出现提示,请单击连接&运行启动,连接&运行

  7. 等一下,让笔记本运行起来。

在笔记本完成运行后,您应该在笔记本中看到关于通过和失败测试的数量的信息,以及其他相关详细信息。如果在开始运行此笔记本时集群尚未运行,则在显示结果之前集群可能需要几分钟才能启动。

你的回购结构现在应该是这样的:

|——covid_analysis | '——transforms.py |——notebooks | |——covid_eda_modular | |——covid_eda_raw(可选)| '——run_unit_tests |——requirements.txt '——tests |——testdata.csv '——transforms_test.py

步骤5:创建一个作业来运行这些笔记本

在前面的步骤中,您手动测试了共享代码并手动运行了笔记本电脑。在这一步中,您将使用Databricks作业来测试您的共享代码并自动运行您的笔记本,可以按需运行,也可以定期运行。

步骤5.1:创建一个作业任务来运行测试笔记本

  1. 的侧栏上数据科学与工程Databricks机器学习环境中,点击工作流

  2. 工作选项卡上,单击创建工作

  3. 为你的工作添加一个名称(就在运行而且任务标签),输入covid_report

  4. 任务名称,输入run_notebook_tests

  5. 类型中,选择笔记本

  6. 中,选择Git

  7. 点击添加git引用

  8. Git信息对话框:

    1. Git存储库URL,进入GitHub使用HTTPS克隆URL为您的GitHub回购。本文假设您的URL以best-notebooks.git例如,https://github.com/ < your-GitHub-username > / best-notebooks.git

    2. Git提供者中,选择GitHub

    3. Git引用(分支/标签/提交),输入主要

    4. 旁边Git引用(分支/标签/提交)中,选择分支

    5. 点击确认

  9. 路径,输入笔记本/ run_unit_tests.不要添加. py文件扩展名。

  10. 集群,选择上一步中的集群。

  11. 点击创建

请注意

在此情况下,Databricks不建议您使用中所述的笔记本中的日程按钮创建和管理定时笔记本作业计划一个作业定期运行此笔记本。这是因为计划按钮通过使用最新的操作来创建作业工作在工作区中复制笔记本的副本。相反,Databricks建议您按照上述说明创建使用最新版本的作业承诺回购中笔记本的版本。

步骤5.2:创建一个作业任务来运行主笔记本

  1. 单击+在这里为你的工作添加更多的任务)图标。

  2. 任务名称,输入run_main_notebook

  3. 类型中,选择笔记本

  4. 路径,输入笔记本/ covid_eda_modular.不要添加. py文件扩展名。

  5. 集群,选择上一步中的集群。

  6. 点击创建任务

步骤5.3运行job

  1. 点击现在运行

  2. 在弹出窗口中单击查看运行

    请注意

    如果弹出窗口消失得太快,请执行以下操作:

    1. 的侧栏上数据科学与工程Databricks机器学习环境中,点击工作流

    2. 工作运行选项卡,单击开始时间值为最新的工作与covid_report工作列。

  3. 要查看作业结果,请单击run_notebook_tests瓷砖,run_main_notebook瓷砖,或者两者都有。每个磁贴的结果与您自己逐一运行笔记本的结果相同。

请注意

这项工作按需进行。要设置此作业以定期运行,请参见安排一份工作

(可选)步骤6:设置repo以测试代码,并在代码更改时自动运行笔记本

在前面的步骤中,您使用了一个作业来自动测试共享代码,并在某个时间点或周期性地运行您的笔记本。但是,您可能更喜欢在更改合并到GitHub回购时自动触发测试。您可以通过使用CI/CD平台来执行这种自动化,例如bob体育客户端下载GitHub的行为

步骤6.1:设置GitHub对工作区的访问

在此子步骤中,您将设置一个GitHub Actions工作流,每当更改合并到存储库中时,该工作流将在工作区中运行作业。你可以通过给GitHub一个唯一的Databricks令牌来访问。

出于安全原因,Databricks不建议您将Databricks工作区用户的个人访问令牌提供给GitHub。相反,Databricks建议您给GitHub一个Databricks访问令牌,该令牌与Databricks服务主体相关联。有关说明,请参见AWS部份运行Databricks Notebook GitHub Action页面在GitHub行动市场。

重要的

笔记本使用与令牌关联的标识的所有工作区权限运行,因此Databricks建议使用服务主体。如果您真的想将Databricks工作区用户的个人访问令牌提供给GitHub,仅用于个人探索目的,并且您理解出于安全原因Databricks不鼓励这种做法,请参阅说明创建工作区用户的个人访问令牌

步骤6.2:添加GitHub Actions工作流

在此子步骤中,您将添加一个GitHub Actions工作流来运行run_unit_tests笔记本每当有一个拉请求到回购。

此子步骤将GitHub Actions工作流存储在一个文件中,该文件存储在你的GitHub repo的多个文件夹级别中。GitHub Actions要求在你的repo中存在一个特定的嵌套文件夹层次结构,以便正常工作。要完成此步骤,您必须使用GitHub回购的网站,因为Databricks回购用户界面不支持创建嵌套的文件夹层次结构。

  1. 在GitHub回购的网站上,单击代码选项卡。

  2. 切换分支或标签下拉列表,选择主要,如果尚未选中。

  3. 如果切换分支或标签下拉列表中不显示查找或创建一个分支框中,单击主要一次。

  4. 查找或创建一个分支框中,输入adding_github_actions

  5. 点击创建分支:adding_github_actions from ' main '

  6. 点击新建文件>

  7. 为文件命名,输入.github /工作流/ databricks_pull_request_tests.yml

  8. 在编辑器窗口中,输入以下代码。此代码使用声明pull_request钩子来使用运行Databricks Notebook GitHub Action运行run_unit_tests笔记本。

    在下面的代码中,替换:

    • < your-workspace-instance-URL >用你的数据库实例名

    • < your-access-token >使用前面生成的令牌。

    • < your-cluster-id >有了目标集群ID

    的名字运行合并前数据库测试pull_requestenv将此值替换为您的工作空间实例名。DATABRICKS_HOSThttps:// < your-workspace-instance-name >工作unit-test-notebook运行在ubuntu-latesttimeout-minutes15步骤-的名字检验回购使用行动/ checkout@v2-的名字运行测试笔记本使用砖/ run-notebook@maindatabricks-token< your-access-token >local-notebook-path笔记本/ run_unit_tests.pyexisting-cluster-id< your-cluster-id >git-commit“$ {{github.event.pull_request.head.sha}}”#授予所有用户查看笔记本结果的权限,这样他们就可以#查看结果的笔记本,如果他们有相关的访问权限。access-control-list-json>“group_name”:“用户”,:“permission_level CAN_VIEW”run-name“EDA转换助手模块单位测试”
  9. 选择为这个提交创建一个新的分支,并开始一个拉请求

  10. 点击提出新文件

  11. 单击把请求选项卡,然后创建拉取请求。

  12. 在拉取请求页面上,等待旁边的图标运行预合并Databricks测试/ unit-test-notebook (pull_request)显示绿色复选标记。(图标可能需要一段时间才能出现。)如果选中的是红色的X,而不是绿色的,请单击细节找出原因。如果图标或细节不再显示,点击显示所有检查

  13. 如果出现绿色复选标记,则将拉取请求合并到主要分支。

(可选)步骤7:更新GitHub中的共享代码以触发测试

在这一步中,您对共享代码进行更改,然后将更改推入您的GitHub回购,这将立即根据上一步的GitHub操作自动触发测试。

步骤7.1:在repo中创建另一个工作分支

  1. 在你的工作空间里回购窗格,单击first_tests分支。

  2. best-notebooks对话框中,单击旁边的下拉箭头first_tests分支,然后选择主要

  3. 单击按钮。如果提示继续拉,单击确认

  4. 单击+创建分支)按钮。

  5. 输入trigger_tests,按“Enter”。(你可以给你的分支一个不同的名字。)

  6. 关闭对话框。

步骤7.2:更改共享代码

  1. 在你的工作空间里回购窗格,双击covid_analysis / transforms.py文件。

  2. 在这个文件的第三行,修改这行代码:

    #按国家代码过滤。

    :

    #按国家代码过滤。如果没有指定,请使用“USA”。

步骤7.3:检入变更以触发测试

  1. 回购窗格,单击trigger_tests分支。

  2. best-notebooks对话,在变化Tab,确保covid_analysis / transforms.py被选中。

  3. 总结(必需),输入更新评论

  4. 描述(可选),输入更新评论filter_country。

  5. 点击提交&推送

  6. 点击历史,或按在git提供程序上创建一个pull请求链接在弹出窗口。

  7. 在GitHub中,单击把请求选项卡,然后创建拉取请求。

  8. 在拉取请求页面上,等待旁边的图标运行预合并Databricks测试/ unit-test-notebook (pull_request)显示绿色复选标记。(图标可能需要一段时间才能出现。)如果选中的是红色的X,而不是绿色的,请单击细节找出原因。如果图标或细节不再显示,点击显示所有检查

  9. 如果出现绿色复选标记,则将拉取请求合并到主要分支。