DoroHelper/.github/workflows/Compile AHK 2.0 and Release...

75 lines
3.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.

name: Compile AHK 2.0 and Release
on:
push:
tags:
- "v**" # 当有以 'v' 开头的标签推送到仓库时触发
workflow_dispatch: # 允许手动触发
jobs:
build-and-release:
runs-on: windows-latest # 运行环境是 Windows 最新版本
steps:
- name: Checkout code
uses: actions/checkout@v4 # 签出仓库代码
- name: Compile AutoHotkey Script with Action
id: compile_script # 为此步骤设置 ID以便后续引用其输出或工作目录
uses: benmusson/ahk2exe-action@v1 # 使用 benmusson 提供的 AHK 编译 Action
with:
in: .\DoroHelper.ahk # 你的 AHK 脚本路径
out: .\DoroHelper.exe # 输出的 EXE 文件名
icon: .\doro.ico # 你的图标文件路径
target: x64 # 目标架构为 x64
ahk-tag: v2.0.19 # 指定 AutoHotkey 2.0.19 版本
github-token: ${{ secrets.GITHUB_TOKEN }} # 用于避免 GitHub API 限速
- name: Extract Version from AHK script
id: get_version # 为此步骤设置 ID以便后续引用其输出
shell: pwsh # 使用 PowerShell Core
run: |
$scriptPath = "DoroHelper.ahk" # 你的主脚本文件路径
if (-not (Test-Path $scriptPath)) {
Write-Warning "Script file '${scriptPath}' not found for version extraction. Current directory: $(Get-Location)"
echo "VERSION_TAG=0.0.0" >> $env:GITHUB_OUTPUT # 如果找不到脚本,使用默认版本号
exit 0
}
$content = Get-Content -Path $scriptPath -Raw # 读取脚本内容
# 使用正则表达式匹配 currentVersion := "..."
$match = $content | Select-String -Pattern 'currentVersion\s*:=\s*"([^"]+)"'
if ($match) {
$version = $match.Matches[0].Groups[1].Value # 提取版本号
Write-Host "Version found: ${version}"
echo "VERSION_TAG=$version" >> $env:GITHUB_OUTPUT # 设置输出变量 VERSION_TAG
} else {
Write-Warning "Version pattern (currentVersion := \"...\") not found in ${scriptPath}. Using default '0.0.0'."
echo "VERSION_TAG=0.0.0" >> $env:GITHUB_OUTPUT # 如果没有匹配到,使用默认版本号
}
- name: Determine if Pre-release
id: prerelease_check # 为此步骤设置 ID以便后续引用其输出
shell: bash # 使用 Bash shell
run: |
VERSION_TAG="${{ steps.get_version.outputs.VERSION_TAG }}" # 获取上一步输出的版本号
IS_PRERELEASE="false"
if [[ "$VERSION_TAG" == *beta* || "$VERSION_TAG" == *alpha* || "$VERSION_TAG" == *rc* ]]; then # 判断是否包含预发布标识符
IS_PRERELEASE="true"
fi
echo "IS_PRERELEASE=$IS_PRERELEASE" >> $GITHUB_OUTPUT # 设置输出变量 IS_PRERELEASE
echo "Release version: ${VERSION_TAG}, Is Prerelease: ${IS_PRERELEASE}"
- name: Create GitHub Release
uses: softprops/action-gh-release@v2 # 使用 GitHub Release Action
with:
tag_name: ${{ steps.get_version.outputs.VERSION_TAG }} # 使用从脚本提取的版本号作为标签名
name: ${{ steps.get_version.outputs.VERSION_TAG }} # Release 的标题
body: |
Automated release for DoroHelper ${{ steps.get_version.outputs.VERSION_TAG }}
Compiled from commit ${{ github.sha }}
draft: false # 不是草稿 Release
prerelease: ${{ steps.prerelease_check.outputs.IS_PRERELEASE }} # 根据上一步的判断设置是否为预发布
files: DoroHelper.exe # <-- **此处已修正,仅保留文件名**
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # GitHub 令牌