【51CTO.com快译】构建现代应用程序绝非按F5键后开始构建这么简单。代码只是整个过程的一部分。构建有效的CI/CD(持续集成/持续交付)服务是培育DevOps文化及自动化管理软件开发生命周期的关键部分。
自动化是整个过程的重要方面。你只需签入更新或合并pull request,就能够运行测试、驱动构建、包装代码甚至部署代码。微软旗下的GitHub之类的工具对公共代码和私有代码而言都变得越来越重要,我们围绕它们构建的工作流程是自动构建软件的关键。
GitHub Actions简介
GitHub最近发布了GitHub Actions自动化工具的正式版。与Jenkins或Travis等以构建为中心的CI/CD工具不同,GitHub Actions专注于你的代码。这种方法不仅对GitHub来说很有意义,而且对开发人员来说比其他工具更有效。你可能已经在使用基于Git的开发工作流程,使用分支、pull request、代码审查和合并来管理开发团队协作开发应用程序的方式。
GitHub Actions是一种基于事件的工作流程服务,它使用常见的GitHub事件在GitHub内部或在其他开发工具中触发操作。GitHub中托管的代码可以在GitHub托管的环境中加以测试和运行,你也可以在自己的环境中托管自己的运行器。执行工作流程步骤时,结果将显示在GitHub视图中,你可以按照自己的步调逐步执行。
你可以用YAML编写工作流程,一系列作业(job)与触发器相关联。作业可以串行或并行运行,因此如果你适当调整GitHub Actions,可以显著加快速度。因而获得的工作流程描述易于阅读;由于它是代码,你可以在GitHub中存储和管理各种Actions。入门工作流程库有助于加快开发流程的自动化。
GitHub Actions与Azure结合使用
微软一直在开发一套与Azure结合使用的GitHub Actions,现在这些也有了正式版。最初的一套专注于将工件从GitHub部署到Azure。由于托管在GitHub存储库中,最好将它们视作一系列Actions的端点,拿来构建好的代码和容器后交付给Azure的平台服务。一组将GitHub Actions与Azure App Services整合起来,另一组控制部署到Azure Kubernetes Services的工作。你可以将Azure CLI用作运行器,使用GitHub Actions触发管理Azure资源的脚本。其他操作包括管理Azure数据库以及构建和部署Azure Functions。
你先需要使用预生成的服务原则登录到Azure。 GitHub Actions包括自己的秘密存储区,因此你可以使用Azure CLI创建令牌,然后将其复制到Action的存储区中,用于将来的每个连接。将一个令牌放在安全存储区中降低了风险,同时仍让Actions可以自动执行与Azure的交互。额外的登录操作将管理连接至AKS和Azure容器注册中心的工作。
从GitHub Action部署到Azure App Service支持使用常见的存档格式或使用容器。值得一提的是,微软的操作确实依赖其他GitHub Actions,比如为你的代码创建.NET环境。
微软提供了一组入门GitHub Actions for Azure,帮助你将它们整合到开发工作流程中。示例代码显示了GitHub Actions for Azure如何运行以及它们如何与其他Actions协同运行。已发布的YAML显示了一系列GitHub的自有操作,比如处理存储库签出,以及在通过其中一个GitHub Actions for Azure部署代码之前安装Node.js运行器以构建和测试代码。
实际的部署很简单;只需要存储的秘密和应用程序名称。秘密可以是发布配置文件登录信息;如果是较复杂的部署(交付容器),你可以使用一组服务原则,并登录到Azure帐户。你的Actions完成后,别忘了退出!
自动化管理CI/CD比较有意思的方面之一可能是,我们不仅限于一个平台。我们正在使用开放的API将服务器和服务连接在一起。自动化可以从Visual Studio开始,通过GitHub Actions继续下来,然后进入Azure Pipelines,之后将构建工件存储在GitHub存储库中。混合搭配的功能很关键。我们不仅限于一种做事方式;我们可以选择工具并以最适合我们工作流程的方式来配置它们。如果你需要在开发的某个环节使用Jenkins,就可以使用它,与Azure DevOps或你环境中的其他任何平台一起使用。
本质上讲,这是一种全然不同的管理应用程序开发的方式,现在由我们的源代码存储库推动。这导致GitHub重新考虑其在开发生态系统中的作用,因为它显然不再是我们仅仅存储和审查代码的平台。
代码归档千年
GitHub立足于搜索和索引数百万行公共代码的能力,正利用该专长来试图使我们构建的代码更安全,并添加集成的工具,以便及早发现安全问题、进行安全报告以及管理公共存储库中的安全事件。现在,我们的代码依赖许多不同的开源开发团队,这需要使用今年早些时候GitHub从Dependabot获得的工具来自动修复依赖项问题。
GitHub在代码生态系统的核心扮演重要角色,现计划将你的代码保存数百年、甚至数千年。作为该计划的一部分,它最近在靠近全球种子库的斯瓦尔巴德矿山保存了第一批代码。由于放在北极氧气稀薄的岩石深处,光学编码数据存储罐至少可以保存500年。该项目的下一阶段将在2020年2月2日将所有公共存储库做成映像,存储在同一个保管库中。
GitHub正在考虑其他代码归档方法,与Long Now Foundation、牛津大学博德利图书馆和互联网档案馆等组织合作,不仅保存我们的代码,还保存我们围绕代码建立的社交网络和讨论内容。甚至可能使用微软研究院的Project Silica基于3D玻璃的存储技术来创建寿命更久的档案。
IT行业的历史还不到一个世纪,而我们已经在建立可以保存数千年的代码库。这标志着软件和开发的重要性及其对文明的意义。对于开发人员来说,责任重大。
原文标题:Use GitHub Actions to deploy code to Azure, 作者:Simon Bisson
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】