uncategorized

自動化建置取得不同VSTS平台內的Packages Manager套件

自從VSTS有了Packages的功能,可以讓我們自建團隊私有的Nuget後,就習慣把大量可以Re-Use套件放上去,可以讓整個團隊共同使用這些套件。不過,如果給自己團隊是沒有甚麼問題,今天要跨團隊使用呢?就是給在不同專案成員也用你開發的Package,在同一個VSTS URL下,只要去設定Feed權限也就可以,如下圖,在BestFeed下設定給予要讀取此Package的人員那些權限

但是,如果今天是不同VSTS呢,例如 BBB.visualstud.com 要去讀取 AAA.visualstud.com Packages內的套件,又或是其他版控平台要來讀取AAA.visualstud.com Packages內的套件。當然第一前提依舊必須本身你有在AAA.visualstud.com內有帳號,如果沒有帳號一切就別談囉

以為有帳號就可以嗎?如果在Visual Studio內是沒問題,是可以正常把套件裝起來,不過,這時候你會發現必須先輸入AAA.visualstud.com帳號密碼,一旦做了自動化建置,並不會跳出這樣需求視窗,這時候就會發生找不到這個在AAA.visualstud.com內套件問題,想當然而就會build失敗了。要解決這問題採用一個最簡單方式,就是把驗證資訊設定在Nuget.config

假設原本的Nuget.config是這樣設定

1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<apikeys>
</apikeys>
<packageSources>
<clear />
<add key="AAA" value="https://AAA.pkgs.visualstudio.com/_packaging/BestFeed/nuget/v3/index.json" />
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
</packageSources>
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
</configuration>

這時候需要加入<packageSourceCredentials>屬性,剛剛提到需要可以驗證通過除了帳號還需要密碼,但密碼不是使用這組帳號的密碼,而是必須產生一組PAT密碼,要建立PAT密碼可以參考這篇文章[打通自動化雲端部署到地端-安裝VSTS Agent ]

有了PAT密碼就把帳號與密碼資訊放入Nuget.config中,在<packageSourceCredentials>內要加一組跟PackageSources的Key Name一樣名稱的tag

1
2
3
4
5
6
<packageSourceCredentials>
<AAA>
<add key="Username" value="XXX" />
<add key="ClearTextPassword" value="123123123123123" />
</AAA>
</packageSourceCredentials>

並添加UsernameClearTextPassword,前者就是登入到AAA.visualstud.com,後者就是PAT密碼。完成後,在自動化建置中就可以去抓去對方的Package了