Daily HiddifyConfigsCLI #266
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # .github/workflows/daily-hiddify.yml | |
| name: Daily HiddifyConfigsCLI | |
| on: | |
| schedule: | |
| - cron: '0 3 * * *' | |
| workflow_dispatch: | |
| permissions: | |
| contents: write | |
| jobs: | |
| run: | |
| runs-on: windows-latest | |
| timeout-minutes: 80 | |
| steps: | |
| # ------------------------------------------------- | |
| - name: 1. 拉取仓库 | |
| uses: actions/checkout@v4 | |
| # ------------------------------------------------- | |
| - name: 2. 运行 CLI(强检路径 + 验证输出) | |
| id: run_exe | |
| shell: pwsh | |
| timeout-minutes: 70 | |
| run: | | |
| # --- 明确 EXE 完整路径(基于 workspace) --- | |
| $exeDir = Join-Path $env:GITHUB_WORKSPACE "HiddifyConfigsCLI/bin/Debug/net9.0" | |
| $exe = Join-Path $exeDir "HiddifyConfigsCLI.exe" | |
| Write-Host "预期 EXE Dir = $exeDir" | |
| Write-Host "预期 EXE Path = $exe" | |
| # --- 明确 valid_links 完整路径(基于 workspace) --- | |
| $valid_linksDir = Join-Path $env:GITHUB_WORKSPACE "HiddifyConfigsCLI/valid_links" | |
| Write-Host "预期 valid_links Dir = $valid_linksDir" | |
| if (!(Test-Path $exe)) { | |
| Write-Error "EXE 不存在: $exe" | |
| exit 1 | |
| } | |
| # 输入 URL(可按需替换) | |
| # $input = "https://raw.githubusercontent.com/shinexus/LearnToProgram/refs/heads/master/HiddifyConfigsCLI/config/test_url.txt" | |
| $input = "https://raw.githubusercontent.com/shinexus/LearnToProgram/refs/heads/master/HiddifyConfigsCLI/config/urls.txt" | |
| # 输出 绝对路径 | |
| # $outputFile = Join-Path $exeDir "_test.txt" | |
| # $outputFile = Join-Path $exeDir "valid_links.txt" | |
| $outputFile = Join-Path $valid_linksDir "valid_links.txt" | |
| # 参数数组 | |
| $params = @( | |
| "--input", $input, | |
| "--output", $outputFile, | |
| "--max-lines", "100", | |
| "--max-parts", "2", | |
| "--timeout", "6", | |
| "--parallel", "128", | |
| "--http-timeout", "5" | |
| ) | |
| # 显示运行前目录与 EXE 目录下文件(便于对比) | |
| Write-Host "运行前当前目录: $(Get-Location)" | |
| Write-Host "运行前列出 EXE 目录文件(省略):" | |
| # Get-ChildItem -Path $exeDir -Force -ErrorAction SilentlyContinue | Select-Object Name, FullName, Length | Format-Table | |
| # --- 用 Start-Process 确保 WorkingDirectory 不被重置,拿到进程对象以读取 ExitCode --- | |
| Write-Host "使用 Start-Process 启动 EXE..." | |
| $proc = Start-Process -FilePath $exe -WorkingDirectory $exeDir -ArgumentList $params -Wait -NoNewWindow -PassThru | |
| Write-Host "Start-Process 返回 ExitCode: $($proc.ExitCode)" | |
| if ($proc.ExitCode -ne 0) { | |
| Write-Error "CLI 退出码非0: $($proc.ExitCode)" | |
| exit $proc.ExitCode | |
| } | |
| # --- 运行后马上列出 workspace 与 exeDir 下的 valid_links* 并打印基本信息 --- | |
| Write-Host "运行后当前目录: $(Get-Location)" | |
| Write-Host "运行后:搜索 workspace 下所有 valid_links* 文件(FullName + Length)" | |
| Get-ChildItem -Path $env:GITHUB_WORKSPACE -Recurse -Filter "valid_links*" -ErrorAction SilentlyContinue | | |
| Select-Object FullName, Length | Format-Table | |
| Write-Host "运行后:列出 valid_linksDir 目录下 valid_links*:" | |
| Get-ChildItem -Path $valid_linksDir -Filter "valid_links*" -ErrorAction SilentlyContinue | | |
| Select-Object Name, FullName, Length | Format-Table | |
| # --- 如果找到了主文件,打印前 50 行和文件字节数以供核验 --- | |
| $mainCandidates = Get-ChildItem -Path $valid_linksDir -Filter "valid_links_*.txt" -ErrorAction SilentlyContinue | |
| if ($mainCandidates) { | |
| foreach ($f in $mainCandidates) { | |
| Write-Host "---- file: $($f.FullName) (Length=$($f.Length) bytes) ----" | |
| Write-Host "前 50 行内容预览(省略):" | |
| # Get-Content -Path $f.FullName -TotalCount 50 | ForEach-Object { Write-Host $_ } | |
| Write-Host "---- End of preview ----" | |
| } | |
| } else { | |
| Write-Host "未在 valid_linksDir 目录发现 valid_links 文件,尝试在 workspace 全局搜索。" | |
| $global = Get-ChildItem -Path $env:GITHUB_WORKSPACE -Recurse -Filter "valid_links*" -ErrorAction SilentlyContinue | |
| foreach ($g in $global) { | |
| Write-Host "---- file: $($g.FullName) (Length=$($g.Length) bytes) ----" | |
| Get-Content -Path $g.FullName -TotalCount 50 | ForEach-Object { Write-Host $_ } | |
| Write-Host "---- End of preview ----" | |
| } | |
| } | |
| Write-Host "Step 2 完成" | |
| # ------------------------------------------------- | |
| - name: 调试:搜索 valid_links* | |
| shell: pwsh | |
| run: | | |
| Write-Host "当前目录: $(Get-Location)" | |
| Write-Host "workspace 搜索 valid_links*:" | |
| Get-ChildItem -Recurse -Filter "valid_links*" | | |
| Format-Table FullName, Length | |
| # ------------------------------------------------- | |
| - name: 3. 上传产物 | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: valid-links | |
| path: HiddifyConfigsCLI/valid_links/valid_links* | |
| retention-days: 7 | |
| if-no-files-found: warn | |
| # ------------------------------------------------- | |
| - name: 4. 提交结果(自动 rebase) | |
| if: always() && steps.run_exe.outcome == 'success' | |
| shell: pwsh | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| Set-Location $env:GITHUB_WORKSPACE | |
| git config --global user.name "github-actions[bot]" | |
| git config --global user.email "github-actions[bot]@users.noreply.github.com" | |
| git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git | |
| # 添加生成的文件 | |
| git add "HiddifyConfigsCLI/valid_links/valid_links*" | |
| # 若无变化则退出 | |
| git diff --cached --quiet | |
| if ($LASTEXITCODE -eq 0) { | |
| Write-Host "文件无变化,跳过 commit" | |
| exit 0 | |
| } | |
| # 提交本地更改 | |
| git commit -m "Update valid_links" | |
| # 获取远程分支名 | |
| $branch = "${{ github.ref }}" -replace '^refs/heads/','' | |
| # 拉取远程更新并 rebase | |
| git fetch origin | |
| git rebase origin/$branch || git rebase --abort | |
| # 推送到远程,安全覆盖本地 rebase 提交 | |
| git push origin HEAD:$branch --force-with-lease |