さて、実際には何の答えもありませんが、それに対する警告があります。だから私はなぜこれをするのは迷惑で危険なのか理解し、これらのことを考えました。しかし私のチームプロジェクト/管理がどのように設定されているのか(少なくとも今のところ)、誰かがコミットしてJenkinsがBitBucketのコミットを取り消し、テストは失敗します。これを行うためのプラグイン/方法はありますか?ジェンキンスのビルド/テスト失敗時のロールバック
答えて
しかし、ブランチからHEADコミットを取り除くには十分に簡単ですが、いくつかの理由で実際にはこれをjenkinsジョブで安全に実行することはできません。
最初の理由は、1回のコミットを処理していない可能性があることです。ジェンキンがどのように構成されているか(例えば、待ち時間がある)に応じて、単一のジェンキンジョブは複数のコミットを包含することができる。さらに、ユーザーが複数のコミットを一度にプッシュした可能性があります。
第2に、Jenkinsが起動したときにJenkinsを開始したコミットがHEADにあるという保証はありません。 Jenkinsが実行されている間に誰かがプッシュするだけで、人間の介入なしには不可能な、もっと複雑なリベースを試みる必要があります(特に、デフォルトでは自動的にマージコミットを再開できません)。
master/developブランチからのコミットを削除するのではなく、gitlabsのようなものがマスターにマージするようなところにパターンを取り入れることを強くお勧めします。 jenkinsでマルチブランチパイプラインジョブを設定すると、自動的にブランチを構築し、gitlabsを設定して、jenkinsジョブが失敗している間はマージを防ぐことができます。アイデアは、タスクごとにブランチを作成し、その後、ジェンキンスがあなたのブランチにマスターをマージし、プルリクエストを提出するときにそれを構築するというものです。このビルドが成功すると、マスターにマージすることができます。
他の回答で述べたように、それは後よりも前にチェックする方が簡単です。
実際、試してみるともう一つのアイデアがあります。基本的に手動マージを繰り返します。誰かがそれを実装するのに成功し、経験を分かち合うのはうれしいことです。
- 開発者は決して直接
master
にプッシュしません。 (*) - 新しいコンテンツは
master-rc
にプッシュされます。これは常にmaster
からの早送りです。彼らはレビューやいくつかの事前チェックの後、プルリクエストからのマージの開発者から直接プッシュすることができます。それが構築した場合(**) - あなたのCIは、テストでは、すべてのチェックが成功した場合、ビルドの成果物が、保存されている
master
は早送りA
にある - など渡し、具体的には現在の
master-rc
からA
をコミットし、テストを取得します。その後、手順3に戻ります。 - チェックが失敗した場合、
master-rc
はmaster
にリセットされ、そこに使用されていた作成者には障害が通知されます。その後、手順3に戻ります。(***)
この方法では、マスターはビルド済みであることが常に確実です。
(*)例外的な場合を除き、エラーの場合と同様にmaster-rc
は新しいmaster
にリセットされます。または、おそらくこれが必要な場合はmaster
が壊れているので、解決するまで手順2〜6を停止するだけです。
(**)選択肢があります - ビルドサイクルとは独立していますが、新しいコンテンツは常にmaster-rc
以上あります - 次の項目を参照してください。あるいは、彼らはサイクルの開始まで待つ。後者は、必要に応じて自動的にマージ可能なプルリクエストがあり、マージが承認された方が便利です。
(***)master-rc
に内容がある場合、失敗したものと一緒に破棄することができます。これにより、作成者は再作成できます。または自動的にリベースされますが、これはすでにいくつかの複雑さです。
- 1. ビルド失敗ジェンキンス+ Mavenの+ SVN
- 2. Springトランザクション失敗ロールバック
- 3. Mavenビルドテストの結果が合格または失敗する
- 4. ステータスチェックの失敗時にロールバックするEC2のアップデートを実行中
- 5. 休憩APIの認証の失敗 - ジェンキンス
- 6. PHP PDO実行時にトランザクションのロールバックが失敗しますか?
- 7. SQL Server - 失敗したトリガーのロールバック
- 8. ジェンキンスGradleのビルドが原因のアプリに失敗:compileDebugKotlin
- 9. ジェンキンスのトリガーエラー、Pythonスクリプトの何かが失敗したとき
- 10. rubyでのロールバック移行の失敗を避けるには?
- 11. ORA-01562:ロールバック・セグメント番号の拡張に失敗しました
- 12. MySQLのコミットとロールバックに失敗しました
- 13. Sidekiqバックグラウンドジョブのロールバックが失敗した場合
- 14. MySQLでQtトランザクションのロールバックが失敗する
- 15. 失敗時のPythonロギングダンプ
- 16. 失敗時にSAPUI5
- 17. ユニットテストが失敗したときにジェンキンスが成功する(レール)
- 18. ジェンキンスがGradleデーモンを使用してビルドに失敗する
- 19. PyQtはテストスイートは、ジェンキンスと不思議に失敗し、Windowsコマンドシェル
- 20. mavenデプロイメントの失敗時にJenkinsビルドが失敗しない
- 21. Mavenの「チェックサム検証は、失敗したxxxの期待が、ためYYYである」ジェンキンスさんからのアップロードにジェンキンスは、Mavenのでビルドを随時
- 22. SqlPackage.exeを使用して失敗したDACPACをロールバックする
- 23. NuGet:パッケージ 'Microsoft.AspNet.WebApi.Client.5.2.3'は、インストールに失敗しました。ロールバック
- 24. ジェンキンスを使ったmavenプロジェクトの最初のビルドが失敗しました
- 25. 1つのオブジェクトがすべてのオブジェクトのロールバックに失敗した場合
- 26. Weblogicインジェクション失敗時のMDBのSpringBeanAutowiringInterceptor
- 27. Firebase。ログイン失敗時のネットワークタイムアウトの認証
- 28. テンプレートの失敗時にロールバックを無効にする方法を教えてください。
- 29. ステートレスBeanへの呼び出しでJPAトランザクションのロールバックが失敗する
- 30. ジェンキンスパイプラインの条件段階は成功しますが、ジェンキンスは失敗し