代码:

# auto_build
name: auto deploy blog to ecs
on:
  push:
    branches:
      - main
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Deploy to server
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{secrets.SERVER_SSH_KEY}}
          script: |
            cd /var/www/html
            git pull origin main
            sudo service nginx restart

什么是action?

简单来说,就是你写一段代码(workflow),然后根据你设定的触发条件,将会在特定情况下,使用github提供的服务器来执行你的代码。

以下是详细回答。

GitHub Actions 是 GitHub 提供的一种基于事件触发的工作流自动化服务。它允许用户在自己的仓库中配置自动化任务,在特定事件发生时自动执行。

例如,您可以使用 GitHub Actions 设置自动化构建、测试、部署等任务。每当您推送新代码到您的仓库时,GitHub Actions 就会自动运行您配置的任务来对新代码进行构建、测试和部署。

GitHub Actions 使用 YAML 文件配置任务,您可以在仓库的 .github/workflows 目录中创建一个 YAML 文件来配置任务。

它也可以用来自动化软件开发工作流程,例如持续集成和持续交付。可以使用现有的第三方 Actions 来完成常见的工作流程,也可以自己编写自定义 Actions。

如何创建workflow

Untitled.png

Untitled.png

顺带一提

Untitled.png

这些是别人的工作流,你可以选择使用。

如何写代码

这里是官方文档:GitHub Actions Documentation - GitHub Docs

回到一开始的代码:

# auto_build
name: auto deploy blog to ecs
on:
  push:
    branches:
      - main
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Deploy to server
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{secrets.SERVER_SSH_KEY}}
          script: |
            cd /var/www/html
            git pull origin main
            sudo service nginx restart

#是注释

name是工作流的名称

on是执行条件,这里是当有push的时候 push的参数branches指限定哪一个分支有push,这里是main分支有push则执行工作流

job就是github要执行的任务,这里有个叫build的任务,runs-on指定在ubuntu最新版本上执行

setps列出了这个任务的每一个步骤

name就是指定这个步骤的名称

uses:代表使用什么来执行操作,这里是使用appleboy/ssh-action 这个第三方 action 来执行这个步骤。

with则是这个action的一些参数,包括ip,用户名,ssh的值,script是要执行的代码 | 表示执行几行的代码

secrets.SERVER_HOST是什么呢,指存储在secrets中的SEVER_HOST变量,因为如果直接写在代码上会泄露。

具体的创建方法是:

Untitled.png

注意创建的名称不用加前缀secrets.

host 和 username都很好理解,就是服务器的ip地址和用户名,而ssh就是通过秘钥来登陆服务器。

如何创建ssh

这里以阿里云为例,网络上有各种文章介绍。

如何创建密钥对:创建SSH密钥对 (aliyun.com)

注意创建完后要重启服务器才生效(同时不能再使用密码登陆,要修改为密码登陆可以参考:文章

创建完后会自动下载一个后缀为pem的文件,记事本打开复制,这就是secrets.SERVER_SSH_KEY的值

大功告成。

注意,执行代码的返回消息在:

Untitled.png

Untitled.png

Untitled.png

中查看。

部署完后网页没有更新可以刷新下清除缓存。

文章作者: 妖白与茶色
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 妖白与茶色的博客
喜欢就支持一下吧