前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >提交即部署 - Github Action 自动化部署

提交即部署 - Github Action 自动化部署

作者头像
星辉
发布2021-12-06 13:12:18
7260
发布2021-12-06 13:12:18
举报

文章目录

实现效果

  • 每次在本地开发测试完成后,push 到 Github 后即自动完成部署。
  • 提高效率,自动化节省手动部署的重复性工作。

环境

本地环境:Mac OS 服务器环境:Ubuntu Server

步骤

  • 生成公私钥。
  • Github 配置。
  • 服务器配置。
  • 代码配置。
  • 查看日志。
  • 畅快享受提交即部署。

生成公私钥

  • 本地环境执行生成公私钥的指令。
代码语言:javascript
复制
ssh-keygen -m PEM -t rsa -b 4096
  • 输入生成 key 的名称。
代码语言:javascript
复制
Enter file in which to save the key (/Users/zero/.ssh/id_rsa):deploy_key
  • 回车,再回车。
  • 生成公私钥成功。

Github 配置

  • 创建项目的 Secrets。Secrets 即在 action 中可以直接引用的变量(经过加密)。
Image.png
Image.png
  • 创建 Secrets 变量 - Name: DEPLOY_KEY。用于存储生成的私钥。
    • 本地查看上文生成的私钥。
代码语言:javascript
复制
cat ~/.ssh/deploy_key
  • 复制私钥内容到 Secrets 变量 - Value。(注意:BEGIN END 部分同样需要复制)
Image.png
Image.png
  • 创建 Secrets 变量 - Name: USERNAME。用于存储登录服务器的用户名。
  • 创建 Secrets 变量 - Name: HOST。用于存储登录服务器的 IP 地址。
  • 最终 Github 上项目 Secrets 变量的结果。
Image.png
Image.png

服务器配置

  • 本地查看上文生成的公钥。
代码语言:javascript
复制
cat ~/.ssh/deploy_key.pub
  • 在 ssh 授权公钥文件中追加上文生成的公钥。
代码语言:javascript
复制
vim ~/.ssh/authorized_keys

代码配置

  • 在代码主目录创建文件夹 .github
  • .github 文件夹中创建文件夹 workflows
  • workflows 文件夹中创建文件 deploy.yml
    • yml 文件中粘贴入如下代码,并更新相应的分支名、部署内容路径、部署位置路径、Django 进程号。(代码中以 master 为例,以自动化部署 Django 项目为例。)
      • 注意代码缩进。
代码语言:javascript
复制
name: Depoly Action

on:
  push:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2

    - name: ssh deploy
      uses: easingthemes/ssh-deploy@v2.1.5
      with:
        REMOTE_HOST: ${{ secrets.HOST }}
        REMOTE_USER: ${{ secrets.USER }}
        SSH_PRIVATE_KEY: ${{ secrets.DEPLOY_KEY }}
        SOURCE: "[部署内容路径(以项目目录为根目录)]"
        TARGET: "[服务器部署位置的绝对路径]"

    - name: Prepare For Django
      uses: webfactory/ssh-agent@v0.5.0
      with:
        ssh-private-key: ${{ secrets.DEPLOY_KEY }}

    - name: Restart Django
      run: ssh ${{ secrets.USER }}@${{ secrets.HOST }} "kill -HUP [Django uwsgi 进程号]"
  • 代码功能解释。
    • 当 git push 到 master 分支时触发以下操作:1. github 虚拟机切换到 master 分支。2. ssh deploy:github 虚拟机通过 ssh 的方式部署项目内容到服务器相应目录。3. Prepare For Django:github 虚拟机将可以访问服务器的私钥放入 ssh-agent 缓存。4. Restart Django:github 虚拟机通过 ssh 的方式执行命令,重启 Django uwsgi 的进程。

查看日志

  • git push 代码到 github。
  • 在 github 项目的 Actions 页面中查看 Action 的运行日志。
Image.png
Image.png

参考资料

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/12/04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 实现效果
  • 环境
  • 步骤
    • 生成公私钥
      • Github 配置
        • 服务器配置
          • 代码配置
            • 查看日志
            • 参考资料
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档