我正在尝试在 Github Action 工作流程中从 git 获取最新标签 (
runs-on: windows-2022
)。
- name: Get the latest tag from Git
shell: pwsh
run: |
try {
$LATEST_TAG = git describe --tags --abbrev=0
} catch {
Write-Host "Failed to get the latest tag from Git. Setting LATEST_TAG to 'none'."
$LATEST_TAG = "none"
}
echo "LATEST_TAG=$LATEST_TAG" >> $env:GITHUB_ENV # Save latest tag to the environment file
问题是,只要历史记录中没有标签,
git describe
就会退出并显示错误代码。这应该不是问题,因为我用 try/catch 块包含代码。
$ErrorActionPreference
由 Github 设置为 stop
。
我似乎可以绕过 Github 前置和附加到脚本中的代码来避免这种行为,但我无法使其正常工作。
如果
git describe
返回错误,如何避免停止整个过程?
native 类型的命令(如
git
)默认情况下不会像 PowerShell 命令那样产生错误。了解差异的起点可能是 $PSNativeCommandUseErrorActionPreference
的 文档。
因此,如果您希望本机命令产生可以使用 try-catch 语句捕获的错误,则可以
$ErrorActionPreference
设置为“停止”。$PSNativeCommandUseErrorActionPreference
设置为 $true
。如果您根据 文档选择退出内置 shell,那就足够了:
用户始终可以通过不使用内置 shell 来选择退出,并根据需要提供自定义 shell 选项,例如:
或pwsh -File {0}
。powershell -Command "& '{0}'"
如果您坚持使用内置 shell,您可能必须在 catch 子句中将
$LASTEXITCODE
重置为 0,因为根据 相同的文档:
...操作状态反映了脚本的最后退出代码。