利用Github Actions实现自动化部署
在没有自动化部署的情况话,前端需要部署代码的流程可能是这样的:
1.yarn build:xxx build指定环境包
2.将打包文件给运维或者后台(前端有权限可省略这一步)
3.将打包文件放到服务器指定目录
亦或者是做了自动化脚本,但是每次需要后台人员手动执行脚本
可见每次都需要进行一定的沟通以及手动操作,解决这个问题,我们可以利用Github Actions实现自动化打包部署
很多时候,我们希望在提交代码,合并分支等操作的时候,需要做一些其他的操作,比如抓取代码、运行测试、运行打包、登录远程服务器、将文件上传到服务器等,而且这些操作很多时候都是类似的。基于用户的这个需求,Github推出了actions功能。
actions允许开发者将每个操作写成独立的脚本,存放到代码仓库,开发者可以将这些脚本发布,发布后的脚本可以被其他开发者引用。
有了actions,开发者不用自己写脚本,直接引用其他人的aciton即可(如果可以满足你的需求),然后整个持续集成的过程,就变成了多个actions的组合。
当你需要查找actions的时候,可以去Github Action市场搜索,点击需要的action,会进入该action的页面
点击右上角的Use latest version或者点击下拉选择版本,会弹出使用方法,点击复制使用即可
想要使用github action执行我们的脚本,需要在项目的根目录创建.github文件夹,在.github文件夹下创建workflow文件夹,在workflow文件夹下写我们的配置文件,配置文件为YAML格式,文件后缀名为.yml,workflow文件夹下可以有多个.yml文件,github会自动运行所有.yml文件。workflow文件的配置可以查看官方文档,下边贴上我的配置
name: 脚本名称
# 触发脚本的条件,develop分支push代码的时候
on:
push:
branches:
- develop
# 要执行的任务
jobs:
# 任务名称
build:
# runs-on 指定job任务运行所需要的虚拟机环境(必填)
runs-on: ubuntu-latest
# 任务步骤
steps:
# 获取源码
- name: 迁出代码
# 使用action库 actions/checkout获取源码
uses: actions/checkout@master
# 安装node
- name: 安装node.js
# 使用action库 actions/setup-node 安装node
uses: actions/setup-node@v1
with:
node-version: 10.16.3
# 安装依赖
- name: 安装依赖
run: npm install
# 打包
- name: 打包
run: npm run build:xxx
# 上传打包文件到远程服务器
- name: 上传文件到远程服务器
uses: zhenyuWang/Upload-File-Action@v1.0.1
with:
username: "登录远程服务器的用户名"
server: "远程服务器ip"
port: "22"
ssh_private_key: ${{ secrets.私钥}}
# 要上传文件所在目录
local_path: "./dist/*"
# 远程服务器目标路径
target_path: "/usr/local/nginx/html/xxx"
上述脚本只需要cv到自己的文件里就好,需要注意的是私钥配置,过程如下
1.生成SSH key
ssh-keygen -t rsa -b 4096 -C "$(git config user.email)" -f test -N ""
会得到以下两个文件 (C盘用户目录下)
test.pub (public key)
test (private key)
2.配置私钥
打开github仓库,点击settings
然后点击左侧Secrets
然后点击右上角New repository secret
需要注意的是这里的私钥名称就是配置文件里的私钥名称
3.配置公钥
登录远程服务器,找到root/.ssh/authorized_keys文件,把公钥文件里的内容复制到该文件中
至此,我们的自动化打包部署就完成了,快去试下吧!
转载自:https://juejin.cn/post/7000655659758780453