练习 - 设置 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 项目。
当系统提示输入模板列表中的模板编号时,输入 32 以用于 在 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 项目都设为“专用”。
稍后,你会发现以下资源有助于确定哪个选项最适合你的项目:
将工作项移动到“正在执行”状态
在本部分中,你将在 Azure Boards 中为自己分配一个与此模块相关的工作项。 还可以将工作项移动到 “正在执行 ”状态。 实际上,你的团队会在每个冲刺或工作迭代开始时创建工作项。
以这种方式分配工作会为你提供一个工作清单。 它使你的团队能够了解你正在处理的内容以及剩余的工作量。 它还有助于团队对正在进行的工作实施限制(WIP),以避免一次承担太多工作。
请注意,团队确定了当前冲刺的这些优先问题:
注释
在 Azure DevOps 组织中,工作项是按顺序编号的。 在你的项目中,每个工作项的数字可能与你在此处看到的内容不匹配。
在这里,将第三项“ 自动执行质量测试”移动到 “执行 ”列。 然后,将自己分配到该工作项。 自动化质量测试 是指对 Space Game 网站进行 UI 测试的自动化。
设置工作项:
从 Azure DevOps 转到 Boards,然后从菜单中选择 Boards 。
在 “自动执行质量测试 ”工作项上,选择卡片底部的向下箭头,然后将工作项分配给自己。
将工作项从"To Do"列移动到"正在执行"列。
在本模块结束时,完成任务后,将卡片移动到 “完成 ”列。
在本地设置项目
在这里,你将在 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 命令。
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)。
选择 代码。 然后从“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 上的存储库。 对另一个存储库中的代码创建分支时,通常将原始远程库(之前从中创建分支的库)命名为“upstream”。
运行以下
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 Pipelines 模块创建多阶段管道中,使用 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 "DOTNETCORE|8.0" az webapp create \ --name tailspin-space-game-web-test-$webappsuffix \ --resource-group tailspin-space-game-rg \ --plan tailspin-space-game-asp \ --runtime "DOTNETCORE|8.0" az webapp create \ --name tailspin-space-game-web-staging-$webappsuffix \ --resource-group tailspin-space-game-rg \ --plan tailspin-space-game-asp \ --runtime "DOTNETCORE|8.0"
出于学习目的,请将相同的应用服务计划(B1 基本版)应用到此处的每个应用服务实例。 在实践中,你将分配一个与预期工作负荷匹配的计划。
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。
在页面顶部附近选择“Save”,将变量保存到管道中。
变量组应如下所示:
创建开发、测试和过渡环境
在使用 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 无法连接,则可以再次登录。