创建Azure Linux VM GitHub自托管跑步者教程

需积分: 5 0 下载量 150 浏览量 更新于2024-12-26 收藏 14KB ZIP 举报
资源摘要信息: "org-github-runners" 知识点概述: 1. Terraform模块及其在云资源管理中的作用 2. 创建Azure Linux虚拟机(VM)和相关云基础设施的实践 3. 使用Terraform在多个Azure订阅中部署资源的方法 4. GitHub自托管跑步者(GitHub Runners)的概念和使用场景 5. GitHub身份验证流程及相关安全措施 6. Terraform Cloud与本地执行环境的对比和使用场景 详细知识点说明: 1. Terraform模块 Terraform是一个开源基础设施即代码(IaC)的工具,它允许用户使用声明性配置文件来定义和部署云基础设施。模块是Terraform配置中的一个基本构件,它可以让用户封装一组资源,以简化复杂配置的重复使用。在本例中,所提及的Terraform模块旨在创建Azure Linux虚拟机、虚拟网络以及可选的堡垒主机。 2. Azure Linux VM和云基础设施 Azure是微软提供的一个云服务平台,通过Terraform模块创建的Linux虚拟机可运行各种Linux发行版。虚拟网络(VNet)是Azure中用于资源间通信的私有网络。堡垒主机是位于不同安全区域之间,提供额外安全层的主机,用于集中管理和过滤进出网络的通信。 3. 多个Azure订阅中的资源部署 在多个Azure订阅中部署资源时,可以将Terraform配置作为模块来重复使用,从而实现跨订阅的标准化和自动化。每个订阅的Terraform模块可以根据不同的业务需求和安全策略进行配置。 4. GitHub自托管跑步者 GitHub自托管跑步者是GitHub Actions的功能之一,它允许用户在自己的服务器或虚拟机上运行工作流。与GitHub托管的跑步者(GitHub-hosted runners)不同,自托管跑步者提供了更灵活的环境配置选项和对特定硬件要求的支持。 5. GitHub身份验证流程 当添加新的GitHub自托管跑步者时,需要使用一个特殊的GitHub访问令牌进行身份验证。这个令牌有时限(本例中为一个小时),并且不能有效地存储在Terraform变量中。因此,Terraform模块需要能够执行HTTP调用GitHub API以在需要时重新生成或验证令牌。 6. Terraform Cloud与本地执行环境的对比 Terraform Cloud提供了管理远程Terraform执行环境的能力,适合持续集成的场景。然而,在不频繁执行任务的情况下,可能需要在本地环境中运行Terraform命令。本地执行环境提供了更高的灵活性,特别是在网络限制和访问控制方面。 7. 变量和敏感数据管理 由于令牌具有时效性且不应暴露,因此敏感数据管理和变量的存储变得尤为重要。Terraform Cloud允许将敏感信息存储在安全的变量中,并且可以在多个工作流中重复使用。在本地环境中,需要额外关注敏感数据的安全存储和保护。 8. 使用Docker容器执行Terraform 在本例中提到的从Docker容器中执行Terraform,这是一种确保执行环境一致性的好方法。通过Docker容器,可以预先定义好执行Terraform所需的所有依赖和配置,从而简化跨不同环境的部署和管理。 通过上述知识点,可以深入了解如何利用Terraform在Azure上部署和管理GitHub自托管跑步者。同时,也涵盖了与GitHub身份验证相关的关键安全措施和最佳实践。

package com.sgave.mall.db.service; import com.github.pagehelper.PageInfo; import com.sgave.mall.db.domain.SmartmallComment; import org.junit.*; import org.junit.jupiter.params.ParameterizedTest; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.TestContextManager; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.junit4.rules.SpringClassRule; import org.springframework.test.context.junit4.rules.SpringMethodRule; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.Arrays; import java.util.Collection; import java.util.List; import static org.junit.Assert.*; @SpringBootTest @RunWith(SpringRunner.class) /*@RunWith(Parameterized.class)*/ @Transactional public class SmartmallCommentServiceTest { @Autowired private SmartmallCommentService scs; @Before public void setUp() throws Exception { TestContextManager testContextManager = new TestContextManager(getClass()); testContextManager.prepareTestInstance(this); SmartmallCommentService scs = new SmartmallCommentService(); } @After public void tearDown() throws Exception { scs=null; } @Test public void query() { Byte type = (byte)0; Integer valueId = 9008001; Integer showType = 2; Integer offset = 0; Integer limit = 1; /*List<SmartmallComment> comments = scs.query(0,9008001,0,0,5);*/ /*List<SmartmallComment> comments = scs.query(1,9008002,1,0,5);*/ /*List<SmartmallComment> comments = scs.query(1,9008001,3,0,5);*/ if (showType == 0 || showType == 1) { List<SmartmallComment> comments = scs.query(type,valueId,showType,offset,limit); long act=PageInfo.of(comments).getTotal(); if (showType == 0) { long exp = 2; assertEquals(exp,act); } else if (showType == 1) { long exp = 1; assertEquals(exp,act); } }else { String exp="showType不支持"; String act = assertThrows(RuntimeException.class,() ->scs.query(type,valueId,showType,offset,limit)).getMessage() ; assertEquals(exp,act); } } }中各代码的意思

220 浏览量