检查点
Create a Cloud Source Repository
/ 30
Launch the site at TCP port 8080
/ 30
Configure the cloud build and initiate it
/ 40
使用 Cloud Build 和 Firebase 流水线部署 Hugo 网站
GSP747
概览
在本实验中,您将创建一个流水线,以便通过静态网站开发工具 Hugo 来部署网站。您需要将网站内容存储在 Cloud Source Repositories 中,并通过 Firebase 部署该网站,然后使用 Cloud Build 创建流水线,以自动部署提交到代码库的新内容。
目标
在本实验中,您将学到以下内容:
- 静态网站概览
- 使用 Hugo 设置网站
- 将网站内容存储在 Cloud Source Repositories 中
- 使用 Firebase 部署网站
- 使用 Cloud Build 创建构建流水线以自动完成部署
前提条件
本文中提供的说明足以指导您完成本实验。您可能还会发现,具备一些与所使用的服务相关的实操体验也很有帮助。下面是一些其他可能有用的实验:
静态网站的优势
诸如 Hugo 之类的静态网站开发工具之所以受欢迎,是因为它们能够构建不需要网络服务器的网站。对于静态网络平台,无需维护服务器操作系统或软件。但是需要注意一些运维方面的问题。例如,您可能需要对发布的内容进行版本控制,将网站托管在内容分发网络(“CDN”)上,以及预配 SSL 证书。
若要满足这些需要,可以在 Google Cloud 上使用持续集成/持续部署流水线。开发者可以使用部署流水线自动执行整个部署过程,从而加速创新。在本实验中,您将学习如何构建可演示此自动化过程的流水线。
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。我们会为您提供新的临时凭据,让您可以在实验规定的时间内用来登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
- 完成实验的时间 - 请注意,实验开始后无法暂停。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:
- 打开 Google Cloud 控制台按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示登录页面。
提示:请将这些标签页安排在不同的窗口中,并将它们并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。 -
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}} 您也可以在实验详细信息面板中找到用户名。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}} 您也可以在实验详细信息面板中找到密码。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本次实验中使用您自己的 Google Cloud 账号可能会产生额外费用。 -
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于该账号为临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
过程概览
这是您要构建的流水线示意图:
目标是能够提交代码并让代码触发流水线,然后流水线将部署网站。整个过程将分为两部分。第一部分,在本地构建网站并将其手动部署到 Firebase,以便您可以了解整个过程。第二部分,使用 Cloud Build 构建一个流水线来自动执行此过程。
任务 1. 手动部署
首先在 Linux 实例上手动构建网站,以学习端到端流程。您还将使用此 Linux 实例来执行一些必要的一次性任务,以确保 Firebase 启动并正常运行。
连接到 Linux 实例
- 在导航菜单上,选择 Compute Engine > 虚拟机实例。您将会看到一个已为您构建的实例。
- 在该行末尾,您应该会看到外部 IP 地址和 SSH 按钮(如下图所示)。如果这些内容被信息面板挡住了,可以关闭该面板以查看整行的内容。
- 记下外部 IP 地址以备稍后使用。
- 点击 SSH。此时将出现一个窗口,您会看到一个 shell 提示。
在本地安装 Hugo
现在,在 Linux 实例中本地安装 Hugo,以便在本地先测试网站,然后再通过 Firebase 部署该网站。为了简化此过程,我们提供了一个 shell 脚本。
- 在 Linux 实例中,查看文件 installhugo.sh。
您还会看到以下内容:
输出:
-
注意,此处使用了
wget
命令来下载 Hugo,并使用tar
命令来解压缩 Hugo 归档文件。在本实验后面创建流水线时,您将会看到类似的命令。 -
输入下面的命令以运行脚本并安装 Hugo:
您会收到一条如下所示的消息,告诉您 Hugo 已安装在 /tmp
目录下。您可以构建网站基础架构了。
创建代码库和初始网站
现在,创建一个 Cloud Source Repositories 代码库来保存网站,然后将该代码库克隆到 Linux 实例。克隆代码库会在 shell 中创建该代码库的镜像。这样可方便您在 shell 中实现网站,以及稍后将所做的更改提交到文件系统中。在本实验的后面部分,您将设置一条流水线来响应这些提交到代码库中的更改。
- 在 Linux 虚拟机上安装 git
在 Linux 实例 shell 中输入以下命令:
对收到的所有提示,都回答 Yes
。
- 创建并克隆代码库。在 Linux 实例 shell 中输入以下命令:
您将收到关于已创建和克隆代码库的确认消息,如下图所示。您可以忽略相关的两条警告消息,包括将向您收取此代码库的费用和代码库是空的。
点击“检查我的进度”,验证已完成以下目标:
- 现在,您可以创建网站结构了。在 Linux shell 中输入以下命令:
通常,hugo
命令可创建目录。--force
选项将在代码库目录(已存在)中创建网站。这样您就可以将 Git 相关信息保存在刚刚克隆的目录下。您将会看到如下所示的消息,指明网站已创建。
- 现在,安装 Ananke 主题以提供网站布局。在 Linux 实例 shell 中输入以下命令:
您将会看到如下所示的消息,指明已克隆主题。
- 从主题目录中移除 git 文件:
- 现在已经设置好网站结构,您可以预览了。输入以下命令,在 TCP 端口 8080 启动该网站:
Hugo 将构建并部署该网站,以便在 TCP 端口 8080 上访问,如下图所示。服务器将一直运行,直到您按下 CTRL+C 停止它。
- 打开一个浏览器标签页,并浏览至端口 8080 的外部 IP 地址。通过以下网址,将
[EXTERNAL IP]
替换为实例的外部 IP 地址:
网站应如下所示。
点击“检查我的进度”,验证已完成以下目标:
- 返回到 Linux shell,并按下 CTRL+C 停止 Hugo 服务器。
将 Firebase 添加到您的项目
现在您已经知道网站是什么样的,接下来需要将它部署到 Firebase。首先,在现有项目内启用 Firebase。
-
在您使用的浏览器中打开一个新的标签页,以访问 Google Cloud 控制台,然后打开其中的 Firebase 并进入 Firebase 控制台。
-
现在点击添加项目。
系统会要求您为项目选择一个名称。
- 点击名称字段,并选择现有的以“qwiklabs-gcp-...”开头的 Google Cloud 项目,如下图所示:
- 勾选我接受 Firebase 条款和我确认,我将仅出于我的交易、业务、工艺或专业目的而使用 Firebase。点击继续。
- 系统可能会要求您确认 Firebase 结算方案。本实验中已包含了 Firebase 的相关费用。在收到提示时,点击确认方案。
- 系统会要求您确认在将 Firebase 添加到项目时应用的一些条件。点击继续。
- 系统会要求您确认在此 Firebase 项目中使用 Google Analytics。鉴于目前是实验环境,可以使用切换开关停用 Google Analytics 并点击添加 Firebase。将 Firebase 添加到项目中大约需要 1 分钟。
- 添加 Firebase 之后,在收到提示时点击继续。
将网站部署到 Firebase
- 在 Linux 实例 shell 中安装 Firebase CLI:
- 现在,您需要初始化 Firebase。在 shell 中输入以下命令:
- 使用箭头键和空格键选择 Hosting:为 Firebase Hosting 配置文件,并(可选)设置 GitHub 操作部署,然后按 Enter 键。在系统要求您选择项目选项时,选择使用现有项目,然后使用箭头键和空格键选择实验说明页面中提供的项目 ID 并按 Enter 键。对于公共目录,可选择默认值公共。如需配置为单页应用,则选择默认值 N。如需设置为通过 GitHub 自动构建和部署,则选择 N。
当系统询问您是否覆盖任何现有文件时,选择“Y”。
- 现在,您可以部署应用了。在 Linux 实例 shell 中输入以下命令,以使用 Hugo 重新构建网站并通过 Firebase 进行部署:
- 部署完应用后,您会收到 Hosting 网址。点击该网址,您将会看到通过 Firebase CDN(内容分发网络)部署的同一个网站。如果收到常见的“欢迎”消息,请稍等几分钟让 CDN 完成初始化,然后再刷新浏览器窗口。保存此 Hosting 网址以备稍后使用。
至此,您已经在本地完成了整个部署。接下来,使用 Cloud Build 自动执行端到端流程。
任务 2. 自动进行部署
执行初始提交
构建流水线的目标是在代码库发生更改时能够触发构建。首先需要对代码库执行初始提交,以验证您能否进行进一步的更改。
- 在 Linux shell 中输入以下命令,以配置 git 命令的全局参数。务必输入相应的引号:
- 在 Linux shell 中输入以下命令,以创建
.gitignore
文件来排除代码库中的某些目录:
- 输入以下命令来对代码库执行初始提交:
现在,您已经将网站的初始版本提交(上传)到了 Google Cloud。
配置构建
Cloud Build 使用代码库根目录中的文件 cloudbuild.yaml 来执行构建。此文件为 YAML 格式。间距和缩进非常重要,因此我们已经为您将该文件放在 Linux 实例上。
- 在 Linux shell 中输入以下命令。请注意,
cp
命令末尾有一个终止句点 ("."):
- 运行以下命令以查看
cloudbuild.yaml
文件的内容。由于长度原因,有些行已换行。
输出:
- 下面是对
cloudbuild.yaml
文件的一些观察结果:
- 此文件中有三个命名的步骤,每个步骤通过一个容器映像来执行。前两个步骤使用一个由 Google 支持的开发工具,通过
wget
来下载 Hugo 和 Firebase 工具。这两个步骤并行运行。使用 wget 开发工具的速度比手动安装wget
更快。 - 第三个步骤使用标准 Ubuntu 容器来安装 Hugo 和 Firebase,然后构建和部署网站。通过为每个部署安装 Hugo 和 Firebase,您可以根据需要随时更改 Hugo 的版本,并使用 Firebase 的最新版本。
-
tar
和wget
命令与之前在installhugo.sh
脚本中的使用情形几乎完全相同。 - 此文件还使用了一个自定义替代变量 (_HUGO_VERSION) 和一个 Google 提供的替代变量 (PROJECT_ID),以便可以在不同环境中使用此模板。
- 系统会创建 Hugo 和 Firebase 的二进制文件并安装在临时目录中,以免将它们意外部署到网站本身。
创建 Cloud Build 触发器
现在创建一个触发器来回应对代码库的主分支执行的提交。
- 在命令行中,输入以下命令:
- 触发器配置中包含以下详细信息:
字段 | 值 |
---|---|
名称 | commit-to-master-branch |
说明 | Push to master |
事件 | 推送到分支 |
代码库 | my_hugo_site |
分支(正则表达式) | ^master$(务必取消选中“反转正则表达式”) |
构建配置 | Cloud Build 配置文件(yaml 或 json) |
Cloud Build 配置文件位置 | / cloudbuild.yaml |
Cloud Build 服务账号
Cloud Build 服务账号需要具备相应的权限才能使用 Firebase 来部署网站。
Cloud Build | 角色 | 说明 |
---|---|---|
[PROJECT_NUMBER@cloudbuild.gserviceaccount.com | roles/firebasehosting.admin | 对 Hosting 资源的完整读写权限 |
测试流水线
现在您已经创建了流水线,可以对网站进行更改并提交,验证更改是否生效。
- 在 Linux shell 中输入以下命令,进入代码库目录:
- 修改 config.toml 文件并更改其标题:
- 在 Linux shell 中输入以下命令,以将所做的更改提交到代码库并触发 Cloud Build 流水线:
- 查阅构建历史记录以查看构建状态:
- 查阅构建日志以了解当前构建:
- 从执行的构建获取网址:
- 浏览到 Hosting 网址以查看结果。您还可以前往 Firebase 控制台查看项目,以便查找域名。
点击“检查我的进度”,验证已完成以下目标:
恭喜!
您已经学习了 Cloud Build 如何编排流水线以将 Hugo 网站快速部署到 Firebase,这可为您提供 CDN 和 SSL 证书。借助 Cloud Build,您可以根据需要定制整个流程。部署时间缩短还有助于您加快创新步伐,并且轻松地测试网站的修订版本。如需了解详情,请查阅 Cloud Build 和 Firebase 文档。
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2024 年 1 月 30 日
上次测试实验的时间:2023 年 12 月 11 日
版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。