TFS 2015 では、選択したファイルを見つけ、トークンを置き換え (バージョン番号はトークンの開始位置)、ファイルへの変更を書き出し、ファイルをコメント付きでチェックインする vNext (VSTS) タスクを作成しました。変化の性質。これは、ビルド プロセス中の自動化によってすべて行われました。
DevOps 2020 にアップグレードしようとしており、2015 年の TFS 管理ツールは廃止されました。それ自体は問題ありませんが、ビルド プロセス中にこれらのファイルの変更を自動化する必要があります。変化する。
古いタスクは惨めに失敗し、直接移植されます。プロセスを C# コンソール アプリ プロジェクトとして書き直し、PowerShell スクリプト中に呼び出すことを計画しましたが、この計画には多くの障害があります。
私がこれまでにやってきたこと。
PowerShell スクリプトに渡すパラメーターを受け入れる VSTS タスク用の task.json を作成しました。
C# コンソール アプリケーションを呼び出して、タスクで指定されたファイル内のトークンを検索および変更する PowerShell スクリプトを作成しました。ファイルの内容を変更すると、元のファイルが上書きされます。
まだ解決できない問題が 2 つあります。
- パイプライン環境変数 $env:BUILD_BUILDNUMBER を C# コードから新しい値に変更することを期待しています (タスク パラメーターが指示する場合)。これにより、パイプラインが変数に加えられた変更を確認できるようになることを期待して、3 番目のパラメーターを使用して次の C# コマンドを使用しています。(パラメーターなしで試してみましたが、ユーザーとプロセスも役に立ちませんでした。)変数は、パイプラインがコンソール アプリの外部で参照できるように「設定」されません。
- 手順 2 で C# コードから行った変更をチェックし、短いコメントを付けてコード リポジトリに戻す必要があります。パイプラインが行う最初の 'Get' は tf を呼び出しますが、私は同じ成功を収めていません。VS2019 の tf.exe のコピーまたはビルド マシンの「externals」にあるエージェントのコピーを呼び出すと、C# からか、後の PowerShell スクリプトからかを問わず、「##[エラー] ワークスペースを特定できません。 'tf workspaces /collection:TeamProjectCollectionUrl'" を実行することで、これを修正できる場合があります。言うまでもなく、tf ワークスペースを実行するこの後の手順は役に立ちません。
これらに簡単な解決策があることを願っています。コードをチェックインする DevOps 2020 への API 呼び出しを検索しましたが、見つかりませんでした。おそらくそれは存在しません。環境変数に関しては、EnvironmentVariableTarget.Machine が機能しない理由が少しわかりません。##vso[] メソッドが呼び出されていないことと関係があると思われますが、コンソール アプリ (成功の場合は 0 を返し、そうでない場合は失敗の場合) から調査結果を PowerShell に渡す方法がわかりません。変数をより簡単に変更できるスクリプト。
これについて明るいアイデアがあれば、お寄せいただける洞察をいただければ幸いです。私はしばらくこれに取り組んできましたが、これを機能させるために他に何を検討すればよいかわかりません。