【问题标题】:Jenkins: how to rename and copy built files on a Windows via a remote agent using JenkinsfileJenkins:如何使用 Jenkinsfile 通过远程代理重命名和复制 Windows 上的构建文件
【发布时间】: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.*',这很好用,谢谢!

标签: jenkins jenkins-pipeline


【解决方案1】:

通过更改格式错误或不正确的路径解决了问题。

【讨论】:

  • 是的,应该是 bat 'ren platforms\\windows\\AppPackages\\CordovaApp.* MyApp.*' 并且工作正常。所以实际使用的方法是正确的(即bat)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-21
  • 1970-01-01
  • 2013-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-02
相关资源
最近更新 更多