草庐IT

如何通过云效进行函数计算(FC)发布

云效DevOps 2023-03-28 原文

一、背景

如果您使用的是函数计算(FC),要将您的代码部署到函数计算,并以事件驱动的方式触发函数执行。那么本文档可以帮助您实现研发流程的协同自动化。云效持续集成流水线 Flow,是企业级持续集成和持续交付工具,通过构建自动化、集成自动化、验证自动化、部署自动化,完成从开发到上线CICD过程。通过持续向团队提供及时反馈,让交付过程高效顺畅。 

二、云效解决方案

通过云效持续交付流水线和函数计算(FC)很好的结合在一起,为应用的持续交付提供了很好的基础保障,如下图:
 
 
开发者提交代码变更到代码库,云效在监听着代码库的变动,一旦代码发生变化,将自动触发流水线一次构建任务的运行,流水线会自动拉取您更新的代码分支,并发布到您的 FC 函数服务上。这一切,都是通过自动化的手段进行完成,您无需再手动下载代码文件并打包上传至您的 FC 函数服务。
 

三、云效操作实践

目前云效支持您通过三种方式发布至函数计算:
 
1.直接通过代码仓库的源码发布。
 
2.通过 OSS 上传发布,适合需要在 OSS 上对您每次发布的源码文件进行存储管理的场景。要使用这类发布方式,您需要在发布前在云效里将您的源码文件打包后上传至 OSS。
 
3.通过镜像发布,适合您的函数服务运行环境为自定义环境 custom-container,需要通过镜像来发布您的函数服务的场景。要使用这类发布方式,您需要在发布前在云效里进行镜像构建并推送至阿里云容器镜像服务(ACR)。
本文主要介绍第一种方式,直接拉取源码发布至函数计算服务。
 
1、创建流水线
 
  • 进入云效,点击页面左上角的dock,选择流水线进入Flow
说明 立即体验:云效流水线Flow
 
 
  • 点击右上角【新建流水线】,进入流水线创建向导页面。
 
 
  • 选择空模板,并点击创建
 
 
2、配置代码库
 
创建流水线之后会自动弹出添加代码源的窗口,这里选择你的代码源,并进行添加。本文添加的是 Flow 的 FC 示例代码源(https://code.aliyun.com/flow-example/fc-node-sample.git)。
 
 
3、配置 FC 发布任务
 
删除多余的“空任务”,点击添加新的任务组”函数计算应用发布”。
 
 
点击“新建服务授权”,完成服务授权后,选择您 FC 的服务名和函数名,填写您的代码路径名,完成 FC 发布任务配置。
 
 
4、添加人工卡点
 
为了保证经过审批的制品才能进入部署环境,需要添加一个人工卡点,这里假设这个环境是测试环境,需要有测试管理员来审批才能进入。
 
首选需要在企业中创建一个角色”测试管理员“,并将企业用户”张三”的角色设置为该角色。
 
 
 
然后回到流水线继续进行配置,在 FC 发布前面添加一个任务,搜索”人工卡点“,并按照角色进行配置:
 
 
 
 
5、运行流水线
 
配置完毕,点击”保存并运行”触发流水线:
 
流水线停在了卡点上,普通人员无权限通过,切换到张三的账号之后,可以通过或者拒绝。
 
 
 
点击”验证通过“,流水线会进入 FC 发布的任务。
 
 
6、通知
 
为了更好的进行协作,Flow提供了通知能力在流水线不同的生命周期节点上进行通知。一般来讲开发团队会关心部署的成功和失败,那么可以将该事件推送到团队的钉钉群中,配置方式如下,点击”添加插件”,选择钉钉机器人通知,填入webhook地址,运行时机选择”失败“,”成功”
 
 
再次运行之后,就会收到相应的通知:
 
 
本文主要介绍直接拉取源码发布至函数计算服务。帮助您实现研发流程的协同自动化。云效持续集成流水线 Flow,是企业级持续集成和持续交付工具,通过构建自动化、集成自动化、验证自动化、部署自动化,完成从开发到上线CICD过程。通过持续向团队提供及时反馈,让交付过程高效顺畅。
 

关于我们

了解更多关于云效DevOps的最新动态,可微信搜索关注【云效】公众号

彩蛋:公众号后台回复【指南】,可获得《阿里巴巴DevOps实践指南》&《10倍研发效能提升案例集》

看完觉得对您有所帮助别忘记点赞、收藏和关注呦

有关如何通过云效进行函数计算(FC)发布的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  4. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  5. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  6. ruby-on-rails - 按天对 Mongoid 对象进行分组 - 2

    在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev

  7. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  8. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  9. ruby - 通过 rvm 升级 ruby​​gems 的问题 - 2

    尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub

  10. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

随机推荐