微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

文章目录

实现效果

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

环境

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

步骤

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

生成公私钥

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

Github 配置

  • 创建项目的 Secrets。Secrets 即在 action 中可以直接引用的变量(经过加密)。

Image.png

  • 创建 Secrets 变量 - Name: DEPLOY_KEY。用于存储生成的私钥。
    • 本地查看上文生成的私钥。
cat ~/.ssh/deploy_key
  • 复制私钥内容到 Secrets 变量 - Value。(注意:BEGIN END 部分同样需要复制)

Image.png

  • 创建 Secrets 变量 - Name: USERNAME。用于存储登录服务器的用户名
  • 创建 Secrets 变量 - Name: HOST。用于存储登录服务器的 IP 地址。
  • 最终 Github 上项目 Secrets 变量的结果。

Image.png

服务器配置

  • 本地查看上文生成的公钥。
cat ~/.ssh/deploy_key.pub
vim ~/.ssh/authorized_keys

代码配置

name: Depoly Action

on:
  push:
    branches: [ master ]

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

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

    - name: Prepare For Django
      uses: webfactory/[email protected]
      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

参考资料

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐