The Will Will Web

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

如何從 Azure Repos 的 Files 快速開啟 vscode.dev 編輯與查找檔案

應該很多人並不知道,其實在 Azure DevOps ServicesAzure Repos 中,長久以來都有一個很方便的功能,那就是可以在 Files 頁籤按下一個 . (小數點) 就可以立刻轉到 vscode.dev 網站,這是一套以雲端為主的 VS Code 編輯器,這樣你就不用將專案下載到本機,讓你可以直接用瀏覽器直接編輯版控中的檔案,還可以對所有檔案進行快速搜尋與取代,享用 VS Code 所有的功能,實在是非常方便。不過,我有好一段時間無法快速從 Azure Repos 順利開啟 vscode.dev 網站了,這篇文章我就來說說這個問題。

使用說明與問題描述

其實這個功能真的很簡單,正確的使用步驟如下:

  1. 先進入 Azure Repos 的 Files 頁面,先切換至你想進入編輯的 Git 分支

  2. 在瀏覽器上直接按下鍵盤的 . (小數點) 鍵

  3. 瀏覽器會自動進入 vscode.dev 網站,並且自動開啟你的專案

  4. 如果你的登入帳號有隸屬於多個 Microsoft Entra ID 目錄 (Tenant) 的話,會讓你選擇要用哪一個 Microsoft Entra ID 目錄 (Tenant) 來開啟專案!

    這個步驟對一般人來說簡單,但對我來說就稍微複雜點,因為我有十幾個 Microsoft Entra ID 目錄 (Tenant) 可以選擇:

    Choose an Azure Active Directory Tenant

    到底要選哪一個才正確,我並不知道,但我之前直接選擇我的登入帳號隸屬的 Microsoft Entra ID 目錄 (Tenant) 其實是沒問題的!

    直到幾個月前,突然專案就打不開了!

怎樣挑選 Microsoft Entra ID 目錄 (Tenant) 才是對的?

我今天才發現,原來這裡的 Microsoft Entra ID 目錄 (Tenant) 選擇的標準,其實並不是你的登入帳號所屬的 Microsoft Entra ID 目錄 (Tenant),而是你的 Azure DevOps Service 組織所屬的 Microsoft Entra ID 目錄 (Tenant) 才對!

首先,你的 Azure DevOps Service 組織到底隸屬於哪個 Microsoft Entra ID 目錄 (Tenant),有以下兩種可能:

  1. 只要 Azure DevOps Service 組織沒有綁定 Microsoft Entra ID 目錄 (Tenant),那就一定是在 Microsoft account 這個目錄底下。
  2. 只要 Azure DevOps Service 組織有綁定 Microsoft Entra ID 目錄 (Tenant),那就一定是在綁定的那個目錄底下。

我的 Azure DevOps Service 組織原本隸屬在 Microsoft account 目錄下,所以之前開啟 vscode.dev 一直都沒有問題,因為只要是在 Microsoft account 目錄下的 Azure DevOps 組織,在開啟 vscode.dev 之後,在選擇 Tenant 的步驟時,直接按下 Enter 選擇預設的那個 Tenant,就可以順利開啟 Azure Repos 中的 Git Repository!

但是從去年開始的某個時間點,我們公司為了申請 ISO 27001:2022ISMS 驗證,所以把 Azure DevOps 組織改成跟公司的 Azure AD (Microsoft Entra) 綁定。我其實並沒有意識到這個綁定的過程,會將整個 Azure DevOps 組織切換到公司的 Microsoft Entra ID 目錄 (Tenant) 底下。我一直以為這個綁定 Azure AD (Microsoft Entra) 的過程,只是單純的「綁定」而已,沒有想到這個綁定會影響到我用 vscode.dev 開啟 Repo 中的專案!

我今天才發現,原來我在進入 vscode.dev 的時候,所跳出的 Tenant 選擇,應該選的是我 Azure DevOps 組織目前隸屬的那個 Tenant 才對,而不是我的登入帳號所隸屬的 Tenant!🔥

Microsoft Entra

事情沒有想像中簡單!

老實說,要知道你的 Azure DevOps 組織到底隸屬於哪個 Tenant 並不是一件容易的事情,只要你的 Azure DevOps 組織沒有幫定 Azure AD (Microsoft Entra),就非常難判斷,尤其是當你的帳號隸屬於多個 Tenant 的時候。

首先,你從 Azure Repos 的 Files 按下 . 進入 vscode.dev 之後,所跳出的 Tenant 選單,上面顯示的清單,其實是你目前登入的帳戶加入的所有 Tenant 清單。

然後,我們在 Azure DevOps 組織中可以設定 Billing (帳單資訊) 綁定的 Azure 訂用帳戶 (Subscription),而綁定的 Azure 訂用帳戶 (Subscription) 也有自己隸屬的 Tenant,很抱歉,在 vscode.dev 開啟 Azure Repos 的時候,並不是看這組。

再者,當你從 Azure Repos 進入 vscode.dev 請你選擇的 Tenant,其實跟你登入帳號所屬的 Tenant 並沒有直接關係。這個清單其實是「你的登入帳號」有加入過的 Tenant 清單,但是你要選擇跟 Azure DevOps 隸屬的組織相符合的 Tenant 才能開啟專案。(這根本強人所難)

再來,你在進入 Azure DevOps 網站後,右上角的使用者頭像,滑鼠左鍵點擊之後看到的目錄,這也不是你的 Azure DevOps 組織隸屬的目錄,而是你的登入帳號所屬的目錄。

image

只要 Azure DevOps 組織沒有綁定 Azure AD (Microsoft Entra),就無法從 Azure DevOps 介面上看到這個 Azure DevOps 組織到底隸屬於哪個 Tenant,很直覺的你會選擇當前 Microsoft 帳戶隸屬的 Tenant,但這個選擇不一定是正確的。煩!

我在 Azure AD (Microsoft Entra) 目錄中,也完全搜尋不到任何跟 Azure DevOps 組織有關的資訊,所以也無法從這邊找到答案。超煩!

最後,我在詢問微軟技術支援中心之後,得到了一個確定的答案,那就是:

只要是沒有綁定 Microsoft Entra ID 目錄的 Azure DevOps 組織,就一定是 Microsoft account 這個目錄!

簡單來說,這個答案比較無法透過「邏輯判斷」或「經驗法則」推敲出來,只能透過微軟這種官方的回答才能得到確定的答案。

追加一個最惱人的問題,我在觀念不清的情況下,遇到這樣的情境:

  1. 我有一個 Microsoft 帳戶 AA 隸屬於 TenantID1 這個 Tenant ID

    我的這個 Microsoft 帳戶 AA 擁有一個名為 name1 的 Azure DevOps 組織

    我用這個帳號登入到 vscode.dev 並嘗試開啟 Azure Repos 的專案時,我可以從 TenantID1 看的到 name1 這個 Azure DevOps 組織。

    感覺上,我的 name1 隸屬於 TenantID1 這個 Tenant ID

  2. 我有一個 Microsoft 帳戶 BB 隸屬於 TenantID2 這個 Tenant ID

    我的這個 Microsoft 帳戶 BB 擁有一個名為 name2 的 Azure DevOps 組織

    我用這個帳號登入到 vscode.dev 並嘗試開啟 Azure Repos 的專案時,我在 TenantID2 是看不到 name2 這個 Azure DevOps 組織的。

    我必須選擇 Tenant1 這個 Tenant ID 才看的到 name2 這個 Azure DevOps 組織。

    感覺上,我的 name2 隸屬於 TenantID1 這個 Tenant ID。但為什麼要這樣?

總之就是很難理解,我不懂為什麼微軟要把這件事搞得這麼複雜!😒

結論

總之,我的 Azure DevOps 組織到底跟哪個 Tenant 關聯,我現在已經有答案了,以下是本篇文章的幾個重點:

  1. 在開啟 Azure DevOps 的組織首頁後,你從右上角使用者頭像的地方點擊頭像展開,所顯示的 Tenant 名稱是「登入帳戶」隸屬的 Tenant,而非 Azure DevOps 組織連結的 Tenant 目錄。

  2. 判斷 Azure DevOps 組織連結哪個 Microsoft Entra ID (Tenant)

    只要是沒有綁定 Microsoft Entra ID 目錄的 Azure DevOps 組織,就一定是 Microsoft account 這個目錄!

    只要將 Azure DevOps 組織跟 Microsoft Entra ID 綁定,那就是最好判斷的了,在 Organization settings > Microsoft Entra ID 頁面就可以看到。同時,這也是微軟比較建議的使用方式,且 Azure DevOps 所提供的功能也會比較完整。

  3. 如果你想看到目前登入帳號可以存取哪些 Microsoft account 目錄下的所有 Azure DevOps 組織,可以到以下網站查看:

    https://aex.dev.azure.com/me

    你實際上沒辦法查詢 Microsoft account 下有多少 Azure DevOps 組織,只能從 https://aex.dev.azure.com/me 這個網址進入,然後手動切換到 Microsoft account 這個 Tenant 之後,從頁面的右側查看有哪些 Azure DevOps 組織(有存取權限的組織才會顯示出來)。

  4. 若開啟 Azure DevOps 的組織首頁,你在左側看到的那些「組織清單」其實是你的目前帳戶在「所有 Tenant 底下」有權限存取的組織清單。

    這裡的組織清單其實是不分 Tenant 的,所以是全部列出來!

  5. 若要查詢公司的 Microsoft Entra ID 目錄下所有連結的 Azure DevOps 組織,只有一種方法。

    請查閱 Get list of organizations backed by Microsoft Entra ID 文件。

分享一個不錯的應變措施

好,如果真的無法判斷 Azure DevOps 組織隸屬於哪個 Microsoft Entra ID 目錄 (Tenant),我們要怎樣挑選呢?我最終有找到一個不錯的應變措施(Workaround)!

  1. 先進入 vscode.dev 網站

  2. 點擊 Open Remote Repository

    Open Remote Repository

  3. 點擊 Open Repository from Azure Repos

    Open Repository from Azure Repos

  4. 選擇 Choose an Azure Active Directory Tenant

    你不會知道該選哪一個,請一個一個依序選擇 (亂猜就對了)

    這裡是選不到 Microsoft account 這個 Tenant 的,不知道為什麼會這樣!🔥

  5. 選擇 Choose an Azure DevOps Organization

    如果看不到任何 Azure DevOps 組織那就重新走一次步驟 1 ~ 4,並選擇另一個 Tenant 來試試看

  6. 選擇 Choose an Azure DevOps Project

    只要你選的到組織,這裡就選的到 Azure DevOps 組織中的專案

  7. 選擇 Choose a Repository

    選擇 Azure Repos 中的其中一個 Repository

  8. 再次選擇 AAD Tenant

    我不懂為何最後還要要再選擇一次 Tenant,基本上選擇跟步驟 4 一樣的 Tenant 即可!

就這樣,是不是超煩的,但一定能夠成功在 vscode.dev 開啟 Azure Repos 中的原始碼專案!😅

相關連結

留言評論