前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GitHub Actions 真香系列之scp和ssh

GitHub Actions 真香系列之scp和ssh

作者头像
沈唁
发布2023-07-05 11:37:38
5680
发布2023-07-05 11:37:38
举报
文章被收录于专栏:沈唁志沈唁志

虽然现在有 k8s 作为部署服务,但也有一部分的业务还是使用传统的方式,在服务器上使用 LNMP 进行部署 Web 站点。

此文就是为了解决部署问题产出的,场景如下:

  1. 研发使用 Git 进行开发协作;
  2. 提交后需要持续部署测试环境;
  3. 迭代完成后需要上线;
  4. 并不是所有研发都有服务器环境;
  5. 生产环境有固定站点目录,没有使用 Git 拉取代码,共享目录,使用 Docker 部署;
  6. 原有的部署服务有些复杂。

测试环境

测试环境目前也相当于我的开发环境,只是数据库做了区分,一个是本地,一个是云数据库。

本地开发时使用 PhpStorm 自带的 ftp 功能进行上传。

当其他研发 push 代码以后,再使用 webhook 来进行 pull 操作。

这里的 webhook使用了我开发的 sy-records/git-deploy,自动拉取代码,支持 GitHub、Gitee、GitLab 和 Gitea。

需要依赖 PHP 和 Swoole 环境,如果没有,也可以直接使用 swoole-cli 来启动。

生产环境

部署生产环境之前,需要进行打包的一些操作,这个也放在 Actions 中进行实现了,但是问题出在了如何部署上。

最开始想着配置一下公私钥之类的,然后再进行拷贝、解压缩。

尝试了一下不太行,于是问了一下同事,推荐了一个 ssh-action,用于执行远程 ssh 命令。

代码语言:javascript
复制
name: remote ssh command
on: [push]
jobs:

  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
    - name: executing remote ssh commands using password
      uses: appleboy/ssh-action@v0.1.10
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        password: ${{ secrets.PASSWORD }}
        port: ${{ secrets.PORT }}
        script: whoami

这个 action 可以通过密码或者私钥执行远程 ssh,具体用途可以自行考虑,对我来说可以进行解压缩之类的操作,但是我最后也没用这个。

翻了一下这个作者的 GitHub,发现还有一个 scp-action,这个就比较符合我的需要了:将压缩好的代码包,拷贝到另外一台 download 的机器上,再从生产环境进行下载,然后解压进行部署。

代码语言:javascript
复制
scp $(PROJECT)-$(COMMIT).tar.gz lufei@example.com:/home/lufei/workspace/download/web

换成 action:

代码语言:javascript
复制
- name: copy file to download
  uses: appleboy/scp-action@v0.1.4
  with:
    host: ${{ secrets.HOST }}
    username: ${{ secrets.USERNAME }}
    password: ${{ secrets.PASSWORD }}
    port: 22
    source: '*.tar.gz'
    target: '/home/lufei/workspace/download/web'

以上也简化了不少操作,现在部署只需要去服务器上,执行一个 PHP 脚本,写入 download 的链接就可以进行部署。

当然也可以直接基于 ssh-action操作部署了,但是出于其他原因限制,就手动执行了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鲁飞 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 测试环境
  • 生产环境
相关产品与服务
持续部署
CODING 持续部署(CODING Continuous Deployment,CODING-CD)用以管理软件在经过构建之后的发布和部署交付过程,可以无缝对接上游 Git 仓库、制品仓库实现全自动化部署,同时支持 Webhook 等外部对接能力,方便集成各种开发、运维工具。在配以合适的技术架构、运维工具的基础上,可以方便地实现蓝绿发布、灰度发布(金丝雀发布)、滚动发布、快速回滚等功能。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档