代码之家  ›  专栏  ›  技术社区  ›  hdev

Azure管道无法在go get之后执行命令

  •  0
  • hdev  · 技术社区  · 3 年前

    我想用 rsrc 在我的azure devops管道中的windows Go应用程序中设置图标。 我想我错过了一些琐碎的事情,我的管道没有找到命令 之后 go get -u -v github.com/akavel/rsrc

    我的解决方法是在vcs中使用rsrc.exe。

    管道

      - task: Go@0
        displayName: Install rsrc
        condition: eq(variables['agent.os'], 'Windows_NT')
        inputs:
          command: 'get'
          arguments: '-u -v github.com/akavel/rsrc'
          workingDirectory: $(System.DefaultWorkingDirectory) 
    
    
      - task: PowerShell@2
        displayName: Generate syso files
        timeoutInMinutes: 1
        condition: eq(variables['agent.os'], 'Windows_NT')
        inputs:
          targetType: 'inline'
          script: |
            $icon = ([System.IO.Path]::Combine("$(System.DefaultWorkingDirectory)", "build/App.ico"))
            $iconSyso = ([System.IO.Path]::Combine("$(System.DefaultWorkingDirectory)", "cmd/myapp/rsrc.syso"))
            rsrc.exe -ico $icon -o $iconSyso
          workingDirectory: $(System.DefaultWorkingDirectory)  
    

    错误

    rsrc.exe文件 无法识别为cmdlet、函数、脚本文件或可操作程序的名称 . 请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。

    更新

    1. go install github.com/akavel/rsrc
    2. $env:GOPATH
    0 回复  |  直到 3 年前
        1
  •  1
  •   Jane Ma-MSFT    3 年前

    我复制了你的错误:

    enter image description here

    我解决这个问题的方法是:

    GOPATH GOBIN 提前。

    variables:
      GOBIN:  '$(GOPATH)\bin' # Go binaries path
      GOPATH: '$(system.defaultWorkingDirectory)\gopath' # Go workspace path
      modulePath: '$(GOPATH)\src\github.com\$(build.repository.name)' # Path to the module's code
    

    然后添加 戈宾 PATH .

    - script: echo '##vso[task.prependpath]$(GOBIN)'
    

    所以完整的脚本应该是这样的:

    variables:
      GOBIN:  '$(GOPATH)\bin' # Go binaries path
      GOPATH: '$(System.DefaultWorkingDirectory)\gopath' # Go workspace path
      modulePath: '$(GOPATH)\src\github.com\$(build.repository.name)' # Path to the module's code
    
    steps:
    - task: Go@0
      displayName: Install rsrc
      condition: eq(variables['agent.os'], 'Windows_NT')
      inputs:
        command: 'get'
        arguments: '-u -v github.com/akavel/rsrc'
        workingDirectory: $(System.DefaultWorkingDirectory) 
    
    - script: echo '##vso[task.prependpath]$(GOBIN)'
    
    - task: PowerShell@2
      displayName: Generate syso files
      timeoutInMinutes: 1
      condition: eq(variables['agent.os'], 'Windows_NT')
      inputs:
        targetType: 'inline'
        script: |
          $icon = ([System.IO.Path]::Combine("$(System.DefaultWorkingDirectory)", "build/App.ico"))
          $iconSyso = ([System.IO.Path]::Combine("$(System.DefaultWorkingDirectory)", "cmd/myapp/rsrc.syso"))
          rsrc.exe -ico $icon -o $iconSyso
        workingDirectory: $(System.DefaultWorkingDirectory)