問題タブ [acr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
azure - Azure パイプライン Docker イメージの ACR URI プレフィックスが、個別のビルド、カスタム コマンド、プッシュ タスクで機能しない
ADO パイプライン ドキュメントといくつかの SO の質問/回答に基づいて、1 つのステップでイメージを構築し、別のステップで ACR にプッシュすることができるはずです。
ビルドステップで ACR URI プレフィックスを取得するイメージ名である「***/」プレフィックスの問題に遭遇しています。このSO 回答 (およびその他) のリンクです。
これを処理する必要がありますが、プッシュ ジョブが画像を見つけられないというエラーが引き続き発生します。
以下のパイプラインの短いバージョン (補足: イメージをアーティファクトとして公開し、後の複数の段階でダウンロードする必要があります。何度もビルドしたくありません)。
- ビルドステップが機能します
- イメージの保存ステップでは、'myacrregistry.azurecr.io' というプレフィックスが付いているイメージが検出されます。
- アーティファクトの公開ステップが機能する
- 次のステージの Load image ステップは機能します
- イメージのプッシュ ステップは失敗し、次の出力が表示されます。
私はこれを試しました
- Docker@2 ビルド タスク (以下)
- docker build を実行するスクリプトを使用した Bash@3 タスク ... イメージの前に ACR_URL を付けない
- docker build を実行するスクリプトを含む Bash@3 タスク ... およびイメージの前に ACR_URL を付ける
- イメージ プレフィックスを手動で指定する Docker@1 ビルド タスク
- myacrregistry.azurecr.io 文字列をプレフィックスとして使用する
- サービス接続リソース ID をプレフィックスとして使用する (多くの SO 投稿の 1 つで見た)
- サービス接続名をプレフィックスとして使用する
すべて同じ結果です。画像を保存しても画像を見つけるのに問題はありません。画像の読み込みは正常に行われます。プッシュ (試行) の直前に画像リストに画像が表示されていても、プッシュは失敗します。
プッシュ タスクの場合、イメージ名にプレフィックスを指定していないことに注意してください (試してみましたが、機能しません)。そのため、Docker@2 プッシュ タスクは、プレフィックスが何らかの文字列であると想定する必要があります。おそらく、その文字列は、イメージを構築するときに提供する ACR_URI ではないでしょうか? 残念ながら、プッシュステップで「***」の背後にあるものを確認する方法がわかりません。
何か案は?
編集: 以下のパイプラインは、ビルド ステップとプッシュ ステップが同じステージにある場合に機能します。(もちろん、保存、公開、読み込みは冗長です)
パイプライン YAML: