Files
SecScore/.github/workflows/build.yml
T
2026-01-23 12:04:06 +08:00

196 lines
4.8 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.
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 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: True
prerelease: ${{ contains(needs.parse.outputs.version, '-') }}
files: |
artifacts/**/*