
以gitlab机器人为例,我将展示如何通过从git存储库自动更新无服务器功能的发布过程来实现自动化。 我们从游戏过渡到无服务器的实际开发。
什么是gitlab机器人?
想象一下,您需要自动化反应过程以在跟踪器中创建任务/错误,例如Gitlab(问题)或Jira。 您可能需要根据标签自动添加艺术家,将任务移至特定里程碑,添加评论,或仅关闭讨厌的错误。 使用无服务器功能很容易完成所有这些操作。 例如,我们将注释(Gitlab术语中的注释)添加到新创建的任务(问题)中。
而且由于该bot可以经常更改,因此我们将通过自动将该函数与其所在的git存储库同步来自动释放它。
环境设定
首先,我们需要在Gitlab上创建一个项目。 如果您没有Gitlab帐户,则可以
在此处创建一个帐户。 您可以创建一个新的公共项目,例如,通过单击右上角的
Fork按钮来分叉我的项目
https://gitlab.com/bbelky/gitbotswf 。
为了能够编辑机器人代码,您需要在本地克隆它。 实际上,就本指南而言,我们可以在线进行此操作,但我们将更接近现实生活。 打开您的终端并克隆git存储库。 该链接可以在您的项目
Clone >
Clone with HTTPS的右上角找到。 将其另存为
Gitlab URL ,对我们仍然有用。
git clone <link to your repo> cd gitbotswf/ ls README.md main.go
克隆的存储库中有一个main.go文件。 这是我们用golang编写的机器人。 该机器人非常简单:在创建新任务(问题)时会收到来自Gitlab的Webhook,并为创建的任务添加注释(以Gitlab术语注释)。 main.go中有评论可帮助您确定该机器人的工作方式。 我们将不作更详细的介绍。
不要关闭终端-稍后,我们将需要编辑
main.go文件。
我们还需要创建Gitlab令牌API来访问hitlab API。
- 转到您的Gitlab配置文件> 设置 > 访问令牌。
- 使用api作用域创建一个新令牌。
- 复制它并另存为GITLABTOKEN 。
机器人
是时候创建机器人了。 让我们使用基于无服务器平台
Swifty的机器人代码创建无服务器功能。 如果您还没有Rusonyx Swifty帐户,那么该
创建一个帐户了。 我们希望自动化部署新功能的过程,因此,请按以下顺序进行操作:连接git存储库,基于git代码创建函数,然后将gitlab api令牌放入安全存储库中。
- 登录Swifty并选择存储库
- 单击“ 附加存储库” ,选择Git URL的类型,然后粘贴您的Gitlab URL 。
- 请记住选择自动镜像存储库选项,然后单击完成。
现在,Swifty将每30分钟自动与您的存储库同步(执行git pull)。 现在创建函数本身:
- 转到功能 > 新功能 > 从仓库(模板)选项卡。
- 选择新添加的存储库,例如gitlab.com/bbelky/gitbotswf.git 。 现在,您可以从存储库中看到文件。
- 选择main.go文件,然后单击“下一步”。
- 选择与存储库同步选项,输入gitbotswf函数的名称,然后单击创建 。
现在我们需要一个HTTP API触发器,当调用该函数时将触发:
- 转到触发器 > 添加触发器 > REST API(URL)选项卡。
- 复制生成的URL并将其另存为BOT_URL 。
太好了,现在我们有了一个存储库和一个与其自动同步的功能。 现在,将我们的Gitlab API令牌添加到Swifty帐户-Swifty Accounts,一个安全且加密的密码和令牌存储库。
- 转到帐户 > 创建帐户 。
- 选择一个通用类型。
- 命名GITLABTOKEN并复制您的令牌。 保存。
现在将令牌添加到函数中:
- 转到功能 > gitbotswf函数> 访问 ,然后单击添加 。
- 选择类型Accounts , GITLABTOKEN ,然后单击Add 。
打开webhook
在最后阶段,我们需要在Gitlab上创建一个Webhook,该Webhook在每次创建新Issue时都会触发。 让我们继续到Gitlab。
- 选择项目> 设置 > 集成 。
- 将以前保存的BOT_URL添加到URL字段。
- 选中发布事件旁边的框,然后点击添加webhook 。
测验
让我们转到Gitlab上的项目,在
Issues选项卡上,创建一个新
Issue 。 检查评论。 是的 如果一切正常,那么我们将看到注释
“感谢您报告新问题!” 。 如果某处发生错误,请在此处询问我们或在
插槽中提问。
机器人的更新和自动发布
如果我们需要更新我们的机器人怎么办? 多亏了与git的集成,您所需要做的就是更新代码(例如更改注释文本),在Gitlab中运行代码,Swifty将自动更新您的功能!
因此,在终端中打开
main.go文件并更改
note变量:
note := "Comments%20changed!"
更新git:
git add * git commit -m "changes" git push origin master
去无服务器!