本教程将项目通过 GitHub Actions 打包,缓存依赖,并将打包后的文件同步到远程主机的 ~/testParcelActions/
目录
来源 https://github.com/WangShuXia...示例仓库https://github.com/WangShuXian6/parcelWithGithubActions
工具依赖 rsync deployments
https://github.com/marketplac...rsync deployments 需要使用远程主机的 rsync
远程主机安装 rsync [centos]
# rpm -qa|grep rsync #检查是否安装过rsync,whereis rsync也可以
# yum install rsync #如果未安装,使用yum安装rsync
本地生成密钥对
备份之前的密钥对[如果存在]
mkdir key_backup mv id_isa* key_backup
生成新的Key:(引号内的内容替换为你自己的邮箱)
ssh-keygen -t rsa -C "your_email@youremail.com"
直接回车,不要修改默认路劲设置一个密码短语,在每次远程操作之前会要求输入密码短语!闲麻烦可以直接回车,不设置
将公钥放入远程部署机 authorized_keys 文件中
打开本机.ssh
文件夹,用文本编辑器打开id_rsa.pub
文件,复制内容到剪贴板。进入远程主机
远程主机将用户的公钥,保存在登录后的用户主目录的$HOME/.ssh/authorized_keys文件中。公钥就是一段字符串,只要把它追加在authorized_keys文件的末尾就行了
在远程主机根目录下创建.ssh文件夹
mkdir .ssh
创建authorized_keys文件
cd .ssh
touch authorized_keys
将公钥 id_rsa.pub 内容追加到 authorized_keys 末尾
vi authorized_keys
wq!
centos 7 重启远程主机的ssh服务
systemctl restart sshd
注:如遇到无法登陆,删除当前用户的.ssh文件夹后重建登陆测试密钥是否生效
ssh -i ~/.ssh/id_rsa -p xxxxx root@222.222.222.222
项目目录下新建 .github/workflows/ci.yml
ci.yml 只要求后缀为 yml,名称无限制
在 github 项目的设置页面添加自定义密钥供 actions 配置文件引用
新建键值例如MY_V2_SERVER_PRIVATE_KEY
将本机私钥文件
id_isa
重的内容全部复制到 键值中在 actions 中引用格式为
${{ secrets.MY_V2_SERVER_PRIVATE_KEY }}
配置 actions
parcel.yml
on:
push: # 当发生推送事件时
tags: # 当推送 tag 时
- v*
branches: # 当推送分支时
- master
pull_request: # 当发生合并事件时
branches:
- master
env:
MY_V2_SERVER_PRIVATE_KEY: ${{ secrets.MY_V2_SERVER_PRIVATE_KEY }} # 服务器私钥
MY_V2_USER: ${{ secrets.MY_V2_USER }}
MY_V2_IP: ${{ secrets.MY_V2_IP }}
cache-name: 2020
jobs:
build-production: # 构建安装依赖,构建文件
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2 # 拉去分支
- name: Cache node modules #缓存依赖
uses: actions/cache@v1
env:
cache-name: cache-node-modules
with:
path: ./node_modules # npm cache files are stored in `~/.npm` on Linux/macOS
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('./package.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Install Dependencies
run: npm i
- name: Build
run: npm run build
- name: Upload result
uses: actions/upload-artifact@v1
with:
name: dist
path: dist
deploy:
name: Deploy
needs: build-production
runs-on: ubuntu-latest
steps:
- name: Download result
uses: actions/download-artifact@v1
with:
name: dist
- name: rsync deployments
uses: contention/rsync-deployments@v1.0.0
env:
DEPLOY_KEY: ${{ secrets.MY_V2_SERVER_PRIVATE_KEY }}
with:
args: "-avzr --delete ${{ env.MY_V2_USER }}@${{ env.MY_V2_IP }}:~/testParcelActions/"
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。