前言
搞完jenkins
部署项目后,很快啊、我大意了没有闪!大佬们就说,现在还有谁搞jenkins
自动部署。给我讲起来GitHub Actions。简单看了一波,对用Github
托管的项目可以说是相当友好,接下来当然是一把刷。
基本概念
GitHub Actions
内有一些概念性的定义,如下所示:
- workflow:顾名思义这是工作流程,在
GitHub Actions
中每执行一次就是一个工作流程。 - job:工作流程中的一个任务,一个工作流程可以配置多个任务
- step:工作任务中的步骤,根据配置的先后顺序执行,一个任务内可以配置多个步骤
- use:在执行 step 时,你可以使用别人定义好的 actions
- action:每个步骤所使用的构建动作,可以使用
GitHub
官方提供的动作实现,也可以自动编写。 - run:在执行 step 时,执行 run 对应的 shell 命令
使用GitHub Actions
创建添加过workflow
文件
每一个工作流都是由一个YML
文件进行配置的,在该文件内我们可以配置仓库的GitHub Actions
所相关的全部内容,GitHub
针对文件所处的目录进行了约定,必须在仓库根下的.github/workflows
目录内。
- 方式一:直接点击新建、随便选择一波模板
- 方式二:在项目根目录创建
.github/workflows
目录,然后在新创建的目录下添加一个名为随便.yml
的工作流配置文件将修改提交后push
到GitHub
仓库即可。
编辑YML
文件
编辑后点击提交就可以了,截图使用的是node模板。附上咱目前配置.yml
,直接用到easingthemes/ssh-deploy@main
这个开源的actions,其原理也是使用rsync
这个工具实现数据传输。
name: stage
on:
#测试
push:
branches:
- feature
jobs:
# 任务配置
build:
# 运行环境
runs-on: ubuntu-latest
# 步骤
steps:
# 使用别人的action
- uses: actions/checkout@v2
# 步骤名称
- name: yarn install
# 步骤执行Deploy keys
run: yarn
- name: yarn build
run: yarn build:stage
# 命名这个任务为发布Deplook
- name: Deploy to Server
uses: easingthemes/ssh-deploy@main
env:
SSH_PRIVATE_KEY: ${{ secrets.TEST_SERVER_SSH_KEY }}
ARGS: "-rltgoDzvO --delete"
SOURCE: "dist/"
REMOTE_HOST: ${{ secrets.TEST_USER_HOST }}
REMOTE_USER: ${{ secrets.USER_NAME }}
TARGET: ${{secrets.TARGET}}
EXCLUDE: "/dist/, /node_modules/"
secrets 配置
接下来配置Workflows
中获取的值、继续在GitHub上就有得添加
服务器配置 由于rsync是借助秘钥实现通过 ssh 进行传输。所以在服务器上需要做一些配置。
创建秘钥
ssh-keygen -m PEM -t rsa -b 4096
在服务器上安装公钥
cat .ssh/id_rsa.pub >> .ssh/authorized_keys
编辑 /etc/ssh/sshd_config 文件,开启服务器允许通过秘钥登录。添加
RSAAuthentication yesPubkeyAuthentication yes
因为我是直接使用 root 账号,所以还要开启允许 root 通过 ssh 登录:PermitRootLogin yes
重启服务:
systemctl restart sshd.service
最后记得将私钥(id_rsa )中的内容保存到 secrets。
参考
觉得有用的大佬帮忙点个赞,好人一生平安~