【发布时间】:2018-03-12 10:10:23
【问题描述】:
我目前在我的 gitlab 项目中有一个 yml 脚本,它在 Windows 7 Enterprise 的 powershell 环境中运行,以便在我的 CI 过程中自动执行一些操作。
我添加了一条挂起进程的行,它永远不会完成...我怀疑该命令由于某种原因不是 100% 对 powershell 友好:
- 'msiexec.exe /i "$vars["setup"]" /qn /L*V "F:\Logs\install.log"'
- 'msiexec.exe /x "$vars["setup"]" /qn /L*V "F:\Logs\install.log"'
因此我决定将其更改为具有许多'和'的对应命令的新命令,因此 yml 验证器不接受它:
- '(Start-Process -FilePath msiexec.exe -ArgumentList "/i $vars['setup'] /qn /L*V 'F:\Logs\install.log'" -Wait -PassThru).ExitCode'
- '(Start-Process -FilePath msiexec.exe -ArgumentList "/x $vars['setup'] /qn /L*V 'F:\Logs\install.log'" -Wait -PassThru).ExitCode'
我的问题是,在这种情况下安装和卸载应用程序的最佳方式是什么? (第一个或第二个选项(甚至是一个新选项))
我应该更正什么才能运行它?
提前非常感谢!
编辑:
这里是完整的.gitlab-ci.yml:
installAndUninstallNewestSetup:
stage: installAndUninstallNewestSetup
script:
- '$vars=@{}'
- '$vars["base"]="\\setupfolder\Debug"'
- '$vars["setuppath"] = gci $vars["base"] -Directory | sort CreationTime -desc | select -f 1'
- '$vars["setuppath"] = $vars["base"]+"\"+$vars["setuppath"].Name'
- '$vars["setupname"] = gci $vars["setuppath"] | Where-Object { $_.Extension -eq ".msi" } | sort CreationTime -desc | select -f 1'
- '$vars["setup"] = $vars["setuppath"]+"\"+$vars["setupname"].Name'
- 'echo $vars["setup"]'
- '(Start-Process -FilePath msiexec.exe -ArgumentList "/i **$vars["setup"]** /qn /L*V F:\Logs\install.log" -Wait -PassThru).ExitCode'
- '(Start-Process -FilePath msiexec.exe -ArgumentList "/x **$vars["setup"]** /qn /L*V F:\Logs\install.log" -Wait -PassThru).ExitCode'
tags:
- SuperDupperApp
when: manual
【问题讨论】:
标签: powershell validation yaml gitlab-ci windows-installer