练习 - 设置 Azure DevOps 环境
在本部分中,你将确保已设置 Azure DevOps 组织以完成本模块的其余部分。 还将创建要部署到的 Azure 应用服务环境。
若要设置系统,需要:
- 添加用户以确保 Azure DevOps 可以连接到 Azure 订阅。
- 设置一个 Azure DevOps 项目供本模块使用。
- 在 Azure Boards 中,将本模块的工作项移动到“Doing”列。
- 使用 Azure Cloud Shell 中的 Azure CLI 创建 Azure 应用服务环境。
- 创建定义应用服务环境名称的管道变量。
- 创建一个服务连接,使 Azure Pipelines 能够安全地访问 Azure 订阅。
将用户添加到 Azure DevOps
若要完成本模块,需要自己的 Azure 订阅。 可以免费开始使用 Azure。
虽然不需要 Azure 订阅即可使用 Azure DevOps,但在本模块中,你将使用 Azure DevOps 部署到 Azure 订阅中存在的资源。 为了简化此过程,应使用相同的Microsoft帐户登录到 Azure 订阅和 Azure DevOps 组织。
如果使用不同的Microsoft帐户登录到 Azure 和 Azure DevOps,请在用于登录到 Azure 的 Microsoft 帐户下将用户添加到 DevOps 组织。 有关详细信息,请参阅 将用户添加到组织或项目。 添加用户时,请选择 基本 访问级别。
然后,注销 Azure DevOps,然后在用于登录到 Azure 订阅的 Microsoft 帐户下再次登录。
获取 Azure DevOps 项目
在这里,需确保 Azure DevOps 组织已设置好,可完成本模块的其余操作。 首先,运行在 Azure DevOps 中创建项目的模板。
这些学习路径中的模块是跟随 Tailspin 网页团队进行其 DevOps 旅程的一个进程的一部分。 为便于学习,每个模块都有一个关联的 Azure DevOps 项目。
运行模板
运行一个模板来设置 Azure DevOps 组织。
在 Visual Studio 或所选的 IDE 中获取并运行 ADOGenerator 项目。
当系统提示 输入模板列表中的模板编号时,输入 33 以用于 在 Azure Pipelines 中运行非功能测试,然后按 Enter。
选择身份验证方法。 可以 设置和使用个人访问令牌(PAT) 或使用设备登录。
注释
如果设置了 PAT,请确保授权必要的范围。 对于本模块,可以使用 完全访问权限,但在实际情况下,应确保仅授予必要的范围。
输入 Azure DevOps 组织名称,然后按 Enter。
如果出现提示,请输入 Azure DevOps PAT,然后按 Enter。
输入项目名称(如 Space Game - web - 非功能测试),然后按 Enter。
创建项目后,在浏览器中(at
https://dev.azure.com/<your-organization-name>/
)转到 Azure DevOps 组织并选择该项目。
为存储库创建分支
如果尚未创建,请创建 mslearn-tailspin-spacegame-web-deploy 存储库的分支。
在 GitHub 上,转到 mslearn-tailspin-spacegame-web-deploy 存储库。
选择屏幕右上角的 Fork。
选择 GitHub 帐户作为“所有者”,然后选择“创建分支”。
重要
此模块中的清理 Azure DevOps 环境页面包含重要的清理步骤。 清理有助于确保您的免费构建时间不会耗尽。 即使未完成此模块,也要务必执行清理步骤。
设置项目的可见性
最初,GitHub 上 Space Game 存储库的分支设置为“公共”,而 Azure DevOps 模板创建的项目设置为“专用”。 GitHub 上的公共存储库可供任何人访问,而专用存储库仅供你和你选择与之共享的人员访问。 同样,在 Azure DevOps 上,公共项目为未经身份验证的用户提供只读访问权限,而专用项目要求授予用户访问权限并经过身份验证才能访问服务。
目前,出于本模块的目的,无需修改这些设置中的任何一个。 但是,对于你的个人项目,你需要确定是否要将可见性和访问权限授予他人。 例如,如果你的项目是开源的,你可能会选择将 GitHub 存储库和 Azure DevOps 项目都设为“公共”。 而如果你的项目是专有的,那么你通常会将 GitHub 存储库和 Azure DevOps 项目都设为“专用”。
稍后,你会发现以下资源有助于确定哪个选项最适合你的项目:
在本地设置项目
在这里,你将在 Visual Studio Code 中加载 Space Game 项目,配置 Git,在本地克隆存储库,并设置上游远程程序,以便下载初学者代码。
注释
如果已在本地设置 mslearn-tailspin-spacegame-web-deploy 项目,你可以转到下一部分。
打开集成终端
Visual Studio Code 附带集成终端。 在这里,你不仅可以编辑文件,还可以使用命令行进行操作。
启动 Visual Studio Code。
在“视图”菜单中,选择“终端”。
在下拉列表中,选择 “Git Bash”。 如果你熟悉其他想用的 Unix shell,请改为选择该 shell。
在终端窗口中,可以选择系统上安装的任何 shell。 例如,可以选择 Git Bash、PowerShell 或其他 shell。
在这里,你将使用 Git Bash(适用于 Windows 的 Git 的一部分),以便轻松运行 Git 命令。
注释
在 Windows 上,如果未看到 Git Bash 列为选项,请确保已安装 Git,然后重启 Visual Studio Code。
cd
运行命令,转到要在其中工作的目录。 如果需要,请选择主目录(~
)或其他目录。cd ~
配置 Git
如果你不熟悉 Git 和 GitHub,请先运行几个命令,将标识与 Git 相关联,并使用 GitHub 进行身份验证。 有关详细信息,请参阅 “设置 Git”。
至少需要完成以下步骤。 从集成终端运行命令。
在 Visual Studio Code 中设置项目
在 使用 Azure DevOps 构建应用程序的学习路径 中,您分叉并克隆了一个 Git 存储库。 存储库包含 Space Game 网站的源代码。 你的分支已连接到 Azure DevOps 中的项目,因此在将更改推送到 GitHub 时会运行生成。
重要
在此学习路径中,我们切换到其他 Git 存储库 mslearn-tailspin-spacegame-web-deploy。 运行模板以设置 Azure DevOps 项目时,该过程会自动克隆存储库。
在此部分,你将在本地克隆分支,以便可以更改和生成管道配置。
在本地克隆分支
现在,GitHub 帐户中拥有一个 Space Game Web 项目的副本。 现在,你将下载或克隆一个副本到你的计算机,以便使用。
克隆与分支类似,都是存储库的副本。 克隆存储库时,可以进行更改,验证它们是否按预期工作,然后将这些更改上传到 GitHub。 还可以将本地副本与其他经过身份验证的用户对存储库的 GitHub 副本所做的更改同步。
将 Space Game Web 项目克隆到计算机:
在 GitHub 上转到 Space Game Web 项目的分支 (mslearn-tailspin-spacegame-web-deploy)。
选择 Code。 然后从“HTTPS”选项卡选择显示的 URL 旁边的按钮,将该 URL 复制到剪贴板。
在 Visual Studio Code 中,转到终端窗口。
在终端中,移动到要工作的目录。 如果需要,请选择主目录(
~
)或其他目录。cd ~
运行
git clone
命令。 将此处显示的 URL 替换为剪贴板中的内容:git clone https://github.com/your-name/mslearn-tailspin-spacegame-web-deploy.git
移动到
mslearn-tailspin-spacegame-web-deploy
目录。 这是存储库的根目录。cd mslearn-tailspin-spacegame-web-deploy
设置上游远程库
远程库是一个 Git 存储库,团队成员可在这里进行协作(例如 GitHub 上的存储库)。 你可以在这里列出你的远程,并添加一个指向 Microsoft 存储库副本的远程,以便获取最新的示例代码。
运行以下
git remote
命令以列出远程库:git remote -v
你可以看到你对存储库具有提取(下载)和推送(上传)访问权限:
origin https://github.com/username/mslearn-tailspin-spacegame-web-deploy.git (fetch) origin https://github.com/username/mslearn-tailspin-spacegame-web-deploy.git (push)
Origin 指定你在 GitHub 上的存储库。 当你从另一个存储库分叉代码时,原始的远程仓库(即你所分叉的仓库)通常被命名为 上游。
运行以下
git remote add
命令可创建一个名为“upstream”的远程库,它指向 Microsoft 存储库:git remote add upstream https://github.com/MicrosoftDocs/mslearn-tailspin-spacegame-web-deploy.git
再次运行
git remote
以查看更改:git remote -v
你会看到你仍然具有对存储库的提取(下载)访问权限和推送(上传)访问权限。 现在,还可以获取对Microsoft存储库的访问权限:
origin https://github.com/username/mslearn-tailspin-spacegame-web-deploy.git (fetch) origin https://github.com/username/mslearn-tailspin-spacegame-web-deploy.git (push) upstream https://github.com/MicrosoftDocs/mslearn-tailspin-spacegame-web-deploy.git (fetch)
在文件资源管理器中打开项目
在 Visual Studio Code 中,终端窗口指向 Space Game Web 项目的根目录。 现在,你将从文件资源管理器中打开项目,以查看其结构并使用文件。
打开项目最简单的方法是在当前目录中重新打开 Visual Studio Code。 为此,可在集成终端中运行以下命令:
code -r .
可以在文件资源管理器中查看目录和文件树。
重新打开集成终端。 终端会将你带至 Web 项目的根目录。
如果 code
命令失败,则需要将 Visual Studio Code 添加到系统路径。 为此,做以下事情:
- 在 Visual Studio Code 中,点击 F1 或者选择视图>命令面板来访问命令面板。
- 在命令面板中,输入“Shell 命令: 在 PATH 中安装 "code" 命令”。
- 重复上一过程,在文件资源管理器中打开项目。
现在,你已准备好从本地开发环境中使用 Space Game 源代码并配置 Azure Pipelines 了。
创建 Azure 应用服务环境
在这里,你将创建定义管道阶段的环境。 你将创建一个对应于每个阶段的应用服务实例:开发、测试和过渡。
在前面的模块中,你使用 Azure CLI 创建应用服务实例。 在这里,你将执行相同的工作。
重要
请记住,需要自己的 Azure 订阅才能完成本模块中的练习。
通过 Azure 门户启动 Cloud Shell
- 转到 Azure 门户并登录。
- 在菜单栏上,选择 Cloud Shell。 出现提示时,选择“Bash”体验。
选择 Azure 区域
此处指定要在其中创建 Azure 资源的默认 区域或地理位置。
在 Cloud Shell 中
az account list-locations
运行以下命令,列出 Azure 订阅中可用的区域。az account list-locations \ --query "[].{Name: name, DisplayName: displayName}" \ --output table
从输出中的 “名称 ”列中,选择离你近的区域。 例如,选择 eastasia 或 westus2。
运行
az configure
以设置默认区域。 将 REGION< 替换为>所选区域的名称。az configure --defaults ___location=<REGION>
以下示例将 westus2 设置为默认区域:
az configure --defaults ___location=westus2
创建应用服务实例
在这里,你将为要部署到的三个阶段创建应用服务实例:开发、测试和暂存。
注释
出于学习目的,请使用默认网络设置。 这些设置使您的网站可从 Internet 访问。 在实践中,可以配置一个 Azure 虚拟网络,该虚拟网络将网站置于无法从 Internet 路由的网络中,并且只有团队可以访问该虚拟网络。 稍后,准备就绪后,可以重新配置网络,使网站可供用户使用。
在 Cloud Shell 中,生成一个随机数,使 Web 应用的域名唯一。
webappsuffix=$RANDOM
az group create
运行以下命令,创建名为 tailspin-space-game-rg 的资源组。az group create --name tailspin-space-game-rg
az appservice plan create
运行以下命令,创建名为 tailspin-space-game-asp 的应用服务计划。az appservice plan create \ --name tailspin-space-game-asp \ --resource-group tailspin-space-game-rg \ --sku B1 \ --is-linux
该
--sku
参数指定在基本层上运行的 B1 计划。--is-linux
参数指示使用 Linux 辅助角色。重要
如果 B1 SKU 在 Azure 订阅中不可用, 请选择其他计划,例如 S1 (标准版)。
az webapp create
运行以下命令,创建三个应用服务实例,每个应用服务实例对应一个开发、测试和过渡环境。az webapp create \ --name tailspin-space-game-web-dev-$webappsuffix \ --resource-group tailspin-space-game-rg \ --plan tailspin-space-game-asp \ --runtime "DOTNET|6.0" az webapp create \ --name tailspin-space-game-web-test-$webappsuffix \ --resource-group tailspin-space-game-rg \ --plan tailspin-space-game-asp \ --runtime "DOTNET|6.0" az webapp create \ --name tailspin-space-game-web-staging-$webappsuffix \ --resource-group tailspin-space-game-rg \ --plan tailspin-space-game-asp \ --runtime "DOTNET|6.0"
出于学习目的,此处将相同的应用服务计划 B1 Basic 应用到每个应用服务实例。 在实践中,你将分配一个与预期工作负荷匹配的计划。
az webapp list
运行以下命令,列出每个应用服务实例的主机名和状态。az webapp list \ --resource-group tailspin-space-game-rg \ --query "[].{hostName: defaultHostName, state: state}" \ --output table
记下每个正在运行的服务的主机名。 稍后验证工作时,将需要这些主机名。 下面是一个示例:
HostName State ------------------------------------------------------- ------- tailspin-space-game-web-dev-21017.azurewebsites.net Running tailspin-space-game-web-test-21017.azurewebsites.net Running tailspin-space-game-web-staging-21017.azurewebsites.net Running
作为可选步骤,请转到一个或多个列出的名称,以验证它们是否正在运行,并显示默认主页。
你将看到此页面:
重要
此模块中的清理 Azure DevOps 环境页面包含重要的清理步骤。 清理有助于确保在完成本模块后不会为 Azure 资源付费。 即使未完成此模块,也务必要按照清理步骤操作。
在 Azure Pipelines 中创建管道变量
在 Azure Pipelines 中的“运行功能测试”中,为每个应用服务实例添加了一个变量。 这些实例对应于管道中的开发、测试和过渡阶段。 在这里,你将遵循相同的模式。
管道配置中的每个阶段都使用变量来标识要部署到的应用服务实例。
若要添加变量,请执行以下操作:
在 Azure DevOps 中,转到 Space Game - Web - 非功能测试 项目。
在“管道”下,选择“库”。
选择“+ 变量组”。
对于变量组名称,请在 “属性”下输入 “发布”。
在“变量”下,选择“添加”。
对于变量的名称,请输入 WebAppNameDev。 输入与“开发”环境对应的应用服务实例的名称作为它的值,例如 tailspin-space-game-web-dev-1234。
重复步骤 5 和步骤 6 两次,为测试和过渡环境创建变量,如下表所示:
变量名称 示例值 WebAppNameTest tailspin-space-game-web-test-1234 WebAppNameStaging tailspin-space-game-web-staging-1234 请务必将每个示例值替换为与环境相对应的应用服务实例。
重要
请确保设置应用服务实例的名称,而不是其主机名。 在此示例中,你将输入 tailspin-space-game-web-dev-1234 ,而不是 tailspin-space-game-web-dev-1234.azurewebsites.net。
若要将变量保存到管道,请选择页面顶部附近的 “保存 ”。
变量组如下所示:
创建开发、测试和过渡环境
在 Azure Pipelines 中的“运行功能测试”中,你为开发、测试和过渡环境创建了环境。 在这里,你将重复此过程。
创建开发、测试和过渡环境:
在 Azure Pipelines 中,选择 “环境”。
若要创建 开发 环境,请执行以下步骤:
- 选择“创建环境”。
- 在 “名称”下输入 dev。
- 将其余字段保留为默认值。
- 选择 创建。
若要创建 测试 环境,请执行以下作:
- 返回到 “环境” 页。
- 选择“新建环境”。
- 在 “名称”下输入 测试。
- 选择 创建。
若要创建 预备 环境,请执行以下操作:
- 返回到 “环境” 页。
- 选择“新建环境”。
- 在“名称”下输入“staging”。
- 选择 创建。
创建服务连接
在这里,你将创建一个服务连接,使 Azure Pipelines 能够访问 Azure 订阅。 Azure Pipelines 使用此服务连接将网站部署到应用服务。 在上一模块中创建了类似的服务连接。
重要
请确保在同一Microsoft帐户下登录到 Azure 门户和 Azure DevOps。
在 Azure DevOps 中,转到 Space Game - Web - 非功能测试 项目。
从页面底部角,选择 “项目设置”。
在“管道”下,选择“服务连接”。
依次选择“ 新建服务连接”、“ Azure 资源管理器”、“ 下一步”。
在页面顶部附近,选择“服务主体(自动)”。 然后选择下一步。
填写以下字段:
领域 价值 范围级别 订阅 订阅 你的 Azure 订阅 资源组 tailspin-space-game-rg 服务连接名称 资源管理器 - Tailspin - Space Game 在此过程中,系统可能会提示你登录到Microsoft帐户。
确保选择 “授予对所有管道的访问权限 ”。
选择“保存”。
Azure DevOps 执行测试连接,验证它是否可以连接到 Azure 订阅。 如果 Azure DevOps 无法连接,则可以再次登录。