jjm*_*elo 3 powershell node.js github-actions
嗯,是的,这是一回事。在尝试直接运行 PS 脚本并失败后,让我们尝试从节点脚本运行它的迂回方式,这在 GitHub 操作环境中是合法的。所以经过多次尝试,这是我的最后一个(取自这个答案:
var spawn = require("child_process").spawn,child;
var workspace = process.env.GITHUB_WORKSPACE;
var file = workspace + "\\upgrade.ps1";
console.log( "Workspace ", workspace, " file ", file );
child = spawn("powershell.exe",[ file ]); // more stuff to print output after this
Run Code Online (Sandbox Code Playgroud)
这失败了:
Workspace d:\a\rakudo-star-fix-action\rakudo-star-fix-action file d:\a\rakudo-star-fix-action\rakudo-star-fix-action\upgrade.ps1
Powershell Errors: d:\a\rakudo-star-fix-action\rakudo-star-fix-action\upgrade.ps1 : The term
Powershell Errors: 'd:\a\rakudo-star-fix-action\rakudo-star-fix-action\upgrade.ps1' is not recognized as the name of a cmdlet, function,
script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is
correct and try again.
At line:1 char:1
+ d:\a\rakudo-star-fix-action\rakudo-star-fix-action\upgrade.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (d:\a\rakudo-sta...ion\upgrade.ps1:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Powershell Script finished
Run Code Online (Sandbox Code Playgroud)
我真的不知道这里发生了什么。node脚本和PS脚本在同一个目录下,是仓库的根目录,在那个环境变量下应该是可用的。
工作区实际上与您的文件在您的存储库中的位置不同。
在 nodejs 中,您可以编写以下内容来获取当前工作目录及其文件:
const directoryPath = __dirname;
console.log(directoryPath);
fs.readdir(directoryPath, function(err, files) {
if (err) {
console.log("Error getting directory information.")
console.log(err)
} else {
files.forEach(function(file) {
console.log(file)
})
}
})
Run Code Online (Sandbox Code Playgroud)
然后,您可以指定一个 const 变量const directoryPath = __dirname;,然后将其连接到您的var file:
const directoryPath = __dirname;
var spawn = require("child_process").spawn,child;
var file = directoryPath + "\\upgrade.ps1";
child = spawn("powershell.exe",["-NoProfile", "-File", file ])
Run Code Online (Sandbox Code Playgroud)
powershell 脚本应该从那里运行。
编辑:
我刚刚在此处的测试仓库中对此进行了测试
| 归档时间: |
|
| 查看次数: |
356 次 |
| 最近记录: |