mirror of
https://github.com/SECTL/SecScore.git
synced 2026-07-19 12:34:22 +08:00
feat: 添加学生名单导入功能并优化构建流程
- 新增从 SecRandom 和 xlsx 导入学生名单功能 - 添加 IPC 通信模块用于与 SecRandom 交互 - 实现 xlsx 文件解析和姓名列选择功能 - 优化构建流程,添加 CI/CD 相关脚本 - 移除 snap 构建目标 - 更新 ESLint 配置忽略新增脚本文件
This commit is contained in:
@@ -0,0 +1,195 @@
|
||||
name: build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
description: "版本号(例如 1.2.3 或 v1.2.3)"
|
||||
required: false
|
||||
build:
|
||||
description: "构建命令标记(build:win|build:mac|build:linux|build:unpack|build:all)"
|
||||
required: false
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
parse:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
version: ${{ steps.parse.outputs.version }}
|
||||
tag: ${{ steps.parse.outputs.tag }}
|
||||
build_script: ${{ steps.parse.outputs.build_script }}
|
||||
run_win: ${{ steps.parse.outputs.run_win }}
|
||||
run_mac: ${{ steps.parse.outputs.run_mac }}
|
||||
run_linux: ${{ steps.parse.outputs.run_linux }}
|
||||
run_unpack: ${{ steps.parse.outputs.run_unpack }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: 读取提交信息
|
||||
id: msg
|
||||
shell: bash
|
||||
run: |
|
||||
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
|
||||
{
|
||||
echo "message<<__EOF__"
|
||||
echo "${{ github.event.inputs.version }} ${{ github.event.inputs.build }}"
|
||||
echo "__EOF__"
|
||||
} >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
{
|
||||
echo "message<<__EOF__"
|
||||
echo "${{ github.event.head_commit.message }}"
|
||||
echo "__EOF__"
|
||||
} >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22
|
||||
|
||||
- name: 解析版本与构建命令
|
||||
id: parse
|
||||
env:
|
||||
RELEASE_MESSAGE: ${{ steps.msg.outputs.message }}
|
||||
run: node scripts/ci/parse-commit.mjs
|
||||
|
||||
build_win:
|
||||
needs: parse
|
||||
if: ${{ needs.parse.outputs.run_win == 'true' }}
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22
|
||||
|
||||
- uses: pnpm/action-setup@v4
|
||||
with:
|
||||
version: 10
|
||||
|
||||
- name: 应用版本号
|
||||
run: node scripts/ci/apply-version.mjs ${{ needs.parse.outputs.version }}
|
||||
|
||||
- name: 安装依赖
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: 构建(Windows)
|
||||
run: pnpm -s build:win
|
||||
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: dist-win
|
||||
path: dist/**
|
||||
|
||||
build_mac:
|
||||
needs: parse
|
||||
if: ${{ needs.parse.outputs.run_mac == 'true' }}
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22
|
||||
|
||||
- uses: pnpm/action-setup@v4
|
||||
with:
|
||||
version: 10
|
||||
|
||||
- name: 应用版本号
|
||||
run: node scripts/ci/apply-version.mjs ${{ needs.parse.outputs.version }}
|
||||
|
||||
- name: 安装依赖
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: 构建(macOS)
|
||||
run: pnpm -s build:mac
|
||||
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: dist-mac
|
||||
path: dist/**
|
||||
|
||||
build_linux:
|
||||
needs: parse
|
||||
if: ${{ needs.parse.outputs.run_linux == 'true' }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22
|
||||
|
||||
- uses: pnpm/action-setup@v4
|
||||
with:
|
||||
version: 10
|
||||
|
||||
- name: 应用版本号
|
||||
run: node scripts/ci/apply-version.mjs ${{ needs.parse.outputs.version }}
|
||||
|
||||
- name: 安装依赖
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: 构建(Linux)
|
||||
run: pnpm -s build:linux
|
||||
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: dist-linux
|
||||
path: dist/**
|
||||
|
||||
build_unpack:
|
||||
needs: parse
|
||||
if: ${{ needs.parse.outputs.run_unpack == 'true' }}
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22
|
||||
|
||||
- uses: pnpm/action-setup@v4
|
||||
with:
|
||||
version: 10
|
||||
|
||||
- name: 应用版本号
|
||||
run: node scripts/ci/apply-version.mjs ${{ needs.parse.outputs.version }}
|
||||
|
||||
- name: 安装依赖
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: 构建(dir)
|
||||
run: pnpm -s build:unpack
|
||||
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: dist-unpack
|
||||
path: dist/**
|
||||
|
||||
release:
|
||||
needs: [parse, build_win, build_mac, build_linux, build_unpack]
|
||||
if: ${{ always() && needs.parse.outputs.tag != '' }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: artifacts
|
||||
|
||||
- name: 发布 Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
tag_name: ${{ needs.parse.outputs.tag }}
|
||||
name: SecScore ${{ needs.parse.outputs.tag }}
|
||||
draft: false
|
||||
prerelease: ${{ contains(needs.parse.outputs.version, '-') }}
|
||||
files: |
|
||||
artifacts/**/*
|
||||
Reference in New Issue
Block a user