【发布时间】:2021-12-05 11:01:36
【问题描述】:
我在 macOS 通道中完成了这一步:
jobs:
macOS_build:
runs-on: macOS-latest
steps:
- uses: actions/checkout@v1
- name: Build in DEBUG and RELEASE mode
run: ./configure.sh && make DEBUG && make RELEASE
然后我这样成功拆分:
jobs:
macOS_build:
runs-on: macOS-latest
steps:
- name: Build in DEBUG and RELEASE mode
run: |
./configure.sh
make DEBUG
make RELEASE
此转换有效,因为如果 make DEBUG 失败,make RELEASE 将不会执行,整个步骤将被 GitHubActions 标记为 FAILED。
但是,尝试从 Windows 通道转换它:
jobs:
windows_build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v1
- name: Build in DEBUG and RELEASE mode
shell: cmd
run: configure.bat && make.bat DEBUG && make.bat RELEASE
到这里:
jobs:
windows_build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v1
- name: Build in DEBUG and RELEASE mode
shell: cmd
run: |
configure.bat
make.bat DEBUG
make.bat RELEASE
不起作用,因为奇怪的是,只执行了第一行。所以我尝试将shell属性更改为powershell:
jobs:
windows_build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v1
- name: Build in DEBUG and RELEASE mode
shell: powershell
run: |
configure.bat
make.bat DEBUG
make.bat RELEASE
但是这失败了:
configure.bat : 术语“configure.bat”未被识别为名称 cmdlet、函数、脚本文件或可运行程序的名称。检查 名称的拼写,或者如果包含路径,请验证路径 是正确的,然后再试一次。
然后我看到this other SO answer,所以我把它转换成:
jobs:
windows_build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v1
- name: Build in DEBUG and RELEASE mode
shell: powershell
run: |
& .\configure.bat
& .\make.bat DEBUG
& .\make.bat RELEASE
这最终独立启动了所有批处理文件,但它似乎忽略了退出代码(因此如果 configure.bat 失败,它仍会运行下一行)。
知道如何正确分隔 GithubActions 工作流程中的行吗?
【问题讨论】:
标签: windows powershell batch-file github-actions exit-code