北京可以治疗白癜风的医院 http://www.ykhongye.com/机器之心报道
参与:一鸣、张倩
开发者除了开发程序代码之外,有时候需要面对各种编译、测试和部署过程中的繁琐流程。这些流程往往需要手动完成,且由于不同开发者的开发环境、版本和平台不同,需要专门针对特定的环境定制工作流,因此阻碍了开源代码在社区中的传播。现在,这一切可能会自动化地完成了。近日,GitHubActions,一个让开发者自动化实现定制化工作流逻辑的平台,集成了持续集成和交付(CI/CD)功能,可以让开发者自动化完成一系列工作流。
GitHub今天开源了一个新版GitHubActions的测试版,该版本内置了持续集成和交付(CI/CD)功能。CI/CD是开发人员在同一个项目中将更改合并和集成到代码库中而不产生冲突的一种方法。整个平台计划于11月13日正式发布。
新版Actions的特性包括:
跨平台多语言支持的测试环境自动化代码构建和部署工作流可复用的action和工作流文件实时显示运行结果自动构建集成化的包和容器库基于机器学习的建议工作流对公开代码库免费的定价策略
Actions平台是什么
GitHubActions是微软于年秋季推出的一个平台。这一平台可以让开发者实现定制化的程序逻辑,而不需要专门创建一个应用去完成需要的任务。开发者可以借助Actions平台建立工作流,使用他们代码仓库中定义好的action、或者GitHub公开代码库中的action,甚至是一个公开的Docker容器镜像。action在这里指的是开发、测试、部署和发布代码中的各种流程,举个例子,一个action可以是公开发布某个npm模块,在创建紧急issue时为开发者发送SMS警告,或者部署生产流程中的代码的过程。这些工作流程过去需要开发者自己去手动实现。现在有了Actions平台后,借助Actions平台和GitHub中百万级别的公开库,任何一个开发者都可以直接建立上述工作流程,不需要专门去创建实现这些action的应用了。此外,开发者创建的工作流也可以分享给GitHub社区供其他人使用。
能够实现这样的功能是因为,GitHubActions平台是定制化的,可以使用GitHub的API和任何开源的第三方API,以便于和代码库进行交互。当开发者把存储库中的代码转换成一个action时,只需为它编写一个Docker文件。Docker文件可以被GitHub构建运行,并链接到工作流程中。此外,GitHub还提供了一个可视化编辑器,用于帮助开发者在不使用Docker的情况下构建工作线程。
在年Actions平台刚建立的时候,就已经有很多action保存在GitHub上了,总数已超过万个。海量的公开代码库是GitHub开源这一平台的技术基础。
Actions平台对开发者的意义
对于开发者而言,Actions最大的意义在于自动化了代码开发之外的很多流程。
熟悉GitHub、程序编译、部署、发布流程的开发者朋友应该知道,开发过程中有许多目前无法自动化的环节。例如,在项目开源时,出现了各种issue和merge请求,需要开发者手动管理。在源代码编译为程序时,需要集成各种依赖和相关的库,其中需要管理各种各样的编译流程,为代码创造合适的编译环境。在部署程序前,需要在各个平台和各个版本进行测试,避免发生不兼容等问题。有了Actions平台后,开发者可以自己编写工作流YAML文件,并借助Actions平台完成上述工作。更重要的是,在发布自己的程序后,编译、测试和部署的工作流也可以共享给其他开发者。其他开发者可以直接fork并运行,不再需要繁琐的准备程序运行环境和安装相关依赖。这些都加快了开源代码的传播,使开发者社区有了更紧密的联系和交流。
新版Actions的改进
在开源之初,Actions平台的功能相对有限。首先,最初的公开的Actions只能在Linux平台上使用,而且只支持Docker容器。近日公开的新版本中,Actions支持基本上所有的编程语言,因此也可以在多个平台上使用,如Linux、LinuxContainer、Windows和macOS等。此外,开发者也可以使用Javascript语言编写action的代码。这样一来,受益的开发者更多了。此外,和年公开的版本相比,Actions支持了更多的编程语言,包括主流的开发语言,如Node.js、Python、Java、PHP、Ruby、C/C++、.NET,以及Android和iOS设备上的开发语言。
本次更新后,开发者在任何平台上构建、测试和发布代码并在容器或虚拟机上运行他们的工作流。基于「矩阵构建(matrixbuilds)」功能,开发者可以同时在多个平台测试多个版本的项目,例如,可以同时在Linux、macOS和windows平台上测试三个不同版本的Node.js项目。因为GitHubActions是基于YAML文件构建的,开发者只需要在文件中添加几行代码就可以完成设置,而Actions平台会完成剩下的工作。
另外,Actions平台也集成了一个名为「建议工作流」的功能,由GitHub的机器学习团队和其他公司内部从事自动化工作流开发的团队打造。这一功能会为开发者提供构建工作流的建议。例如,开发者使用了一个node项目,则Actions平台会自动提供针对node项目的工作流建议。而GitHub官方仍在优化这一功能,希望为特定的项目提供特定的工作流建议。
这一功能背后使用了机器学习算法。模型会首先分析公开repo中的代码,并根据代码进行预测。这样一来,当开发者提交了某个代码的时候,机器学习模型就可以预测出这种代码会需要什么样的工作流。
根据官方提供的介绍,机器之心整理了Actions平台的新功能。
用动态日志显示实时运行结果
动态日志可以在程序运行过程中显示结果。GitHub流可以将程序日志导入到Actions的显示框中,实时展示运行过程。
像运行代码那样创建和复用工作流
因为GitHubActions的文件是代码,开发者可以编辑、复用,或者像fork代码那样fork这些文件。特别是当开发者fork了一个代码库的时候,其中的action会和源代码一样被fork。因此开发者可以像代码提供者那样进行测试和编译工作。
如前文所述,action是通过YAML文件进行定义和编辑的,因此开发者也可以在YAML文件中复用其他action和工作流。具体而言,开发者可以引用这些action和工作流,就像是在代码仓库中引用别的代码一样。同样,每个开发者提供的action的文件可以被其他开发者复用,丰富了开发者社区。
对任意事件都可以构建的自动化工作流
同样,GitHubActions可以自动化开发者管理代码时使用的一些工作流。比如审核和管理issue、自动发布新版本等。这些工作流通过GitHub上的事件自动触发,能够贯穿整个开发流程。任何GitHub应用现在都可以添加自己的定制化事件,因此开发者也可以根据需要为自己的每个项目定制不同的流程。
构建集成化的包和容器库
在持续集成和部署中,发布包和容器是关键的一环,特别是发布开源库或部署大型网络服务。GitHubActions简化了发布流程。接入Actions平台的开发者同时也能够接入GitHubPackageRegistry,可以自动化从构建包到部署中间的所有工作流程。
建议工作流
前文提及,为了帮助开发者更快地构建和发布自己的代码,GitHubActions集成了建议工作流功能。这一功能会为每个开发者的项目提供合适的工作流建议,方便上手。
定价策略
对于公开代码库,Actions平台是免费的。对于私有仓库,Actions提供了简单的定价策略,有兴趣的开发者可以注册使用beta测试版并了解价格。
Actions的工作流程演示
根据GitHub官方提供的资料,机器之心整理了使用Actions工具的示例代码。
矩阵构建
建立矩阵构建的action可以让开发者在项目中并行测试多个版本的代码。只需要在Actions的YAML文件中加入几行代码,GitHub平台会代为执行剩余的任务。
如下所示,可以在YAML文件中定义node的版本号(8、10、12),以及运行的平台(ubuntu-latest、windows-latest、macOS-latest),指定需要运行的代码,剩余的工作交由GitHub执行。
jobs:test:name
estonnode${{matrix.node_version}}and${{matrix.os}}runs-on
{{matrix.os}}strategy:matrix:node_version:[8,10,12]os:[ubuntu-latest,windows-latest,macos-latest]steps:-uses:actions/checkout
v1-name:UseNode.js${{matrix.node_version}}uses:actions/setup-nodev1with:version

{{matrix.node_version}}-name:npminstall,buildandtestrun

p>npminstallnpmrunbuild--if-presentnpmtest
微软收购后的GitHub
除了开源新工具以外,GitHub今天还宣布,其平台上已有超过万名开发人员,而年秋季和年这一数字分别为万和万。其用户数量的迅速增长离不开一次又一次的更新。
GitHub是一个面向开源及私有软件项目的托管平台,于年4月正式上线。
年6月,微软宣布要以75亿美元高价收购GitHub,并于10月份正式完成这项交易。微软开发者服务副总裁、Xamarin创始人NatFriedman出任GitHubCEO。
在被微软收购不久之后,GitHub就开启了首次重大变革——提供免费私有Repo。这种定价策略的改变,可以帮助开发者节省很多使用成本。
此外,为了满足用户多元化的需求并提高社区的活跃度,GitHub一直在推出各种更新。
今年5月份,GitHub发布了一项重要更新——GitHubPackageRegistry,它可以帮助开发者们轻松查找、管理和发布确保项目正常运行的软件包,而且对于个人用户是免费的。
在同一个月,为了提高社区的活跃度,GitHub还推出了「打赏」功能——GitHubSponsors。为了启动这一新项目并激发社区打赏积极性,GitHub还推出了GitHubSponsorsMatchingFund,每个开发者第一年最多可匹配到美元的赞助基金。此外,GitHub还表示,为了表示对贡献者的感谢,GitHubSponsors在用户打赏其他开发者时不会收取平台费用。
今年6月份,GitHub推出新功能repositorytemplates,帮助开发者在所有项目中重用代码。该功能操作简单,使用者只需将一个repo标记为template,就可以立即使用repositorytemplate生成新的repo,且新repo具备templaterepo的所有文件和文件夹。
参考链接: