参考一: 持续集成是什么? 参考二: 部署GitHub Pages 参考三: Github Actions
对Github仓库中XX项目的master分支的代码进行打包并部署到阿里云服务器
# 对Github仓库中master分支的代码进行部署到阿里云服务器
name: Build app and deploy to aliyun
on:
push:
branches:
# 执行工作流的代码分支
- master
jobs:
build:
# runs-on 指定job任务运⾏所需要的虚拟机环境(必填字段)
runs-on: ubuntu-latest
steps:
# 获取源码
- name: Checkout
# 使⽤action库 actions/checkout获取源码
uses: actions/checkout@master
# 安装Node12
- name: use Node.js 12.16.3
# 使⽤action库 actions/setup-node安装node
uses: actions/setup-node@v1
with:
node-version: 12.16.3
# 安装依赖
- name: Yarn install
run: npm install yarn && yarn install
# 打包
- name: Yarn build
run: yarn run build:prod
# 通过SSH上传部署文件到阿⾥云
- name: Deploy to Aliyun
uses: easingthemes/ssh-deploy@v2.1.1
env:
# 私钥
# PRIVATE_KEY 的内容为在服务器生成的SSH的私钥信息
# PRIVATE_KEY 需要配置到项目/Settings/Secrets/New repository secret
# 相当于配置环境变量,便于脚本读取
SSH_PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
# 服务器ip
REMOTE_HOST: "xxx.xxx.xxx.xxx"
# 服务器⽤户名
REMOTE_USER: "root"
# scp参数
ARGS: "-avzr --delete"
# 源⽬录
SOURCE: "dist"
# ⽬标地址,服务器不存在目录会发布失败,需要注意
TARGET: "/root/web-stite/client"
对Github仓库中XX项目的master分支的代码进行打包并部署到github-pages
# workflow名称
name: Build and Deploy
# 触发条件:master分支接收到push指令后开始
on:
push:
branches:
- master
# 执行任务
jobs:
build-and-deploy:
name: Build and Deploy
# runs-on 虚拟机环境
runs-on: ubuntu-latest
# 任务步骤
steps:
# 获取源码
- name: 1. 拉取代码 🚀
# 使⽤action库 actions/checkout获取源码
uses: actions/checkout@master
# 安装Node12.18.3
- name: 2. 安装Node 🚀
# 使⽤action库 actions/setup-node安装node
uses: actions/setup-node@v1
with:
node-version: 12.18.3
# 安装依赖
- name: 3. 安装依赖 🚀
run: npm install yarn && yarn install
# 编译项目
- name: 4. 编译项目 🚀
run: yarn run build:prod
- name: 5. 部署 🚀
# 使用JamesIves库 JamesIves/github-pages-deploy-action@3.7.1
uses: JamesIves/github-pages-deploy-action@3.7.1
with:
# GitHub 密钥
GITHUB_TOKEN: ${{ secrets.GITHUB_ACCESS_TOKEN }}
# 待发布到的分支
BRANCH: gh-pages
# 待部署文件夹
FOLDER: dist
# 自动删除已部署的文件
CLEAN: true
查看文件中的内容可以使用命令: cat xxx
cd ~/.ssh/
mkdir ~/.ssh
ssh-keygen -t rsa -C "建议邮箱地址"
ls
命令查看当前目录找到新生成的公钥:id_rsa.pub
私钥:id_rsa
cat .\id_rsa.pub
命令打印公钥信息或直接打开文件查看扩展二、配置本地公钥信息到服务器
可实现免密登录服务器
ssh-copy-id root@xxx.xxx.xxx.xxx
扩展三、Github配置SSH and GPG keys
可实现通过ssh操作Git
ssh -T git@github.com
验证得到结果如: Hi OSpoon! You've successfully authenticated, but GitHub does not provide shell access.
扩展四、Github的项目中配置Secrets
可充当登录服务器的私钥信息,IP,端口,用户名,密码,Token等信息的变量配置