﻿# 使用 Azure CLI 管理 Azure DevOps Services 服務

Azure DevOps Services 提供相當完整的 CLI 命令列介面支援，早期你可以使用 [VSTS CLI](https://learn.microsoft.com/en-us/cli/vsts/overview?WT.mc_id=DOP-MVP-4015686&view=vsts-cli-latest) 來操作 Azure DevOps Services 與 Team Foundation Server (TFS)，但未來你可能要改用 [Azure CLI](https://learn.microsoft.com/cli/azure/install-azure-cli?WT.mc_id=DOP-MVP-4015686&view=azure-cli-latest) 並安裝 [Azure DevOps extension](https://github.com/Microsoft/azure-devops-cli-extension) 來管理 Azure DevOps 上的各種資源。本篇文章將介紹新版 Azure CLI with Azure DevOps extension 的相關用法。

![](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/4ecc9509f4a6973cd526-58751305-82427180-84cf-11e9-9f5c-97aefc5b3f88.png)

### 設定步驟

1.  請先安裝 [Azure CLI](https://learn.microsoft.com/cli/azure/install-azure-cli?WT.mc_id=DOP-MVP-4015686&view=azure-cli-latest) 命令列工具
    
    確認 Azure CLI 版本必須在 2.0.49 以上！
    
    ```bash
    az --version
    ```
    
    > 第一次使用 Azure CLI 的話，建議可以先執行 `az configure` 命令調整預設設定，尤其是調整 **default output format** 設定，這個設定預設為 `json`，方便透過不同 CLI 工具之間整合，但如果經常手動執行 CLI 命令，是可以調整為 `table` 排版會比較好看。
    
2.  替 Azure CLI 新增 Azure DevOps 擴充命令
    
    執行以下命令將會全自動安裝完成：
    
    ```bash
    az extension add --name azure-devops
    ```
    
    檢查目前已安裝的擴充命令：
    
    ```bash
    az extension list
    az extension show --name azure-devops
    ```
    
3.  第一次使用必須登入 Azure CLI
    
    ```bash
    az login
    ```
    
    第一次執行登入時，在 Windows 會自動開啟瀏覽器，並進入 [https://aka.ms/devicelogin](https://aka.ms/devicelogin) 網址，你直接透過瀏覽器登入後就可以關閉瀏覽器，回到 Azure CLI 命令列環境下就會發現自動登入成功。
    
4.  設定 Azure DevOps 預設組織與專案
    
    在使用 Azure CLI with Azure DevOps extension 的時候，雖然每個命令都可以特別指定 **組織** (organization) 與 **專案** (project)，但設定好預設值可以有效減少命令的長度，因此建議可以先設定好常用的**組織**或**專案**。
    
    僅設定預設組織：
    
    ```bash
    az devops configure --defaults organization=https://dev.azure.com/miniasp
    ```
    
    > 請注意：Azure DevOps Services 的網址都是 `https://dev.azure.com/` 開頭！
    
    設定預設組織與專案：
    
    ```bash
    az devops configure --defaults organization=https://dev.azure.com/willh project=AngularTW
    ```
    

### 常用 [az devops](https://learn.microsoft.com/en-us/cli/azure/ext/azure-devops/devops?WT.mc_id=DOP-MVP-4015686&view=azure-cli-latest) 命令

-   使用 Personal Access Token (PAT) 登入 Azure DevOps
    
    ```bash
    az devops login --organization https://dev.azure.com/contoso
    ```
    
    > 第一次使用可參考 [如何建立 PAT 金鑰說明文件](https://learn.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?WT.mc_id=DOP-MVP-4015686&view=azure-devops&viewFallbackFrom=vsts#create-personal-access-tokens-to-authenticate-access)
    
-   啟用 Git Alias 功能支援
    
    使用以下命令啟用 Git Alias 之後，之後只要在 Azure Repos 的 Git 工作目錄下執行 `git pr` 就等同於輸入 `az repos pr` 一樣，輸入 `git pr list` 就可以很便利的列出目前所有的 Pull requests 分支名稱；而輸入 `git repo list` 也可以自動幫你執行 `az repos list` 命令。
    
    ```bash
    az devops configure --use-git-alias true
    ```
    
-   列出所有專案
    
    ```bash
    az devops project list
    ```
    
    只列出**公開專案**
    
    ```bash
    az devops project list --query "[?visibility=='public']"
    ```
    
    只列出**私有專案**，且僅顯示**專案ID**、**專案名稱**與**專案說明**欄位
    
    ```bash
    az devops project list --query "[?visibility=='private'].{ProjectID: id, ProjectName: name, ProjectDescription: description}"
    ```
    
-   建立新專案
    
    ```bash
    az devops project create --name "demo1" -d "Demo purpose" -p "scrum" -s "git" --open
    ```
    
    -   `-p` 可以指定 Work item process，你可以設定 `basic`, `scrum`, `agile` (預設) 或 `cmmi`
    -   `-s` 可以指定版控的類型，你可以設定 `git` (預設) 或 `tfvc`
    -   `--open` 可以在建立完專案後自動開啟瀏覽器，直接進入專案首頁
    
    > 你也可以使用 `--visibility` 參數，設定 `private` (私有專案) (預設) 或 `public` (開源專案)
    
-   列出所有公告文字
    
    ```bash
    az devops admin banner list
    ```
    
-   新增公告文字
    
    ```bash
    az devops admin banner add -m '所有專案請用 Wikis 來撰寫說明文件！'  -t warning
    az devops admin banner add -m '!!! CAUTION: PLEASE DO SLEEP WELL' --expiration '2019-05-27 04:00:00 UTC' --org https://dev.azure.com/miniasp
    ```
    
    ![](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/6c834105e0d37c0ae2ae-58751953-02b9a000-84d9-11e9-874a-5976ad29eadd.png)
-   更新公告文字
    
    ```bash
    az devops admin banner update --id 3f52ed4b-f3af-400a-962a-bf2adb363019 -m '!!! CAUTION: PLEASE DO SLEEP WELL' --expiration '2019-05-27 04:00:00 UTC' -t error
    ```
    
    > 記得先用 `az devops admin banner list` 查詢出 banner ID
    
-   刪除公告文字
    
    ```bash
    az devops admin banner remove --id c40cacd3-cd48-4dd0-b790-64cc3804715b
    ```
    
    > 記得先用 `az devops admin banner list` 查詢出 banner ID
    
-   刪除所有公告
    
    ```bash
    az devops admin banner list -o json | jq 'keys | .[]' -r | xargs -I '{}' -s 10 az devops admin banner remove --id  '{}'
    ```
    
-   更多實用範例
    
    -   [azure-devops-cli-extension/samples.md at master · Azure/azure-devops-cli-extension](https://github.com/Azure/azure-devops-cli-extension/blob/master/doc/samples.md)

### 參考連結

-   [Azure DevOps Blog | Using Azure DevOps from the Command Line](https://devblogs.microsoft.com/devops/using-azure-devops-from-the-command-line/)
-   [Azure/azure-devops-cli-extension: Azure DevOps Extension for Azure CLI](https://github.com/Azure/azure-devops-cli-extension)
    -   [Get started](https://github.com/Azure/azure-devops-cli-extension/blob/master/doc/getting_started.md)
    -   [Samples](https://github.com/Azure/azure-devops-cli-extension/blob/master/doc/samples.md)
    -   [Command Mapping](https://github.com/Azure/azure-devops-cli-extension/blob/master/doc/command_mapping.md)
-   [azure-devops CLI References](https://learn.microsoft.com/en-us/cli/azure/devops)
    -   [az devops](https://learn.microsoft.com/en-us/cli/azure/ext/azure-devops/devops?WT.mc_id=DOP-MVP-4015686&view=azure-cli-latest)
    -   [az artifacts](https://learn.microsoft.com/en-us/cli/azure/ext/azure-devops/artifacts?WT.mc_id=DOP-MVP-4015686&view=azure-cli-latest)
    -   [az boards](https://learn.microsoft.com/en-us/cli/azure/ext/azure-devops/boards?WT.mc_id=DOP-MVP-4015686&view=azure-cli-latest)
    -   [az pipelines](https://learn.microsoft.com/en-us/cli/azure/ext/azure-devops/pipelines?WT.mc_id=DOP-MVP-4015686&view=azure-cli-latest)
    -   [az repos](https://learn.microsoft.com/en-us/cli/azure/ext/azure-devops/repos?WT.mc_id=DOP-MVP-4015686&view=azure-cli-latest)
-   [Azure DevOps Features Timeline](https://learn.microsoft.com/en-us/azure/devops/release-notes/)
-   Azure DevOps Services 擴充功能
    
    -   [Azure DevOps CLI - Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=ms-vsts.cli)
