この記事は「真空・大おちんちん感謝祭アドベントカレンダー」という存在しないアドベントカレンダーの25日目の記事です。メリークリスマス。

◆結論

Package: npm Authenticate task (for task runners)

◆何がしたいのか

Azure DevOpsArtifactsっていう機能使えばオリジナルのnpmライブラリを配信できる。して、オリジナルなライブラリだから、そのライブラリを配信できるregistryが必要になりますよね。それもArtifactsから提供できる。提供できるんだけど、誰からでもregistryを使えるのは困る。だから認証が必要。

◆ローカルからregistry見る

ローカルだと話は簡単。

Azure DevOps (formerly VSTS) Auth helper for npm

ルートに置いてある.nmprcのファイルにregistryを指定する。

registry=[URL指定しろ]
always-auth=true

無いなら作る。作ったら

npm install -g vsts-npm-auth

して

vsts-npm-auth -config .npmrc

する。あとはいつもどおり。

◆ぱけまね

npmもyarnpnpmもあるよね。ワイはpnpm使ってます。

認証自体は、どのパッケージマネージャ使ってても上記手順でなんとかなる。

◆Azure Pipelineからregistry見ようとして失敗

職人の手による手動ビルド、手動リリースも温かみとか人情が感じられて趣深いんだけど、ダルいわ馬鹿野郎!やってられっか!

というのでCD/CIする。使ってるのはAzure Pipelineです。

CD/CIするわけだから、全てをコマンドラインで片付けねばならん。registryの認証も。vsts-npm-authにはオプションがあるから、パイプラインから以下のコマンド叩いてみた。

2020年12月現在、エージェント(ビルドマシン)にはデフォルトでvsts-npm-authがインストールされておらん。「npm install -g vsts-npm-auth」した。pnpmもインストールされていないから「npm install -g pnpm」を叩かなきゃだめ。

vsts-npm-auth -config .npmrc -N -F -V Detailed

エラー起きました。

Probe response code: 401 Unauthorized
(中略)
Microsoft.VisualStudio.Services.Common.VssUnauthorizedException: VS30063: You are not authorized to access https://hogehoge.vssps.visualstudio.com.

…ぎゃびび!(激怒)

◆npmでやる

pnpm使ってるからアレだけど、npmならすげぇ楽に認証できます。

npm task使って、installで「Custom registries and authentication」で「Registries in my .npmrc」してコンボボックスで「auth」すれば、それだけでできちゃう。

だけど、pnpmでローカル開発する以上、lockファイルはpnpm用になる。lockファイルの標準が策定されていないから他のパッケージマネージャーくんは読んでくれない。だから別のパッケージマネージャーでライブラリをinstallするとバージョンに差異が発生する。

するんだけど、「まぁ大丈夫やろ」と思っていたらもう表示がぶっ壊れましたよね(驚愕)。

◆認証

npm Authenticate task (for task runners)を使ってください。タスク入れて「.npmrc」ファイルの場所を指定するだけでいいっす。標準で用意されてるっす。vsts-npm-authとか不要っす。

npm install -g pnpm

npm Authenticate task (for task runners)で認証

pnpm install --frozen-lockfile
pnpm build

これで勝てる。

どういう操作になってんのか知りたいならソースを掘ってこい。

microsoft / azure-pipelines-tasks

◆結論(にかいめ)

俺のメガネのツルのところがゴム製なんだけど、くさい。こまめにアルコールで拭いてもまだ少しくさい。どうすれば。