Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
對於某些工作流程,您需要建置管道才能執行 Git 命令。 例如,在功能分支上完成 CI 構建後,小組可能會想要將分支合併至主分支。
Git 適用於 Microsoft 裝載的代理程式 和內部部署代理程式 。
啟用指令碼以執行 Git 命令
備註
開始之前,請確定您的帳戶預設身分識別已使用下列程式代碼進行設定。 在簽出程式代碼後,這必須作為第一個步驟來完成。
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
將版本控制許可權授與組建服務
移至您組織的項目設定頁面,[組織設定]>[一般>專案]。
選取您要編輯的專案。
在 [項目設定]內,選取 [存放庫]。 選取您要執行 Git 命令的存放庫。
選取 [安全性],以編輯您的存放庫安全性。
搜尋 專案集合建置服務。 選擇身分識別 {{您的項目名稱}} 建置服務 ({您的組織}) (不是群組 專案集合建置服務帳戶 ({您的組織}))。 根據預設,此身分識別可以從存放庫讀取,但無法將任何變更推送回該存放庫。 授與您想要執行之 Git 命令所需的許可權。 通常你會想要給予:
- 建立分支: 允許
- 貢獻:允許
- 讀取: 允許
- 建立標籤: 允許
允許腳本存取系統令牌
請務必整理本機存放庫
建置管線不會自動清理本機存放庫中的某些變更類型。 因此請務必:
- 刪除您建立的本地分支。
- 復原 git 組態變更。
如果您使用內部部署代理程式遇到問題,請確定存放庫是乾淨的:
範例
列出存放庫中的檔案
在 [組建] 索引標籤上,新增此工作:
任務 | 論點 |
---|---|
![]() 公用程式:命令行 列出 Git 存放庫中的檔案。 |
工具: git 自變數: ls-files |
將功能分支合併至main
如果您希望 CI 建置在建置成功時合併至 main。
在 [觸發程式] 索引標籤上,選取 [持續整合] [CI],並包含您想要建置的分支。
在檔案庫根目錄創建 merge.bat
:
@echo off
ECHO SOURCE BRANCH IS %BUILD_SOURCEBRANCH%
IF %BUILD_SOURCEBRANCH% == refs/heads/main (
ECHO Building main branch so no merge is needed.
EXIT
)
SET sourceBranch=origin/%BUILD_SOURCEBRANCH:refs/heads/=%
ECHO GIT CHECKOUT MAIN
git checkout main
ECHO GIT STATUS
git status
ECHO GIT MERGE
git merge %sourceBranch% -m "Merge to main"
ECHO GIT STATUS
git status
ECHO GIT PUSH
git push origin
ECHO GIT STATUS
git status
在 [組建] 索引標籤上, 將此新增為最後一項工作:
任務 | 論點 |
---|---|
![]() 公用程式:批次腳本 執行 merge.bat。 |
路徑: merge.bat |
常見問題
如果我的遠端存放庫位於 GitHub 或其他 Git 服務,例如 Bitbucket Cloud,我可以執行 Git 命令嗎?
是的
我可以使用哪些工作來執行 Git 命令?
如何避免在腳本推送時觸發 CI 組建?
將 [skip ci]
新增至您的待提交訊息或描述。 範例如下:
git commit -m "This is a commit message [skip ci]"
git merge origin/features/hello-world -m "Merge to main [skip ci]"
您也可以使用這些變體來提交至 Azure Repos Git、Bitbucket Cloud、GitHub 和 GitHub Enterprise Server。
-
[skip ci]
或[ci skip]
-
skip-checks: true
或skip-checks:true
-
[skip azurepipelines]
或[azurepipelines skip]
-
[skip azpipelines]
或[azpipelines skip]
-
[skip azp]
或[azp skip]
***NO_CI***
我需要代理人嗎?
您需要至少一個 代理程式 來執行組建或發行。
我有問題 如何進行疑難解答?
請參閱 針對建置和發行進行疑難解答。
我無法選取預設的代理程式集區,而且無法將組建或發行排入佇列。 我要如何修正此問題?
請參閱 Agent 集區。
我的 NuGet 推送任務失敗,發生下列錯誤:「錯誤:無法取得本機簽發者憑證」。 如何修正此問題?
您可以透過新增受信任的根證書來修正此問題。 您可以將 NODE_EXTRA_CA_CERTS=file
環境變數新增至組建代理程式,或者您可以在管線中新增 NODE.EXTRA.CA.CERTS=file
工作變數。 如需此變數的詳細資訊,請參閱 Node.js 檔。 如需在管線中設定變數的指示,請參閱 在管線中設定變數。
我使用內部部署的 TFS,但看不到有些功能。 為什麼不呢?
部分功能僅在Azure Pipelines上可用,而尚未在內部部署提供。 如果您已 將某些功能升級至最新版本的 TFS,則某些功能可在內部部署使用。