【发布时间】:2019-09-05 02:49:42
【问题描述】:
我运行以下脚本来在 Windows 机器上构建我的 Ionic 应用程序的 Windows 版本。 Jenkins 安装在 Mac 上,下面在 Windows 机器上运行远程代理。
pipeline {
agent none
stages {
stage('Build Windows') {
agent {
label 'windows'
}
environment {
PATH="C:\\Windows\\System32;C:\\Windows\\System32\\Wbem;C:\\Program Files\\nodejs;C:\\Users\\pchapman\\AppData\\Roaming\\npm;C:\\Program Files (x86)\\Windows Kits\\10"
}
steps {
checkout scm
println "installing packages"
bat 'npm install'
println "Building"
bat 'ionic cordova build windows --prod --release -- --archs="x86 x64 arm" --buildConfig=platform_build_files\\windows\\build.config'
println "Copy built images"
bat 'ren platforms\\windows\\AppPackages\\CordovaApp.* platforms\\windows\\AppPackages\\MyApp.*'
bat 'if not exist c:\\MyAppBuilds mkdir c:\\MyApp'
bat 'copy platforms\\windows\\AppPackages\\*.appxupload c:\\MyAppBuilds'
}
}
}
一切正常,直到 println“复制构建的图像”之后的 3 个 bat 步骤,我看到以下错误...
[Pipeline] echo
Copy built images
[Pipeline] bat
c:\jenkins\workspace\myApp>ren platforms\windows\AppPackages\CordovaApp.* platforms\windows\AppPackages\MyApp.*
The syntax of the command is incorrect.
我也尝试将batcommand 放在script: {}block 中,但这也不起作用。
其他 bat 命令可以工作(例如 bat ionic cordova build windows`),所以想知道为什么这些简单的 cmd 提示命令不工作?
我能做到以上几点,如果可以,我需要使用什么语法?
【问题讨论】:
-
可能是字符转义问题?你可以在没有 Jenkins 的情况下运行该命令吗?
-
@Alex - 我有多愚蠢!?是的,你是对的,我测试了命令,然后添加了路径。 dest 文件名不应包含路径。应该是
bat 'ren platforms\\windows\\AppPackages\\CordovaApp.* MyApp.*',这很好用,谢谢!