我的一些 github action 前端部署方案

我的一些个人项目的部署方案合集
更新于: 2023-08-19 10:21:43
项目主页: https://github.com/afeiship/action-deploy2ssh

方案列表

ID名称备注项目主页
1deploy2ssh使用 ssh 方式部署项目到服务器https://github.com/afeiship/action-deploy2ssh
2deploy2cos使用 cos 命令来部署项目到 cos 的桶(Tencent)https://github.com/afeiship/action-deploy2cos
3deploy2aliyun使用 aliyun oss 命令来部署项目到 oss 的桶(Aliyun)https://github.com/afeiship/action-deploy2aliyun

方案1: deploy2ssh

这里使用的是 password,因为相对简单,如果是公司的服务器,可能需要使用 key(id_rsa 文件)的方式登录。

1️⃣ 设置

设置 env-vars(action),将 host/username/password 设置到项目的 secrets/action 里去

gh secret set -f ~/.dotfiles/.servers/.env.dicfree-server

2️⃣ 设置 ci

提前设置好 mkdir -p .github/workflows 目录

name: deploy2ssh workflow
on:
  push:
    branches: main

jobs:
  Release:
    name: Release
    runs-on: ubuntu-latest
    env:
      SSH_HOST: ${{ secrets.SSH_HOST }}
      SSH_USERNAME: ${{ secrets.SSH_USERNAME }}
      SSH_PASSWORD: ${{ secrets.SSH_PASSWORD }}

    if: contains(github.event.head_commit.message, '__@production__')
    steps:
      - uses: actions/checkout@v3
      - name: copy file via ssh password
        uses: afeiship/action-deploy2ssh@main
        with:
          build_dist: app
          target_dir: /tmp/test

方案2:deploy2cos

这里提前得拿到 cos 的相关 secret和 id

1️⃣ 设置

gh secret set COS_YML -b "$(cat ~/.cos.yaml)"

2️⃣ 设置 ci

name: deploy2cos workflow
on:
  push:
    branches: master

jobs:
  Release:
    name: Release
    runs-on: ubuntu-latest
    env:
      COS_YML: ${{ secrets.COS_YML }}


    if: contains(github.event.head_commit.message, '__@production__')
    steps:
      - name: All in one
        uses: afeiship/action-deploy2cos@master
        with:
          build_dist: "build"
          oss_bucket: cos://your-cos/test/

方案3: deploy2aliyun

拿到 oss 的相关 id/key 之后再进行

1️⃣ 设置 env

gh secret set -f ~/.aliyun/.env.kubebio

2️⃣ 设置 ci

name: deploy2aliyun workflow
on:
  push:
    branches:
      - master
jobs:
  Release:
    name: Release
    runs-on: ubuntu-latest
    env:
      ACCESS_KEY_ID: ${{ secrets.ALIBABACLOUD_ACCESS_KEY_ID }}
      ACCESS_KEY_SECRET: ${{ secrets.ALIBABACLOUD_ACCESS_KEY_SECRET }}
      REGION: ${{ secrets.ALIBABACLOUD_REGION_ID }}

    if: contains(github.event.head_commit.message, '__@production__')
    steps:
      - name: All in one
        uses: afeiship/action-deploy2aliyun@master
        with:
          build_dist: "build"
          oss_bucket: "oss://you-bucket/sub-path/assets/test-app-deploy2aliyun/"