mirror of
https://github.com/Shu-Ying/noname-shuying.git
synced 2026-10-31 20:19:58 +08:00
fixed # 更新工作流
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
name: Release extension
|
name: Release extension
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- "**"
|
||||||
|
paths:
|
||||||
|
- "extension.js"
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
inputs:
|
|
||||||
version:
|
|
||||||
description: "版本号,例如 2.0.1.2 或 2.0.1.2-rc.1"
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
@@ -17,23 +17,33 @@ concurrency:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
release:
|
release:
|
||||||
|
if: github.ref == format('refs/heads/{0}', github.event.repository.default_branch)
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
env:
|
env:
|
||||||
RELEASE_VERSION: ${{ inputs.version }}
|
|
||||||
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
|
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
|
||||||
|
BEFORE_SHA: ${{ github.event.before }}
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out source
|
- name: Check out source
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
ref: ${{ github.event.repository.default_branch }}
|
ref: ${{ github.sha }}
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Read current version and detect change
|
||||||
|
id: version
|
||||||
|
run: |
|
||||||
|
./tools/resolve_release_version.ps1 `
|
||||||
|
-Root $env:GITHUB_WORKSPACE `
|
||||||
|
-EventName $env:GITHUB_EVENT_NAME `
|
||||||
|
-PreviousRef $env:BEFORE_SHA
|
||||||
|
|
||||||
- name: Generate manifest and create tag
|
- name: Generate manifest and create tag
|
||||||
|
if: steps.version.outputs.should_release == 'true'
|
||||||
run: |
|
run: |
|
||||||
$ErrorActionPreference = 'Stop'
|
$ErrorActionPreference = 'Stop'
|
||||||
$version = $env:RELEASE_VERSION
|
$version = $env:RELEASE_VERSION
|
||||||
@@ -118,6 +128,7 @@ jobs:
|
|||||||
Write-Host "已创建包含清单的标签:$tag"
|
Write-Host "已创建包含清单的标签:$tag"
|
||||||
|
|
||||||
- name: Build ZIP from tag
|
- name: Build ZIP from tag
|
||||||
|
if: steps.version.outputs.should_release == 'true'
|
||||||
run: |
|
run: |
|
||||||
$ErrorActionPreference = 'Stop'
|
$ErrorActionPreference = 'Stop'
|
||||||
$version = $env:RELEASE_VERSION
|
$version = $env:RELEASE_VERSION
|
||||||
@@ -179,6 +190,7 @@ jobs:
|
|||||||
Write-Host "安装包:$package"
|
Write-Host "安装包:$package"
|
||||||
|
|
||||||
- name: Publish GitHub Release
|
- name: Publish GitHub Release
|
||||||
|
if: steps.version.outputs.should_release == 'true'
|
||||||
run: |
|
run: |
|
||||||
$ErrorActionPreference = 'Stop'
|
$ErrorActionPreference = 'Stop'
|
||||||
if (!$env:GITHUB_TOKEN) {
|
if (!$env:GITHUB_TOKEN) {
|
||||||
|
|||||||
+1
-1
@@ -6,7 +6,7 @@ import { configureDiagnostics } from "./diagnostics/index.js";
|
|||||||
|
|
||||||
export const type = "extension";
|
export const type = "extension";
|
||||||
export let shuYing = new Object();
|
export let shuYing = new Object();
|
||||||
const shuYingLocalVersion = "2.0.2.3-rc.6";
|
const shuYingLocalVersion = "2.0.2.3-rc.7";
|
||||||
|
|
||||||
shuYing.name = "术樱包";
|
shuYing.name = "术樱包";
|
||||||
shuYing.editable = false;
|
shuYing.editable = false;
|
||||||
|
|||||||
@@ -17,6 +17,16 @@
|
|||||||
3. 发布工作流为每个模块生成独立清单,并将清单提交到发布标签。
|
3. 发布工作流为每个模块生成独立清单,并将清单提交到发布标签。
|
||||||
4. 完整 ZIP 安装包仍包含所有模块,供离线或整包安装使用。
|
4. 完整 ZIP 安装包仍包含所有模块,供离线或整包安装使用。
|
||||||
|
|
||||||
|
修改 `extension.js` 中的 `shuYingLocalVersion`,提交并推送到 GitHub
|
||||||
|
默认分支后,工作流会比较推送前后的版本号。版本号变化时自动生成和校验
|
||||||
|
清单、创建 `v版本号` 标签,并打包发布;同版本的代码修改不重复发布。
|
||||||
|
手动运行 GitHub 发布工作流也读取该次提交的版本号,无需再次填写版本。
|
||||||
|
|
||||||
|
版本格式为 `2.0.2.4` 或 `2.0.2.4-rc.1`;带 `-rc.N` 的 Release
|
||||||
|
标记为测试版,其他标记为正式版。已有同名标签时停止,避免覆盖旧发布。
|
||||||
|
Gitea 保持接收同一发布标签后打包的流程;使用 Gitea 更新源时,需将该
|
||||||
|
标签同步到 Gitea,单独推送分支代码不会触发 Gitea 发布。
|
||||||
|
|
||||||
客户端从标签的 raw 文件路径读取清单。因此 Gitea 发布必须使用已经包含
|
客户端从标签的 raw 文件路径读取清单。因此 Gitea 发布必须使用已经包含
|
||||||
`dist/manifest.json` 和 `dist/modules/*.json` 的同一标签;当前 Gitea 工作流
|
`dist/manifest.json` 和 `dist/modules/*.json` 的同一标签;当前 Gitea 工作流
|
||||||
会生成并上传附件,但不会改写触发它的标签。
|
会生成并上传附件,但不会改写触发它的标签。
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)][string]$Root,
|
||||||
|
[string]$EventName = 'workflow_dispatch',
|
||||||
|
[string]$PreviousRef = ''
|
||||||
|
)
|
||||||
|
|
||||||
|
$ErrorActionPreference = 'Stop'
|
||||||
|
|
||||||
|
function Read-Version([string]$Ref) {
|
||||||
|
$source = git show "${Ref}:extension.js"
|
||||||
|
if ($LASTEXITCODE -ne 0) { throw "Cannot read extension.js at $Ref" }
|
||||||
|
$matches = [regex]::Matches(($source -join "`n"),
|
||||||
|
'(?m)^\s*const\s+shuYingLocalVersion\s*=\s*"([^"\r\n]+)"\s*;')
|
||||||
|
if ($matches.Count -ne 1) { throw "Expected one version at $Ref" }
|
||||||
|
return $matches[0].Groups[1].Value
|
||||||
|
}
|
||||||
|
|
||||||
|
Push-Location -LiteralPath $Root
|
||||||
|
try {
|
||||||
|
$version = Read-Version 'HEAD'
|
||||||
|
if ($version -cnotmatch '^\d+\.\d+\.\d+\.\d+(-rc\.\d+)?$') {
|
||||||
|
throw "Invalid release version: $version"
|
||||||
|
}
|
||||||
|
$changed = $true
|
||||||
|
if ($EventName -eq 'push') {
|
||||||
|
if ($PreviousRef -notmatch '^[0-9a-fA-F]{40}$') {
|
||||||
|
throw 'Push event must provide its previous commit SHA'
|
||||||
|
}
|
||||||
|
if ($PreviousRef -notmatch '^0+$') {
|
||||||
|
$previous = Read-Version $PreviousRef
|
||||||
|
$changed = $previous -ne $version
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!$env:GITHUB_OUTPUT -or !$env:GITHUB_ENV) {
|
||||||
|
throw 'Actions output and environment files are required'
|
||||||
|
}
|
||||||
|
$utf8 = New-Object System.Text.UTF8Encoding($false)
|
||||||
|
$release = $changed.ToString().ToLowerInvariant()
|
||||||
|
[IO.File]::AppendAllText($env:GITHUB_OUTPUT,
|
||||||
|
"should_release=$release`n", $utf8)
|
||||||
|
[IO.File]::AppendAllText($env:GITHUB_ENV,
|
||||||
|
"RELEASE_VERSION=$version`nRELEASE_TAG=v$version`n", $utf8)
|
||||||
|
Write-Host "Version: $version; release required: $release"
|
||||||
|
} finally {
|
||||||
|
Pop-Location
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user