如何从谷歌云数据库拉动笔记本到github?

时间:2017-04-18 08:25:49

标签: github google-cloud-datalab

我想设置google cloud datalab从github repo读取我的笔记本,并在我做出更改时将它们推回去。

我能够设置一个镜像我的github项目的云仓库但是当在datalab中使用ungit推送更改时,它表示连接的云仓库是只读的。

其他人如何设置它?

5 个答案:

答案 0 :(得分:5)

我首先使用datalab start <INSTANCE_NAME_HERE>命令和**--no-create-repository**标志设置datalab实例,以便不设置Cloud Source repo。然后我按照这些步骤克隆了一个git repo:

  1. 连接到实例。
  2. 点击右上角的ungit图标。
  3. 使用ungit中的“地址栏”,导航至:/ content /
  4. 现在只需将要克隆的git url放入'clone from'部分。
  5. 您将被要求进行身份验证(我已经过最后一次通过,因此保存了凭据),但除此之外,我担心您每次推送或拉动以后都必须输入凭据。

答案 1 :(得分:3)

即使使用两因素身份验证,该功能也可以使用,并且不涉及使用Web用户界面。

  • ssh进入Datalab VM。您可以从Google Web控制台执行此操作,方法是:转到Compute Engine |实例,然后单击ssh按钮
  • 您的笔记本位于此VM的永久磁盘上(/ mnt / disks / datalab-pd / content / datalab / notebooks),因此cd到该目录并git将存储库克隆到该位置。
  • (可选)按照https://help.github.com/articles/connecting-to-github-with-ssh/
  • 中的步骤设置无密码git
  • 在Datalab中使用笔记本(/ mnt / disks / datalab-pd / content映射到Datalab中的主目录)
  • 要提交,请返回ssh窗口,然后从命令行使用git。

答案 2 :(得分:2)

已连接的云源存储库仅以一种方式同步,从Github / BitBucket到云源回购,请注意顶部here的注释。

Datalab automatically integrates,其中包含一个不是镜像的Cloud Source仓库,因此您可以单独拉动并推送它。如果您需要使用Github仓库,则需要在托管Datalab容器内的Datalab实例的VM上设置凭据。确保您是唯一可以访问该云项目的人,因为所有项目读者都可以访问虚拟机。

答案 3 :(得分:1)

在github中:

  1. 设置ssh deploy(公共)密钥(使用ssh-keygen生成)
  2. 在gcp中:

    1. 转到计算实例,单击datalab虚拟机
    2. 点击修改
    3. 向下滚动到“自定义元数据”部分。单击并拖动与“用户数据”脚本组件关联的设置。 systemd datalab服务有一个定义 - 修改它并添加/ root dir mount定义:

      -v /mnt/disks/datalab-pd/root:/root
      
    4. 保存修改。

    5. ssh into cloud datalab vm instance
    6. 创建目录

      mkdir -p /mnt/disks/datalab-pd/root/.ssh
      
    7. 在.ssh目录中放置以前生成的私有ssh密钥和git配置文件(〜/ .ssh / config)

    8. 配置文件应如下所示:

      host github.com
       HostName github.com
       IdentityFile ~/.ssh/id_rsa
       User git
      
    9. 重新启动datalab实例后,你应该能够推送到git repo

答案 4 :(得分:0)

我尝试了以上各种答案,但没有任何效果。但是,这种方法确实有效。

  1. 这已使用github存储库进行了测试。我必须关闭两因素身份验证才能使其正常工作。如果有问题,可以将其关闭然后再打开。

  2. 将GCP源存储库连接到您的github帐户。单击新的回购。选择连接到外部存储库。按照向导进行操作。

  3. 创建一个datalab实例。使用create datalab your-dl-instance方法。

  4. 在云控制台上的存储库浏览器中,显示用于显示如何克隆存储库的方法。它看起来应该像这样:gcloud source repos clone github_yourusername_someproj --project=someproj老实说,我不确定这是否有价值,但是此过程将在GCP中反映您的github存储库。稍后,当我将更改推送到远程服务器时,当github存储库更新时,我神奇地看到此存储库已更新。也许

  5. 连接到数据实验室。

  6. 创建一个笔记本,为其命名。我叫我的add_repo。创建一个使用bash魔术的单元。让它克隆仓库。使用https克隆github存储库。如果使用上面显示的gcloud命令,它将打印一条有关此镜像的消息。它会告诉您执行以下操作。代替

    %% bash

    git clone https://github.com/youruserid/yourgithubrepo

  7. 现在,您在大型datalab笔记本git repo中有一个git repo。

  8. 使用右上方的菜单栏图标在datalab笔记本中打开ungit。

  9. 您将看到一个新目录,此时您无法将更改推送到该目录。

  10. 在ungit中,单击下拉的submodules并选择add submodule

  11. 输入yourgithubrepo作为路径,该路径与执行克隆后在datalab笔记本中看到的目录相对应。它不应以/ content / datalab / notebooks之类的名称开头。只需使用与新目录匹配的仓库名称即可。

  12. 对于URL,在git clone命令之后输入上面使用的克隆URL。

  13. 单击ok时,您会看到.gitmodules已在ungit中更新。将这些更改提交到您的/ content / datalab / notebooks存储库中。

  14. 在子目录中为您的github存储库创建一个测试笔记本。保存。 Ungit应该在与模块相对应的目录中显示更改,而不是笔记本本身。即。 ungit显示yourgithubrepo已被修改。如果将鼠标悬停在更改上,则工具提示将显示该子项目是肮脏的。

  15. 单击submodules的下拉菜单,然后选择yourgithubrepo。现在将ungit更改为/content/datalab/notebooks/yourgithubrepo。它还将显示一个黄色横幅,显示“这是一个子模块”。提交并推动您的更改。它将提示您输入登录名和github密码。假设您已禁用两因素身份验证,则此推送将显示在github和google cloud中。如果启用了两因素身份验证,则ungit无法处理它。您将收到一条错误消息,提示身份验证失败。