基于 SCF 通过 webhook 完成项目部署

基于 SCF 通过 webhook 完成项目部署

通过 python 的 paramiko 使用 SSH 链接到服务器上面,避免了使用 PHP 等方式需要设置繁琐的权限问题

创建 ssh key

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ ssh-keygen -t rsa -C "hong@hongfs.cn" # 这里要写你的邮箱,然后一直回车就可以了
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:P0loplFOUzyaHe1v8gHGA52HEyK4cJsACSKV3feEk hong@hongfs.cn
The key's randomart image is:
+---[RSA 2048]----+
|=+.oo oE*o. |
|=... o.B+BB |
|. . * X* * |
| Boo= . |
| . S .o |
| = o..+ |
| . ++ . |
| .. |
| |
+----[SHA256]-----+

Enter file in which to save the key 意思是生成的文件放哪里

创建完后我们需要把生成的 ssh key 放到 github 上面的 deploy keys

点击右上角的 Add deploy key,把我们生成的 ssh key 放进去,然后保存。

现在需要拉取 github 到本地来,记得使用 ssh 方式别用 https

1
2
3
4
5
6
$ git clone git@github.com:hongfs/webhook-test.git
Cloning into 'webhook-test'...
The authenticity of host 'github.com (52.74.223.119)' can't be established.
RSA key fingerprint is SHA256:nThbg6XUpJWGl7E1IGOCspRomTxdCARLviw6E5SY8.
RSA key fingerprint is MD5:16:xq:ac:a5:76:28:2d:36:wv:1b:56:4d:ea:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes

登陆到腾讯云 SCF 控制台,创建一个新函数,然后将下面压缩包上传上去。接下来需要配置一下环境变量

源码下载

这个压缩包除了 index.py 其他都依赖来着 pip3 install paramiko cryptography -t /path/to,如果你要自己打包需要在 Linux 环境下进行,然后通过 zip -r code.zip . 来进行一个压缩。

1
2
3
4
5
server_host=        # 服务器IP
server_port= # 服务器端口
server_username= # 服务器用户
server_password= # 服务器密码
site_root= # 站点目录

设置 github webhook

最后我们需要测试下是否成功,我们可以添加或者修改个文件看看会不会触发,如果会触发在去查看服务器目录有没有更新。

往上