You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Rust项目GitHub Actions中PowerShell向GITHUB_STEP_SUMMARY追加内容异常

解决GitHub Actions步骤摘要内容顺序颠倒的问题

在Windows环境的GitHub Actions中,使用PowerShell向$env:GITHUB_STEP_SUMMARY写入内容时出现顺序颠倒,是因为PowerShell默认使用UTF-16LE编码写入文件,而GitHub步骤摘要期望UTF-8编码,导致内容解析顺序异常。

要实现内容追加到摘要末尾,只需在写入时明确指定UTF-8编码即可,有两种常用方式:

方式一:修改Add-Content命令,添加编码参数

直接在每个Add-Content命令后加上-Encoding utf8参数,确保写入文件时使用UTF-8编码:

jobs:
    build:
        name: Build, Test and Release
        runs-on: windows-latest
        steps:
            - uses: actions/checkout@v4
            - name: Prepare breakdown
              run: Add-Content -Path $env:GITHUB_STEP_SUMMARY -Value "### Breakdown" -Encoding utf8
            - name: Build
              run: |
                  cargo build --release --verbose

                  if ($?) {
                      Add-Content -Path $env:GITHUB_STEP_SUMMARY -Value "- 🟢 Build successful" -Encoding utf8
                  } else {
                      Add-Content -Path $env:GITHUB_STEP_SUMMARY -Value "- 🔴 Build failed" -Encoding utf8
                  }
            - name: Run tests
              run: |
                  cargo test --verbose

                  if ($?) {
                      Add-Content -Path $env:GITHUB_STEP_SUMMARY -Value "- 🟢 Tests passed" -Encoding utf8
                  } else {
                      Add-Content -Path $env:GITHUB_STEP_SUMMARY -Value "- 🔴 Tests failed" -Encoding utf8
                  }
            - name: Extract version
              id: extract-version
              run: |
                  (Get-Content -Path Cargo.toml -Raw) -match 'version = "(.*?)"'
                  echo "VERSION=$matches[1]" >> $env:GITHUB_OUTPUT
            - name: Create release
              env:
                  GH_TOKEN: ${{ github.token }}
              run: |
                  gh release create "v${{ steps.extract-version.outputs.VERSION }}" "target/release/windough.exe" --generate-notes

                  if ($?) {
                      Add-Content -Path $env:GITHUB_STEP_SUMMARY -Value "- 🟢 Release successful" -Encoding utf8
                  } else {
                      Add-Content -Path $env:GITHUB_STEP_SUMMARY -Value "- 🔴 Release failed" -Encoding utf8
                  }

方式二:全局设置默认编码,用>>简写

先设置PowerShell的默认输出编码为UTF-8,后续步骤直接用>>追加内容,写法更简洁:

jobs:
    build:
        name: Build, Test and Release
        runs-on: windows-latest
        steps:
            - uses: actions/checkout@v4
            - name: Set UTF-8 encoding for step summary
              run: $PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
            - name: Prepare breakdown
              run: "### Breakdown" >> $env:GITHUB_STEP_SUMMARY
            - name: Build
              run: |
                  cargo build --release --verbose

                  if ($?) {
                      "- 🟢 Build successful" >> $env:GITHUB_STEP_SUMMARY
                  } else {
                      "- 🔴 Build failed" >> $env:GITHUB_STEP_SUMMARY
                  }
            - name: Run tests
              run: |
                  cargo test --verbose

                  if ($?) {
                      "- 🟢 Tests passed" >> $env:GITHUB_STEP_SUMMARY
                  } else {
                      "- 🔴 Tests failed" >> $env:GITHUB_STEP_SUMMARY
                  }
            - name: Extract version
              id: extract-version
              run: |
                  (Get-Content -Path Cargo.toml -Raw) -match 'version = "(.*?)"'
                  echo "VERSION=$matches[1]" >> $env:GITHUB_OUTPUT
            - name: Create release
              env:
                  GH_TOKEN: ${{ github.token }}
              run: |
                  gh release create "v${{ steps.extract-version.outputs.VERSION }}" "target/release/windough.exe" --generate-notes

                  if ($?) {
                      "- 🟢 Release successful" >> $env:GITHUB_STEP_SUMMARY
                  } else {
                      "- 🔴 Release failed" >> $env:GITHUB_STEP_SUMMARY
                  }

两种方式都能确保内容按步骤顺序追加到摘要末尾,GitHub会正确解析显示顺序。

内容的提问来源于stack exchange,提问作者SirGolem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 18:08:10