zhangdizhangdi

部署 - GitHub Actions

官方文档

第三方库

登录服务器

版本管理与发布

实现

  • 方法一:在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-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: /服务器文件夹/

方法二

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 工具,实现对象存储的批量上传、下载、删除等操作。