1. 基本概念说明
2. Workflow
范例一
对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
3. 简易流程图
扩展内容
扩展一、创建SSH公&私钥
查看文件中的内容可以使用命令: cat xxx
- 进入当前用户的.ssh目录,没有则创建后进入
- 进入.ssh目录
cd ~/.ssh/
- 创建.ssh目录
mkdir ~/.ssh
- 执行生成命令:
ssh-keygen -t rsa -C "建议邮箱地址"
- 可以通过
ls
命令查看当前目录找到新生成的公钥:id_rsa.pub
私钥:id_rsa
- 可以通过
cat .\id_rsa.pub
命令打印公钥信息或直接打开文件查看
扩展二、配置本地公钥信息到服务器
可实现免密登录服务器
手动操作
- 登录阿里云服务器 ssh root@xxx.xxx.xxx.xxx
- 进入.ssh目录 cd .ssh/
- 执行命令 vi authorized_keys
- 粘贴公钥信息
- 按ECS&输出:wq保存退出
简化操作
- 执行命令:
ssh-copy-id root@xxx.xxx.xxx.xxx
扩展三、Github配置SSH and GPG keys
可实现通过ssh操作Git
- 菜单位置: settings/SSH and GPG keys/New SSH key
- 添加命名并粘贴本地生成的公钥信息
- 通过
ssh -T git@github.com
验证得到结果如:Hi OSpoon! You've successfully authenticated, but GitHub does not provide shell access.
扩展四、Github的项目中配置Secrets
可充当登录服务器的私钥信息,IP,端口,用户名,密码,Token等信息的变量配置
配置服务器生成的私钥信息到Github
- 菜单位置: 项目/Settings/Secrets/New repository secret
- 建议命名为PRIVATE_KEY,并粘贴秘钥保存
扩展五、Github生成个人访问令牌
github-pages-deploy-action扩展需要配置令牌到项目的Secrets被使用
- 菜单位置: Setting/Developer settings/Personal access tokens
- Generate new token: 添加令牌名称并选择需要的权限
- 生成令牌并自行保存,遗忘令牌需要重新生成