部署 - GitHub Actions
官方文档
第三方库
登录服务器
- SSH Remote Commands - GitHub
- SSH Deploy - GitHub
- scp-action - GitHub
版本管理与发布
- release-it - GitHub 🌟使用中
- changesets - GitHub
- np - GitHub
- release-please - GitHub
实现
- 方法一:在Git这边构建,构建后的文件同步到服务器
- 方法二:构建在服务器完成
- 服务器拉取Git仓库代码
- 文件同步到服务器
普通实现
yml
name: main test
on:
push:
branches:
- main
jobs:
comment:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: build
run: |
npm i && npm run build
文件上传到服务器
方法一
- SSH Deploy - GitHub
WARNING
ssh-keygen -m PEM -t rsa -b 4096
这里 keys 要用 PEM 格式
yml
- name: deploy to server
uses: easingthemes/ssh-deploy@main
with:
SSH_PRIVATE_KEY: ${{ secrets.私钥 }}
ARGS: -avz --delete
SOURCE: 构建后文件夹
REMOTE_HOST: ${{ secrets.SERVER_HOST }}
REMOTE_USER: ${{ secrets.SERVER_USER }}
TARGET: /服务器文件夹/
方法二
- Generating a new SSH key and adding it to the ssh-agent
- rsync 用法教程
- StrictHostKeyChecking 与 UserKnownHostsFile
bash
# 安装
$ yum install rsync
yml
- name: deploy to server
run: |
eval "$(ssh-agent -s)"
ssh-add - <<< "${{ secrets.私钥 }}"
rsync -avz --delete \
-e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" \
${{ github.workspace }}/构建后文件夹/ ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_HOST }}:/服务器文件夹/
方法三
ssh-keyscan
查看目标主机公钥
yml
- name: set ssh key
run: |
mkdir -p ~/.ssh/
echo "${{secrets.私钥}}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan "${{ secrets.SERVER_HOST }}" >> ~/.ssh/known_hosts
- name: deploy to server
run: |
rsync -avz --delete -e ssh \
${{ github.workspace }}/构建后文件夹/ ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_HOST }}:/服务器文件夹/
- name: delete ssh key
run: rm -rf ~/.ssh/id_rsa
上传到腾讯云 COS
- COSCMD 工具 - 腾讯云官方文档
- tencent-cos-action - GitHub Actions 非官方
该 GitHub Action 用于调用腾讯云 coscmd 工具,实现对象存储的批量上传、下载、删除等操作。