簡體   English   中英

如何使用環境使用 Azure DevOps Pipelines 機器文件復制?

[英]How to use Azure DevOps Pipelines Machine File Copy Using Environments?

我需要將文件從 ADO 移動到 VM。 此 VM 使用“環境”設置並適當標記。 我想使用其環境名稱和標簽將這些文件復制到該 VM。 到目前為止,我只找到了需要存儲管理員登錄名的“Windows 機器文件副本”。 有沒有辦法使用環境而不是硬編碼登錄?

您可以設置 YAML 管道,如下所示:

  1. 如果要將構建工件文件復制到 VM,請參考以下示例。
    • Build階段設置作業以構建源代碼,並發布工件文件以供使用。

    • Deploy階段,當在 VM 上設置具有environmentdeployment作業時,此作業中的所有步驟都將在此 VM 上運行。 deployment作業中,在第一步,它會自動將工件文件下載到 VM 上的工作目錄。

    • 然后,您可以使用 CopyFiles 任務將工件文件復制到 VM 上的任何可訪問目錄。

stages:
- stage: Build
  displayName: 'Build'
  . . .

- stage: Deploy
  displayName: 'Deploy'
  dependsOn: Build
  condition: succeeded()
  jobs:
  - deployment: Deployment
    displayName: 'Deployment'
    environment: '{EnvironmentName.ResourceName}'
    strategy:
      runOnce:
        deploy:
          steps:
          - task: CopyFiles@2
            displayName: 'Copy Files to: {Destination Directory}'
            inputs:
              SourceFolder: '$(Pipeline.Workspace)/drop'
              Contents: '**'
              TargetFolder: '{Destination Directory}'
              CleanTargetFolder: true
  1. 如果您要復制 VM 的文件是存儲庫中的源文件,請參考以下示例。
stages:
- stage: Deploy
  displayName: 'Deploy'
  dependsOn: Build
  condition: succeeded()
  jobs:
  - deployment: Deployment
    displayName: 'Deployment'
    environment: '{EnvironmentName.ResourceName}'
    strategy:
      runOnce:
        deploy:
          steps:
          - checkout: self

          - task: CopyFiles@2
            displayName: 'Copy Files to: {Destination Directory}'
            inputs:
              SourceFolder: '$(Pipeline.Workspace)'
              Contents: '**'
              TargetFolder: '{Destination Directory}'
              CleanTargetFolder: true

有關更多詳細信息,您可以查看: https ://docs.microsoft.com/en-us/azure/devops/pipelines/process/environments-kubernetes?view=azure-devops

我一直在努力設置Azure Pipeline以將.Net Core 服務部署到VM 我有以下要求:

  1. 使用 YAML 文件而不是經典 UI
  2. 部署為 Windows 服務而不是 IIS
  3. 在管道中使用階段
  4. 我正在使用 monorepo 和 MyService 文件夾中的服務
  5. 此外,我有一個外部 NuGet 提要
  6. 我的解決方案由幾個項目組成,而我只構建了其中一個
  7. appsettings.release.json 被替換為保留在服務器上以保留設置的那個

我受到Bright Ran-MSFT回答的啟發,並建議了我完整的 azure-pipelines.yml文件

trigger:
  branches:
    include:
      - staging
  paths:
    include:
      - MyService

pool:
  vmImage: "windows-latest"

variables:
  solution: "MyService/MyService.sln"
  buildPlatform: "Any CPU"
  buildConfiguration: "Release"

stages:
  - stage: Build
    jobs:
      - job: BuildJob
        steps:
          - task: NuGetCommand@2
            inputs:
              restoreSolution: "$(solution)"
              feedsToUse: "config"
              nugetConfigPath: "MyService/NuGet.Config"
          - task: VSBuild@1
            inputs:
              solution: "$(solution)"
              msbuildArgs: '/t:MyService:Rebuild /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:SkipInvalidConfigurations=true /p:OutDir="$(build.artifactStagingDirectory)\service_package"'
              platform: "$(buildPlatform)"
              configuration: "$(buildConfiguration)"
          - task: VSTest@2
            inputs:
              platform: "$(buildPlatform)"
              configuration: "$(buildConfiguration)"
          - task: PublishPipelineArtifact@1
            inputs:
              targetPath: '$(build.artifactStagingDirectory)\service_package'
              artifactName: "service_package"
  - stage: Deploy
    displayName: 'Deploy'
    dependsOn: Build
    condition: succeeded()
    jobs:
      - deployment: Deployment
        displayName: 'Deployment'
        environment: 'MainDeployEnv.MY_VM_SERVER'
        strategy:
          runOnce:
            deploy:
              steps:
                - task: CopyFiles@2
                  displayName: 'Copy Package to: C:\azservices\MyService\service'
                  inputs:
                    SourceFolder: '$(Pipeline.Workspace)/service_package'
                    Contents: '**'
                    TargetFolder: 'C:\azservices\MyService\service\'
                    CleanTargetFolder: true
                - task: CopyFiles@2
                  displayName: 'Replace appsettings.release.json'
                  inputs:
                    SourceFolder: 'C:\azservices\MyService\settings'
                    Contents: 'appsettings.release.json'
                    TargetFolder: 'C:\azservices\MyService\service\'
                    OverWrite: true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM