如何建立與刪除 Azure DevOps 上面的 Project Wiki 文件庫 | The Will Will Web

The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何建立與刪除 Azure DevOps 上面的 Project Wiki 文件庫

在 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 登入

  1. 安裝 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
    
  2. 加入 Azure DevOps 延伸模組

    az extension add --name azure-devops
    
    az extension show --name azure-devops
    
  3. 執行 az devops login 以登入

    az devops login --org https://dev.azure.com/willh
    Token: {{PAT}}
    

    參考文件:使用個人存取權杖登入 (PAT)建立個人存取權杖指南

  4. 設定組織與專案預設值

    az devops configure --defaults organization=https://dev.azure.com/willh project=AppForK8S
    az devops configure -l
    

    如果預設值設定 organizationproject 的話,之後的 --org--project 參數都不需要輸入了!

建立 Wiki 文件庫

  1. 使用 Web UI 建立 Wiki 文件庫

    建立 Wiki 文件庫

    你只要滑鼠點擊 Create project wiki 按鈕,這個 Project Wiki 文件庫就會立刻建立完畢,而且也無法刪除!🔥

    如果點擊 Publish code as wiki 的話,還要另外設定你要從哪個 Repo、哪個 Branch、哪個 Path 下發布 Wiki 文件。預設他會將所有 *.md 檔案自動變成 Wiki 文件。

  2. 使用 Azure CLI 建立 Project Wiki 文件庫

    az devops wiki create --org https://dev.azure.com/willh --project AppForK8S --type projectwiki --name AppForK8S.wiki
    

    不能在一個專案下建立兩個以上Project Wiki

  3. 使用 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 /
    
  4. 使用 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 文件庫

  1. 使用 Azure CLI 刪除 Code Wiki 文件庫

    az devops wiki delete --org https://dev.azure.com/willh --project AppForK8S --wiki AppForK8S_master --yes
    
  2. 使用 Azure DevOps REST API 刪除 Project Wiki 文件庫

    Azure DevOps REST APIs 支援用 PATBasic 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 值!

相關連結