Files
chat-one-web/.gitea/workflows/ci.yml
alboped 001af10c2a
Some checks failed
CI / build (push) Has been cancelled
ci: 修改ci配置,新增部署配置;
2026-04-10 22:54:33 +08:00

81 lines
2.7 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Gitea Actions需开启 Actions 并注册 act_runner。
# Runner 建议GITEA_RUNNER_LABELS=ubuntu-latest:docker://node:22-bookwormJob 内自带 Node避免 setup-node 重复下载)
# 需挂载 /var/run/docker.sock。
#
# 说明NODEJS_ORG_MIRROR 在 act_runner 中常被忽略/不生效;用镜像自带 Node 即可绕过。
#
# 部署(推送到 main/master 时):在仓库「工作流 → 密钥」中配置
# SSH_PRIVATE_KEY DEPLOY_HOST DEPLOY_USER DEPLOY_PATH
# DEPLOY_PATH 为 Nginx root如 /var/www/chat-one-webrsync 会把 dist/ 下文件同步到该目录。
name: CI
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
# 使用 Job 镜像node:22-bookworm自带的 Node不再使用 actions/setup-node避免重复下载 Node
- name: Setup Yarn
run: |
corepack enable
corepack prepare yarn@1.22.22 --activate
echo "node -v: $(node -v); yarn -v: $(yarn -v)"
echo "yarn config get registry: $(yarn config get registry)"
- name: Cache Yarn
uses: actions/cache@v4
with:
path: ~/.cache/yarn
key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install
run: yarn install --frozen-lockfile
- name: Prettier check
run: yarn format:check
- name: ESLint
run: yarn lint
- name: Build
run: yarn build
- name: Install rsync and OpenSSH client
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')
run: apt-get update && apt-get install -y --no-install-recommends rsync openssh-client
- name: Deploy to Nginx (rsync)
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
DEPLOY_HOST: ${{ vars.DEPLOY_HOST }}
DEPLOY_USER: ${{ vars.DEPLOY_USER }}
DEPLOY_PATH: ${{ vars.DEPLOY_PATH }}
run: |
set -e
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_deploy
chmod 600 ~/.ssh/id_deploy
ssh-keyscan -H "$DEPLOY_HOST" >> ~/.ssh/known_hosts
rsync -avz --delete \
-e "ssh -i ~/.ssh/id_deploy -o IdentitiesOnly=yes -o StrictHostKeyChecking=yes" \
dist/ \
"${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_PATH}/chat-one-web"