• 欢迎访问佰阅部落
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

如何使用GitHub_WorkFlow自动化控制你的服务器

开发工具 佰阅 3年前 (2020-11-18) 2861次浏览 0个评论

Github WorkFlow是2020年GitHub的重大更新之一,项目开发中往往有大量的时间被浪费在等待,等待构建、等待测试、等待 Review ……而这一切,都可以依靠 GitHub flow 来进行改善。

0. 传统工作流程

假如你熟悉Docker,你可能觉得自己在容器化方面的基础,可以非常快的操刀各种项目而无需担心项目开发环境问题,但如果你不熟悉,则大部分时间浪费在本地开发环境调配。
因此,我们通常会使用python或CMD编写一些本地自动化脚本,来实现一些重复操作。达到这个地步,说明你已经很厉害了,可以忽略线上的自动化构建。

1. GitHub Workflow的优势

海量社区市场,基本上你现在所能想到的基础功能都已实现。比如自动化构建镜像、推送到官方镜像库或任意其他仓库;比如代码安全审查;比如本篇要讲的服务器远程控制等等。

开始一个workflow是非常简答的事情,一次设置即可,让开发者从重复过程中解脱出来,更专注与学习和思考业务逻辑。

2. GitHub workflow远程控制实战

以个人项目为例:https://github.com/Baiyuetribe/kamiFaka

name: 自动化构建Docker镜像

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  push_to_registry:
    name: Push Docker image to Docker Hub
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2.3.2
        name: Check out code

      - uses: mr-smithers-excellent/docker-build-push@v4
        name: Build & push Docker image
        with:
          image: baiyuetribe/kamifaka
          tag: latest
          registry: docker.io
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}

      - name: SSH Remote deploy
        uses: appleboy/ssh-action@master
        with: 
          host: 107.148.243.178
          username: ${{ secrets.REMOTE_USERNAME }}
          password: ${{ secrets.REMOTE_PASSWORD }}
          port: ${{ secrets.REMOTE_PORT }}
          script: |
            docker rm -f kamifaka
            rm -rf /opt/kamifaka
            docker pull baiyuetribe/kamifaka
            docker run -d --name=kamifaka -p 8000:8000 -v /opt/kamifaka:/usr/src/app/public baiyuetribe/kamifaka
  push_to_aliyun:
    name: Push Docker image to Aliyun Hub
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2.3.2
        name: Check out code

      - uses: mr-smithers-excellent/docker-build-push@v4
        name: Build & push Docker image
        with:
          image: baiyuetribe/kamifaka
          tag: latest
          registry: registry.cn-hangzhou.aliyuncs.com
          username: ${{ secrets.ALIYUN_USERNAME }}
          password: ${{ secrets.ALIYUN_PASSWORD }}

文件格式为yaml格式(非常先进的一种格式),这里面开头的是workflow的名称,支持中文。接下来的on代表触发条件,我设置为每次提交代码或者被人提交pull_request的时候就自动执行,然后是jobs,这个里面的任务是同时执行的,因此构建镜像并发送到Docker和构建镜像发送到阿里云镜像是同时执行的。

uses就是整个自动化的核心,这里面指定的运行的特殊环境方法,更多资源可以参考https://github.com/marketplace,一般都有基础演示。我使用mr-smithers-excellent/docker-build-push@v4这个Action,就可以构建镜像并把成功构建的结果推送到Docker官方或阿里云仓库,配置里的${{ secrets.DOCKER_USERNAME }}大写字母,就是存储在该项目下的一些密码等信息,对外不可见。


打开项目设置,就可以看到Secrets,右上角可以添加这类环境变量。

类似的,完成Docker镜像打包及推送后,接着我们的目的是控制服务器,使个人服务器立马更新这个镜像。手动操作的话就是ssh登录该服务器,然后删除该容器及数据卷,然后更新镜像并重新启动一个容器。而自动化就非常方便,appleboy/ssh-action@master这个Action可以实现上述过程,并且实际体验比人工速度还要快。感觉就是我写完代码后本地提交一下,然后再去看GitHub或自己的服务器,内容就已经生效了。

3. 更多说明

实际上借助GitHub workflow可以自动化执行很多事情,有人借助这个做爬虫,也有人用这个做一些b站定时签到点赞等功能。就看谁会不会用,怎么用了。总感觉2020年随着开源项目的发展,传统的php、java类程序在线上部署的优势消失殆尽,不论谷歌、微软,还是国内的阿里云、腾讯云,都在极力推荐微服务、云函数等。今年阿里双十一也足够证明云服务器在当下的现实意义。对一般人而言,传统的vps仍然很香,可是一旦越来越多的开源项目都支持云函数了,那么现有的vps就会逐渐退出大众视野。


佰阅部落 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何使用GitHub_WorkFlow自动化控制你的服务器
喜欢 (1)

您必须 登录 才能发表评论!