Gitpod
使用 Gitpod,只需单击一个按钮或链接即可在浏览器中获得完整的开发环境,并且可以立即编写代码。
Gitpod 是一个开源 Kubernetes 应用程序(GitHub 仓库地址 https://github.com/gitpod-io/gitpod),适用于可直接编写代码的开发环境,可为云中的每个任务提供全新的自动化开发环境,非常迅速。此外,Gitpod 能够将你的开发环境描述为代码,并直接从你的浏览器或桌面 IDE 启动即时、远程和基于云的开发环境。
快速开始
Fork 出 TiDB 应用开发的示例代码仓库 pingcap-inc/tidb-example-java。
通过浏览器的地址栏,在示例代码仓库的 URL 前加上
https://gitpod.io/#
来启动你的 gitpod 工作区。例如,
https://gitpod.io/#https://github.com/pingcap-inc/tidb-example-java
。支持在 URL 中配置环境变量。例如,
https://gitpod.io/#targetFile=spring-jpa-hibernate_Makefile,targetMode=spring-jpa-hibernate/https://github.com/pingcap-inc/tidb-example-java
。
使用列出的提供商之一登录并启动工作区,例如,
Github
。
使用默认的 Gitpod 配置和环境
完成快速开始 的步骤之后,Gitpod 会需要一段时间来设置你的工作区。
以 Spring Boot Web 应用程序为例,通过 URL https://gitpod.io/#targetFile=spring-jpa-hibernate_Makefile,targetMode=spring-jpa-hibernate/https://github.com/pingcap-inc/tidb-example-java
可以创建一个新工作区。
完成后,你将看到如下所示的页面。
页面中的这个场景使用了 TiUP 来搭建一个 TiDB Playground。你可以在终端的左侧查看进度。
一旦 TiDB Playground 准备就绪,另一个 Spring JPA Hibernate
任务将运行。 你可以在终端的右侧查看进度。
完成所有任务后,你可以看到如下所示的页面,并在左侧导航栏的 REMOTE EXPLORER
中找到你的端口 8080
URL(Gitpod 支持基于 URL 的端口转发)。
你可以按照该指南测试 API。注意请将 URL http://localhost:8080
替换为你在 REMOTE EXPLORER
中找到的那个。
使用自定义的 Gitpod 配置和 Docker 镜像
自定义 Gitpod 配置
在项目的根目录中,参考示例 .gitpod.yml,创建一个 .gitpod.yml
文件用于配置 Gitpod 工作空间。
# This configuration file was automatically generated by Gitpod.
# Please adjust to your needs (see https://www.gitpod.io/docs/config-gitpod-file)
# and commit this file to your remote git repository to share the goodness with others.
# image:
# file: .gitpod.Dockerfile
tasks:
- name: Open Target File
command: |
if [ -n "$targetFile" ]; then code ${targetFile//[_]//}; fi
- name: TiUP init playground
command: |
$HOME/.tiup/bin/tiup playground
- name: Test Case
openMode: split-right
init: echo "*** Waiting for TiUP Playground Ready! ***"
command: |
gp await-port 3930
if [ "$targetMode" == "plain-java-jdbc" ]
then
cd plain-java-jdbc
code src/main/resources/dbinit.sql
code src/main/java/com/pingcap/JDBCExample.java
make mysql
elif [ "$targetMode" == "plain-java-hibernate" ]
then
cd plain-java-hibernate
make
elif [ "$targetMode" == "spring-jpa-hibernate" ]
then
cd spring-jpa-hibernate
make
fi
ports:
- port: 8080
visibility: public
- port: 4000
visibility: public
- port: 2379-36663
onOpen: ignore
自定义 Gitpod Docker 镜像
默认情况下,Gitpod 使用名为 Workspace-Full 的标准 Docker 镜像作为工作空间的基础。 基于此默认镜像启动的工作区预装了 Docker、Go、Java、Node.js、C/C++、Python、Ruby、Rust、PHP 以及 Homebrew、Tailscale、Nginx 等工具。
你可以提供公共 Docker 镜像或 Dockerfile。 并为你的项目安装所需的任何依赖项。
这是一个 Dockerfile 示例:示例 .gitpod.Dockerfile
FROM gitpod/workspace-java-17
RUN sudo apt install mysql-client -y
RUN curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
然后需要更新.gitpod.yml
:
# This configuration file was automatically generated by Gitpod.
# Please adjust to your needs (see https://www.gitpod.io/docs/config-gitpod-file)
# and commit this file to your remote git repository to share the goodness with others.
image:
# 在这里导入你的 Dockerfile
file: .gitpod.Dockerfile
tasks:
- name: Open Target File
command: |
if [ -n "$targetFile" ]; then code ${targetFile//[_]//}; fi
- name: TiUP init playground
command: |
$HOME/.tiup/bin/tiup playground
- name: Test Case
openMode: split-right
init: echo "*** Waiting for TiUP Playground Ready! ***"
command: |
gp await-port 3930
if [ "$targetMode" == "plain-java-jdbc" ]
then
cd plain-java-jdbc
code src/main/resources/dbinit.sql
code src/main/java/com/pingcap/JDBCExample.java
make mysql
elif [ "$targetMode" == "plain-java-hibernate" ]
then
cd plain-java-hibernate
make
elif [ "$targetMode" == "spring-jpa-hibernate" ]
then
cd spring-jpa-hibernate
make
fi
ports:
- port: 8080
visibility: public
- port: 4000
visibility: public
- port: 2379-36663
onOpen: ignore
应用更改
完成对 .gitpod.yml
文件配置后,请保证最新的代码已在你对应的 GitHub 代码仓库中可用。
访问 https://gitpod.io/#<YOUR_REPO_URL>
以建立新的 Gitpod 工作区,新工作区会应用最新的代码。
访问 https://gitpod.io/workspaces
以获取所有建立的工作区。
总结
Gitpod 提供了完整的、自动化的、预配置的云原生开发环境。无需本地配置,你可以直接在浏览器中开发、运行、测试代码。