【发布时间】:2019-11-02 20:53:52
【问题描述】:
我正在将 GitHub Actions 设置为 one of my projects 的 CI,整个构建过程基本上是一个 PowerShell 脚本,由环境变量驱动。
这既是为了最大限度地减少供应商锁定,又是为了确保我可以使用几乎相同的过程在本地运行构建。
现在,我的构建脚本确定了一些内容并将其放入环境变量中 - 具体来说,我有一个 MH_IS_PROD_BUILD 变量,它可以是 True 或 False,并确定我推送到哪个 nuget 包存储库。
但是,当运行 shell 的步骤完成后,环境变量将不复存在,因为似乎在新环境中运行进一步的步骤。
我想要做的是这样的事情(缩写):
steps:
- name: Run build script
id: pwshbuild
shell: pwsh
run: |
cd scripts
./build.ps1
# The above sets $Env:MH_IS_PROD_BUILD to either True or False
- name: Push Publish to GPR (Dev Package)
if: steps.pwshbuild.outputs.MH_IS_PROD_BUILD == 'False'
shell: pwsh
run: |
# omitted: determine $nupkgPath
nuget push $nupkgPath -Source "GPR" -SkipDuplicate
- name: Push Publish to Nuget.org (Release Package)
if: steps.pwshbuild.outputs.MH_IS_PROD_BUILD == 'True'
shell: pwsh
run: |
# omitted: determine $nupkgPath
nuget push $nupkgPath -Source "NugetOrg" -SkipDuplicate
看来outputs 是我需要的,但这似乎需要创建自定义操作?
当然,上述方法不起作用(因此问)。所以我想知道,最好的前进方式是什么?
- 我可以从 PowerShell 设置步骤的输出吗? (首选)
- 我是否必须创建一个自定义操作来封装我对 build.ps1 的调用,以便我可以通过输出返回内容?
【问题讨论】:
标签: github-actions