Azure DevOps Server (TFS) のエージェントの再構成を行う機会があったので記録を残しておきます。
サーバー機の交換と、ついでに、TFS から Azure DevOps Server にアップデートしました (してもらいました)。これに伴って、自動ビルドのエージェントの再構成を行いました。変更するのはサーバー名だけです。
なお、自動ビルドのセットアップについては次の記事を参照してください。
既存の構成を上書きすることはできない
config.cmd
を実行すると次のように表示されました。構成の上書きはできないようです。
C:\agent> .\config.cmd
エージェントは既に構成済みなので構成できません。エージェントを再構成するには、最初に `config.cmd remove' か './config.sh remove' を実行してください。
config.cmd remove で既存の構成を削除する
remove
を指定して既存の構成を削除します。
構成の削除には旧サーバーが必要
削除を試みたのですが失敗しました エージェントの削除には旧サーバーが必要なようです。
C:\agent> .\config.cmd remove
エージェントをサーバーから削除しています
認証の種類 を入力する (Integrated の場合は、Enter キーを押します) > <Enter>
サーバーに接続しています ...
失敗: エージェントをサーバーから削除しています
An error occurred while sending the request.
旧サーバーを立ち上げてもう一度。今度は成功しました
C:\agent> .\config.cmd remove
サービスを削除しています
エージェントをサーバーから削除しています
認証の種類 を入力する (Integrated の場合は、Enter キーを押します) > <Enter>
サーバーに接続しています ...
成功: エージェントをサーバーから削除しています
.credentials を削除しています
成功: .credentials を削除しています
.agent を削除しています
成功: .agent を削除しています
旧サーバーを動かすことができないときは設定ファイルを削除する
旧サーバーが既に存在しない、立ち上がらない、ということもあると思います。その場合は、 C:\agent
フォルダーの次のファイルを削除すれば、クライアントの登録情報を削除できるはずです。
.agent
.credentials
.credentials_rsaparams
-
.service
(エージェントをサービスとして実行しているとき)
config.cmd で新しく構成する
config.cmd
を実行し、指示に従って入力して、構成できました
C:\agent> .\config.cmd
>> 接続:
サーバー URL を入力する > http://<サーバー名>:8080/tfs
認証の種類を入力する (Integrated の場合は、Enter キーを押します) > <Enter>
サーバーに接続しています ...
>> エージェントを登録する:
エージェント プール を入力する (default の場合は、Enter キーを押します) > <エージェント プール名>
エージェント名 を入力する (<クライアント名> の場合は、Enter キーを押します) > <Enter>
ツール機能をスキャンしています。
サーバーに接続しています。
置き換えますか? (はい/いいえ) を入力します (N の場合は、Enter キーを押します) > y
エージェントが正常に置き換えられました
エージェントの接続をテストしています。
作業フォルダー を入力する (_work の場合は、Enter キーを押します) > <作業フォルダー>
0000-00-00 00:00:00Z: 設定が保存されました。
エージェントをサービスとして実行しますか? (はい/いいえ) を入力する (N の場合は、Enter キーを押します) > y
サービスに使用するユーザー アカウント を入力する (NT AUTHORITY\NETWORK SERVICE の場合は、Enter キーを押します) > <Enter>
サービス vstsagent.<サーバー名>.<クライアント名> が正常にインストールされました
サービス vstsagent.<サーバー名>.<クライアント名> で回復オプションが正常に設定されました
サービス vstsagent.<サーバー名>.<クライアント名> は正常に構成されました
サービス vstsagent.<サーバー名>.<クライアント名> は正常に開始されました
この後、新しいサーバーからのパイプラインの実行にも成功しました。