簡體   English   中英

Azure DevOps - Git 存儲庫設置

[英]Azure DevOps - Git Repository setup

我們有一個應用程序依賴於多個獨立的代碼模塊——它們之間沒有交互。 請參閱下面的粗略示例:

  1. 模塊 1
    • 文件 1.1
    • 文件 1.2
    • 文件 1.3
  2. 模塊 2
    • 文件 2.1
    • 文件 2.2

…………

  1. 模塊 1000
    • 文件 1000.1
    • 文件 1000.2

考慮到代碼全部用於一個應用程序,但每個模塊彼此獨立,我如何為其設置存儲庫以使其完成以下任務:

  • 模塊 1 的拉取請求僅拉取模塊 1
  • 提交請求只提交模塊 1 的文件
  • Azure Devops部署只部署了Module 1的文件
    • 這是最關鍵的部分
    • 我不在乎用戶是否克隆了整個 1000 個模塊存儲庫只在模塊 1 上工作,只要當用戶提交分支並准備部署到 Production 時,它只部署了模塊 1 - 我無法部署處理將所有 1000 個模塊發送到生產環境只是因為模塊 1 被修改

我看到的唯一解決方案是為每個模塊創建一個 repo,但我希望有人知道比這更優雅的方法。

注意:我不是全職開發人員——我有更多的運營管理資格,而且我對 Git/repos/etc 的了解有限——所以我承認我可能遺漏了一條明顯的信息,這會使這個問題變得毫無意義。

為了實現您的目標,您應該考慮以下步驟:

  • 適當的CI/PR 觸發器只構建更改的模塊——每個存儲庫可以有多個構建。 您需要的只是單獨的 YAML 文件
 specific path build
trigger:
  branches:
    include:
    - master
    - releases/*
  paths:
    include:
    - Module-1/*
    exclude:
    - '*'

上面的配置只為 Module-1 設置了一個 CI 觸發器,忽略了其他目錄中的更改。 稍后在該腳本中,您可以為 Module-1 准備 package 和部署

上面的步驟應該給你選擇性的構建和部署,並且當更改傳播到許多模塊時 PR 失敗。 我知道這離可行的解決方案還很遠,但我希望至少我向您展示了您應該遵循的方向。

如果您有很多模塊並且不想為每個模塊創建管道,您可以考慮以下解決方法。

如果 module1 在您的 repo 的文件夾 module1 中。 您可以在腳本任務中運行 git 命令git diff --name-only HEAD HEAD~1以獲取更新哪個模塊。 並使用語句##vso[task.setvariable]將模塊文件夾設置為變量。 然后您可以配置構建任務以僅構建更改的模塊。 請查看以下示例:

查看文檔以了解有關task.setvariable的更多信息。 點擊這里了解更多關於條件的信息。

steps:
- powershell: |
    #get the changed files
    $a = git diff --name-only HEAD HEAD~1  

    #get the changed module folders
    $folders = $a | foreach {$_.split("/")[0]}

    #assign the folders to variable folderName
    echo "##vso[task.setvariable variable=folderName]$folders" 


 #this build task will only be executed when module1 changed
- task: VSBuild@1
  displayName: Build Module1
  condition: contains(variables.folderName, 'module1')

#this build task will only be executed when module2 changed
- task: VSBuild@1
  displayName: Build Module2
  condition: contains(variables.fileName, 'module2')

上面yaml是一個簡單的例子。 您可能需要根據您的項目稍微更改 powershell 任務腳本。 如果所有模塊都使用相同的構建配置,則只能使用一個構建任務。

暫無
暫無

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

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