在 Azure DevOps Service 上面的 Wiki 有兩種類型,一種是隨著專案一起建立的 Project Wiki 文件庫,另一種是隨著 Git Repo 特定分支的 Code Wiki 文件庫。然而 Project Wiki 一個專案只能有一個,而且建立之後預設是無法刪除的,無論透過 Web UI 或是 Azure CLI 都沒辦法。今天這篇文章我要來說明如何透過 Azure DevOps REST API 來刪除專案的 Project Wiki 文件庫。
使用 Azure CLI 與 Azure DevOps Service 的 PAT 登入
-
安裝 Azure CLI 命令列工具
Windows
choco install azure-cli -y
Linux (Ubuntu/Debian)
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
Linux (RHEL 7.7, RHEL 8, Fedora 24 and higher, CentOS 7 and CentOS 8)
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
echo -e "[azure-cli]
name=Azure CLI
baseurl=https://packages.microsoft.com/yumrepos/azure-cli
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc" | sudo tee /etc/yum.repos.d/azure-cli.repo
sudo dnf install azure-cli
-
加入 Azure DevOps 延伸模組
az extension add --name azure-devops
az extension show --name azure-devops
-
執行 az devops login 以登入
az devops login --org https://dev.azure.com/willh
Token: {{PAT}}
參考文件:使用個人存取權杖登入 (PAT) 與 建立個人存取權杖指南
-
設定組織與專案預設值
az devops configure --defaults organization=https://dev.azure.com/willh project=AppForK8S
az devops configure -l
如果預設值設定 organization
與 project
的話,之後的 --org
與 --project
參數都不需要輸入了!
建立 Wiki 文件庫
-
使用 Web UI 建立 Wiki 文件庫
你只要滑鼠點擊 Create project wiki 按鈕,這個 Project Wiki 文件庫就會立刻建立完畢,而且也無法刪除!🔥
如果點擊 Publish code as wiki 的話,還要另外設定你要從哪個 Repo、哪個 Branch、哪個 Path 下發布 Wiki 文件。預設他會將所有 *.md
檔案自動變成 Wiki 文件。
-
使用 Azure CLI 建立 Project Wiki 文件庫
az devops wiki create --org https://dev.azure.com/willh --project AppForK8S --type projectwiki --name AppForK8S.wiki
你不能在一個專案下建立兩個以上的 Project Wiki
-
使用 Azure CLI 建立 Code Wiki 文件庫
建立 Code Wiki 文件庫必須透過 --repository
指定 Git Repo 的名稱,以及透過 --version
設定哪個分支的文件要發布上來,而 --mapped-path
則是指定 Git Repo 的指定分支下的哪個資料夾要發布 Wiki 文件。
az devops wiki create --org https://dev.azure.com/willh --project AppForK8S --type codewiki --name AppForK8S_master --repository AppForK8S --version master --mapped-path /
-
使用 Azure CLI 列出特定專案下的所有文件庫
az devops wiki list --org https://dev.azure.com/willh --project AppForK8S
ID Name Type
------------------------------------ ---------------- -----------
69d8c99d-0b7e-46e3-ae4b-d6b5cab4a462 AppForK8S_master codeWiki
19324062-7664-453f-9def-6e94e1500de7 WILL.wiki projectWiki
刪除 Wiki 文件庫
-
使用 Azure CLI 刪除 Code Wiki 文件庫
az devops wiki delete --org https://dev.azure.com/willh --project AppForK8S --wiki AppForK8S_master --yes
-
使用 Azure DevOps REST API 刪除 Project Wiki 文件庫
Azure DevOps REST APIs 支援用 PAT 與 Basic Auth (基本驗證) 進行驗證,雖然大多數 API 都可以成功呼叫,但是對於安全性較高的資源 (如: 組織、個人資料),還是必須改用 OAuth 驗證取得 Token 才能操作。
你可以使用 cURL 搭配 --user USER:PASSWORD
參數,就可以輕鬆完成 Basic Auth 輸入,並且搭配 -X DELETE
只訂用 DELETE Verb 來刪除資源。不過前提是你要先知道 Project Wiki 的 ID 為何!
curl --user ':PAT' -X DELETE https://dev.azure.com/willh/AppForK8S/_apis/git/repositories/19324062-7664-453f-9def-6e94e1500de7?api-version=5.1
從上述網址你應該可以發現,這個 API 事實上是刪除一個 Git 儲存庫(Repo),而不是刪除一個 Wiki 文件庫,這是因為 projectWiki
會自動建立一個你無法存取的 Git 儲存庫(Repo),當你對 Wiki 任何文件做出編輯,都會直接轉成 git commit
到這個隱藏的 Repo 中,因此你才能在 Wiki 頁面看到版本資訊或 Diff 等功能。因此,你在刪除 Project Wiki 的時候,其實是刪除一個 Web UI 看不到的 Git 儲存庫(Repo),同樣的命令一樣可以用來刪除你其他的 Git 儲存庫(Repo)!
請注意,這裡的 19324062-7664-453f-9def-6e94e1500de7
就是你用 az devops wiki list
查出來的 ID
值!
相關連結