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 令牌