【问题标题】:Bitbucket pipeline to deploy to Azure VM using Azure-cli command cannot access to script file使用 Azure-cli 命令部署到 Azure VM 的 Bitbucket 管道无法访问脚本文件
【发布时间】:2021-08-20 15:46:22
【问题描述】:

我在 Bitbucket 中有我的源代码,我正在使用 bitbucket 管道构建我的 Web 应用程序并将其部署到 Azure VM。

由于限制使用第三方工具,我没有使用 Azure Web 应用程序。

我不知道如何在我的 Azure cli 运行命令中使用脚本文件。

实际错误是:

"/opt/atlassian/pipelines/agent/build/SetupSimpleSite.ps1 : The term \n'/opt/atlassian/pipelines/agent/build/SetupSimpleSite.ps1' is not recognized as the name of a cmdlet, function, script \nfile, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct \nand try again.\nAt C:\\Packages\\Plugins\\Microsoft.CPlat.Core.RunCommandWindows\\1.1.8\\Downloads\\script1.ps1:1 char:1\n+ /opt/atlassian/pipelines/agent/build/SetupSimpleSite.ps1

我的管道代码:

    test-azure-cli-pipeline:
    - step:
        name: "Display Azure account"
        deployment: staging
        script:
        - pipe: microsoft/azure-cli-run:1.1.0
          variables:
            AZURE_APP_ID: $AZURE_APP_ID
            AZURE_PASSWORD: $AZURE_PASSWORD
            AZURE_TENANT_ID: $AZURE_TENANT_ID
            #CLI_COMMAND: 'az account show'
            CLI_COMMAND: 'az vm run-command invoke --command-id RunPowerShellScript --name $AZURE_VM_NAME --resource-group $AZURE_RESOURCE_GROUP_NAME --scripts $BITBUCKET_CLONE_DIR/SetupSimpleSite.ps1'
      

脚本 SetupSimpleSite.ps1 位于我的 Git 存储库的根目录下,与我的 bitbucket-pipelines.yml 目录相同

请注意,Azure cli 工作正常,因为 az account show 正在按预期显示帐户详细信息。

我在存储库中找不到任何有关如何使用 azure cli 源代码脚本的相关信息,链接:https://bitbucket.org/microsoft/azure-cli-run/src/master/

我希望将我的脚本 Powershell 保留在我的源代码中。

【问题讨论】:

    标签: bitbucket azure-cli bitbucket-pipelines


    【解决方案1】:

    我终于让它工作了,你应该在文件前加上'@'。

    我从那里找到了解决方案:Using the 'az vm run-command' with a .ps1 file

    所以这是最终的脚本工作:

        test-azure-cli-pipeline:
        - step:
            name: "Display Azure account"
            deployment: staging
            script:
            - pipe: microsoft/azure-cli-run:1.1.0
              variables:
                AZURE_APP_ID: $AZURE_APP_ID
                AZURE_PASSWORD: $AZURE_PASSWORD
                AZURE_TENANT_ID: $AZURE_TENANT_ID
                CLI_COMMAND: 'az vm run-command invoke --command-id RunPowerShellScript --name $AZURE_VM_NAME --resource-group $AZURE_RESOURCE_GROUP_NAME --scripts @SetupSimpleSite.ps1'
                DEBUG: 'true'
    

    debug true 很有用,谢谢 Chase

    【讨论】:

      【解决方案2】:

      首先将DEBUG: 'true' 添加到您的CLI_COMAND 中添加pwd ; ls ; 并验证您的路径是否正确,这是您收到的错误,因此很可能是问题所在。修复路径并再次测试。

      test-azure-cli-pipeline:
      - step:
          name: "Display Azure account"
          deployment: staging
          script:
          - pipe: microsoft/azure-cli-run:1.1.0
            variables:
              AZURE_APP_ID: $AZURE_APP_ID
              AZURE_PASSWORD: $AZURE_PASSWORD
              AZURE_TENANT_ID: $AZURE_TENANT_ID
              CLI_COMMAND: 'pwd ; ls ; az vm run-command invoke --command-id RunPowerShellScript --name $AZURE_VM_NAME --resource-group $AZURE_RESOURCE_GROUP_NAME --scripts $BITBUCKET_CLONE_DIR/SetupSimpleSite.ps1'
              DEBUG: 'true'
      

      如果这不起作用,请停止使用 azure-cli-pipe,而是使用带有 az-cli docker 映像的步骤:mcr.microsoft.com/azure-cli 并作为常规脚本运行...(我对az cli 知道如何配置凭据,但您应该知道。)

      - step:
          name: Run AZ script
          image: mcr.microsoft.com/azure-cli
          script:
            - az login -u $AZURE_APP_ID -p $AZURE_PASSWORD #setup az credentials
            - az vm run-command invoke --command-id RunPowerShellScript --name $AZURE_VM_NAME --resource-group $AZURE_RESOURCE_GROUP_NAME --scripts $BITBUCKET_CLONE_DIR/SetupSimpleSite.ps1'
      

      【讨论】:

        猜你喜欢
        • 2021-03-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-21
        • 2019-06-06
        • 1970-01-01
        • 2022-12-09
        • 1970-01-01
        • 2020-01-11
        相关资源
        最近更新 更多