この記事は「真空・大おちんちん感謝祭アドベントカレンダー」という存在しないアドベントカレンダーの25日目の記事です。メリークリスマス。
◆結論
Package: npm Authenticate task (for task runners)
◆何がしたいのか
Azure DevOpsはArtifactsっていう機能使えばオリジナルの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もyarnもpnpmもあるよね。ワイは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
◆結論(にかいめ)
俺のメガネのツルのところがゴム製なんだけど、くさい。こまめにアルコールで拭いてもまだ少しくさい。どうすれば。
コメントを残す