16

TeamCityは成功したビルドをgitリポジトリにプッシュできますか?

これを行うためのTeamCityの特定のビルドステップがわかりません。
TeamCityのバージョン7.1.1を使用しています

ありがとう、ヘンリック

アップデート:

回答ありがとうございます。少し複雑だと思います。成功したビルドのタグをグローバルリポジトリにプッシュバックするだけで、TeamCityがビルドのデータを取得できることがわかりました。そこから変更をプルして、最後のコミットが成功したかどうかを確認できます。

TeamCityがこの種のワークフローに簡単なオプションを提供してくれたら嬉しいです!

すべての開発者が、ビルドが成功したときにのみ更新されるリポジトリからプルできるとしたら、それは素晴らしいことです。それとも、ここで間違っているのでしょうか。

4

5 に答える 5

6

TeamCityに、後で呼び出すシェルスクリプトを実行させることができます(たとえば、別のリポジトリにプッシュするためにgit push、適切な引数を使用します)。プッシュ操作に対話型認証が必要ないgit push <repository>ことを確認してください。git

関連する例(を使用してHerokuにデプロイするgit push)は、http://blog.carbonfive.com/2010/08/06/deploying-to-heroku-from-teamcity/にあります。

于 2012-11-10T22:08:45.957 に答える
6

私はついにそれを作った!

teamcity プロジェクトにビルド パラメーターを追加する必要があります。

name= env.PATH
value= C:\Program Files (x86)\Git\cmd

次に、カスタム スクリプトを使用して新しいコマンドライン ビルド ステップを追加します。

call git push "C:\Gruene Git Repos\TeamCityApp" master

「コール」という言葉は重要です!

助けてくれてありがとう!ヘンリック

于 2012-11-12T08:17:24.923 に答える
5

8 以降にアップグレードすると、1 つ以上の「自動マージ」ビルド機能を作成できます。これにより、リモートリポジトリにプッシュされます。紛らわしい命名のために最初は見つけられませんでしたが、異なる命名で多くの異なるVCSをサポートする必要があることは理にかなっています.

于 2015-04-29T13:05:22.070 に答える
2

簡単な答え

しばらくの間、TeamCity は VCS ラベル付けをサポートしてきました。これにより、VCS ルート ユーザー (書き込み権限がある場合) は、バージョンまたは TeamCity が知っている他のものでビルドされたばかりのコミット ハッシュにタグを付けることができます (TeamCity のパラメーター参照の全リストを参照してください)。ウィキ)。

余談

別の回答で述べたように、TeamCity で利用可能な自動マージ機能は、指定されたブランチのリスト (ワイルドカードが有効) から要求されたブランチへのマージを自動的に実行し、監視およびビルドし、成功した場合にのみマージします。

自動マージ機能は優れていますが、テスト カバレッジが十分でない場合、開発者がテストのないものを壊してしまい、コードに問題が発生する可能性があるため、危険な場合もあります。これを防ぐ 1 つの方法は、プロジェクトがビルドされるたびに +2 テストを作成/実行することを要求することです (TeamCity で構成可能)。これらの警告は、自動マージ機能を発表する以前にリンクされた記事に記載されています。

関連決議

マージに直接関係しない同様の問題が発生しましたが、VCS ラベル付け (ひどい名前) を使用する場合に TeamCity が追加する「軽量タグ」(少なくとも Git の場合) を超えて、ジョブからいくつかの変更をプッシュする必要があります。

最終的に行ったことは次のとおりです。

  1. タイプ「環境変数」(ビルドエージェントに表示され、他のタイプは表示されない) のパラメーターを使用し、「仕様」を設定してタイプ「パスワード」のフィールドを作成し、入力されたテキストが構成に表示されないようにします。 UI またはジョブ ログ出力。
  2. ジョブ構成のパラメーターとしてユーザー名とパスワードを入力しました
  3. 「エージェント側」リポジトリの git リモート URL を調べ、URL にインラインでユーザー名とパスワードを含む新しいリモートを追加するスクリプトを作成しました ( http://gituser:gitpassword@githost.com/path/to/repo. git ) を使用して、変更を新しいブランチにプッシュします。
    • 次に、スクリプトの最後にあるリモートを削除して、システムにアクセスする人が資格情報を引き出せないようにします。もちろん、資格情報は特定のリポジトリにのみアクセスするようにかなり厳密にスコープされていますが、最小特権ルールに従うことは常に良いことです。
于 2016-09-21T21:42:49.200 に答える
0

私の解決策はばかげているかもしれませんが、簡単です。手順は次のとおりです。

  1. heroku git リポジトリから heroku を複製すると、heroku app フォルダーが作成されます。

    heroku git:clone -a {app-name}

  2. 更新する必要があるファイルを heroku にコピーします

    xcopy client "{app-name}/client" /e/i/h/y

    xcopy server "{app-name}/server" /e/i/h/y

    xcopy imports "{app-name}/imports" /e/i/h/y

  3. 追加します。

    cd {app-name} && git add .

  4. gitコミット

    cd {app-name} && git commit --message 'ok'

  5. ヒロクにプッシュ

    cd {app-name} && git push heroku master

于 2016-10-15T16:01:46.090 に答える