バグを説明する
セルフホストのランナーで実行されているカナリアリリースを検証しようとしています。このリリースは、プライベートのArtifactory npmレジストリから依存関係を取得し、その後、セルフホストのランナーで実行されるGitHubアクションを介してパッケージを公開します。 公開ステップ自体を除いて、すべてが正しく機能しているようで、次のように表示されます。
続いて、さらに下へ:
opsチームによって管理されているため、必ずしもランナー環境にアクセスできるとは限りませんが、次のことを確認しました。
/home/ubuntu/actions-runner/_work/fe-ui/fe-ui
.npmrc
ファイルはトークンエントリで正しく更新されているようです//artifactory.internal.livongo.com/artifactory/api/npm/npm-repository/:_authToken=${NPM_TOKEN}
.npmrc
ファイルは、 /home/ubuntu/.npmrc
内にあります。再現するには
予想される行動
スクリーンショット
環境情報:
追加のコンテキスト
追加情報を提供したいのですが、これ以上の情報はありません。 これを解決するのに役立つ可能性のある詳細を追加するには、どうすればよいですか?
あなたはlegacyAuthを使用しているようです。 最初にオフにしてみます
@hipstersmoothieは、レガシー認証を使用すると言うとき、 .npmrc
ファイルの_auth = [token]
を意味しますか? もしそうなら、そうではありません、そうでなければ、あなたは正確に何を意味し、どうやってそれをオフにしますか?
あなたはおそらくあなたのdevopsの人とこれを解決するために働くべきです。
アーティファクトの使用法に基づくいくつかのヒント:
npm
プラグインのsetRcToken
をfalse
に設定する必要もあります。出力のカナリアコマンドが_auth
フラグを使用していることに気付きました。これは、.autorcでlegacyAuth
がtrueに設定されている場合にのみ使用されます。
したがって、ローカルで実行できる手順は次のとおりです。
~/.npmrc
挿入しますsetRcToken
をfalse
設定していることを確認してください@hipstersmoothieああ、あなたは正しいです。legacyAuthをtrueに設定しました。これがないと(そして今、私があなたの提案を試しているので)、アーティファクトインスタンスから403Forbiddenを取得しています。 .npmrc
ファイルのトークンセット(元の投稿と同様ですが、実際のトークン)を使用してレジストリを設定しようとしましたが、まだ403が表示されています。これはおそらくopsセットアップの制限であると理解していますが、好奇心から、あなたのnpmrcはどうですか? 私たちのものは次のとおりです。
registry = https://artifactory.internal.livongo.com/artifactory/api/npm/npm-virtual
email = [email protected]
always-auth = true
save-exact = true
そしてpackage.jsonで:
"publishConfig": {
"registry": "https://artifactory.internal.livongo.com/artifactory/api/npm/npm-repository/"
},
URLの末尾がpublishとnpmのインストールで異なることに気付くでしょう。これは、キャッシュレイヤーのArtifactoryを通じて理解する必要がありましたが、Artifactory自体の専門家ではありません。 ローカルマシンからArtifactoryに公開するときに、これが(legacyAuthを使用して)認証を正しく機能させることができた唯一の方法だったことを覚えています。 現在、ローカル公開をブロックし、これをGitHub Actionsにオフロードしようとしていますが、運が良ければ、共有自動構成からlegacyAuthを削除してすべてのパッケージに配布する前に、その変更のカナリアを公開したいと思いましたが、残念ながら、legacyAuthがないために公開できなくなったため、公開できません(笑)。
これはかなり前に設定しましたが、実行する手順を伝えようとします。
npmrcを設定するための内部ドキュメントは次のとおりです
これ以外は、私はおそらくあまり助けにはならないでしょう。 アーティファクトリーは振る舞うのが少し難しいかもしれません
@hipstersmoothie私はあなたの助けに感謝します。 Artifactoryを動作させるという点では非常に正しいですが、インスタンスを管理するためのアクセス権を取得できず、DevOpsと行ったり来たりして物事を試す必要がある場合は、特に困難です。
とにかく、私はあなたの助けに感謝し、これでプラグインし続けます。 私はすでにそのスクリーンショットに示したものと同様の設定を模倣しようとしました(そして投稿後に確認するためにもう一度試しました)が、おそらくArtifactoryの設定が異なるため、私のユースケースでは機能しませんでしたわたしたちのため。 よろしければ、この問題を開いたままにしておきたいのですが、問題が解決した場合は、戻ってきて閉じます。 私はおそらくそのプロセスの一部としてautoの内部をステップスルーすることになるでしょう。
ええ、私はそれで大丈夫です。 優れたアーティファクトのセットアップ手順を思いついた場合は、それをドキュメントに追加することもできます
@hipstersmoothie私はこの行を見ています:
https://github.com/intuit/auto/blob/v10.21.3/plugins/npm/src/set-npm-token.ts#L37
私のローカルマシン(内部アーティファクトに到達可能)の場合、 isCi
がfalse
場合、公開できます。 上記で参照したローカルのnode_modules/@auto-it/npm/dist/set-npm-token.js
行をif (false) {
に変更すると、 isCi
がtrue
場合と同じ403エラーが発生します。
非ciに対して正しいか、ciに対して正しいかのどちらかです。 setTokenOnCI
がlegacyAuth
を考慮していないのではないかと思いますが、そうすべきですか?
私がこれを言ったところを見逃したかもしれないように見えます
setRcTokenがfalseに設定されていることを確認してください
setRcToken
をfalse
設定している場合、そのコードはすべてスキップされます
@hipstersmoothie setRcToken
をfalse
に設定すると、非常に良い応答が得られます。 githubアクションを介してアーティファクトにauto
を使用するのは、GOです。 ありがとう!
サポートに感謝します。問題を解決できます。ユーザー/セットアップエラー。
@hipstersmoothieこれを理解している間、しばらく