Github-Action使用PHP
编写一个发送Slack消息的PHP脚本,然后将这个脚本转换为Github操作。创建一个新文件夹slack-php
,用命令code .
打开这个新的空文件夹,在vscode中这个文件夹下新建文件script.php
。要发送http请求,这里要使用一个Github Action的一个包Requests
,它使得Github发送http请求更容易,为了使用这个包,将使用composer
,它是一个php包管理器,composer就像是php中的npm。
下载安装composer
在win中下载composer.exe文件进行安装时,要先安装微软常用运行库合集和下载安装php包,下载(VS17 x64 Non Thread Safe (2024-Nov-20 11:18:14)下面的.Zip
版本,然后解压就可以了。在安装composer时,选择php的路径,选中php存放的路径就可以了。
在项目中安装Requests
在打开项目的vscode的终端输入命令composer require rmccue/requests
下载安装requests包,如:D:\github-Action\slack-php> composer require rmccue/requests
,安装完成后会在项目文件夹下生成2个文件(composer.lock,composer.json)和一个文件夹(vendor),打开composer.json
可以看到文件的版本号。
在slack中创建Webhooks
先注册一个slack网站的帐号登录,登录后创建一个工作区,第一步你公司或团队的名称是什么?这里你可以随便给工作区取一个名称;第二步你的姓名是什么?这个随便填;第三步,点击跳过这一步;第四步你的团队现在在做什么?这里填写你想创建的频道名称#,随便填写。完了后点击开始使用免费套餐。
创建APP
在工作区主页面中,点击刚建立的Slack工作区下拉菜单,点击工具和设置—>点击管理应用。在应用管理页面点击浏览、管理、构建中的构建创建一个新的应用,接着Create an App,选择**From a manifest
Use a manifest file to add your app’s basic info, scopes, settings & features to your app.**—>接下来是要选择一个工作,如果你只有一个工作区,选中即可。如果你有2个以上,就选择一个你想在其工作区上开发应用的一个。——>Next—>Next,完成创建app。
激活Webhooks
创建一个应用程序后,点击左边菜单栏中的IncomingWebhooks,在右边打开滑块off,使其滑块在on上,点击下面的Add New Webhook to Workspace,选择一个频道以发布应用,选择**#所有-Slack工作区,点击允许,这样webhooks就创建完成了。下面的Webhook URL**等下要用到。
使用Repuests
在项目根目录中,新建一个名为script.php的文件,添加代码:
<?php |
- 使用
require_once vendor/autoload.php
方式加载包。 - 通过
Requests::register_autoloader();;
来初始化requests包 - 创建一个新变量
$response
,然后用pos
来调用上面的Webhook URL
- 第二个参数是标题数组,里面填写发送的Heah头信息。
- 第三个参数,可以传递数据,它是一个带有“text:”的json
var_dump($response);
记录响应。
然后运行这个文件。在终端中输入php script.php
,在网站slack上的slack工作区的频道下的“所有-slack工作区”下的Demo App应用下就会收到一条some message信息,这条信息是我们上面的代码`’text’ => ‘some message’发送的。
在刚才发送php script.php
命令的vscode终端往上查找["success"]=> bool(true)
,如果这个为真说明代码执行成功,如果为Felse说明失败。
所以我们可以利用success
在代码中添加检查,如果执行不成功,则回显error
。我们将上面代码中的url后面随便添加几个英文字母,使url不正确,再发送php script.php
命令时,就会在执行后的回显中出现error
,如果将echo 'error'
改成echo $response->body
,就可以在这里得到实际的响应。
在GithubAction使用Docker中运行上面的脚本
当使用webhook发送slack信息时,不仅可以发送一些文本,还可以发送一些具有格式,按钮、并且还可以是交互式的等,因此,在slack消息生成器中,可以利用slack工具构建我们的消息模板,然后它会生成一些模板,这是可以在请求中发送的json,信息将按照我们设计的方式进行格式化。
打开网页选择第一个模板Farmhouse Thai Cuisine点击上面的Templates,在新页面中选择第一个点击Use Message Template,然后选择右边的代码复制粘贴到vscode上并修改如下:
<?php |
发送测试命令php script.php
并在Slack工作区的频道下-所有-slack工作区看demo App的运行结果。