当前位置:   article > 正文

【实战知识】使用Github Action + Nginx实现自动化部署

【实战知识】使用Github Action + Nginx实现自动化部署

大家好啊,我是独立开发豆小匠。

先说一下背景~

我的小程序:豆流便签,目前使用云托管部署后端服务,使用轻量级服务器部署数据库和一些中间件。

因此服务器成本:云托管 + 云服务器

云托管每周花费5元,一个月就是50,一年就是500啊,所以这期准备把云托管优化掉!


1. 需求分析

使用云托管的好处是很明显的,可以推送代码后自动化部署。如果转移到云服务器,怎么延续自动化部署的开发体验咧,主要的需求如下:

  1. 自动化部署test分支
  2. 自动化部署master分支
  3. 部署期间服务可用

其中第2、3点都是云托管有的功能,第1点云托管也可以做到。但是,得加钱!也就是多开一个服务。

2. 实现思路

img

实现主要依赖于GitHub提供的Action workflow工作流和Nginx的自动分发、故障转移。

3. 具体实现

3.1. GitHub Action

简单介绍下Github Action,它允许通过配置文件来自动构建测试部署项目等。

我们本次编写deploy.yml文件定义一个自动化部署的工作流,实现的效果:推送master/test分支到GitHub后,连接云服务器,执行部署脚本

首先在项目根目录创建文件夹.github/workflows,然后新建文件deploy.yml,文件内容如下

name: Build and Deploy

on:
  push:
    branches: [master]	# 触发任务的分支

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Build and run Go program
        uses: appleboy/ssh-action@master
        with:
          host: ${
   {
    secrets.HOST_MILK }}	# 服务器地址 @1
          username: ${
   {
    secrets.HOST_ROLE }} # 登陆用户名 @2
          key: ${
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/69172
推荐阅读
相关标签
  

闽ICP备14008679号