DevOps でパイプライン スクリプトを成功させるための 4 つのコア要素

DevOps でパイプライン スクリプトを成功させるための 4 つのコア要素

[[429059]]

DevOps でアプリケーションを成功させるための複雑なパイプライン スクリプトを設計するには、次の側面を考慮する必要があります。

1. スクリプトの安定性: 例外処理メカニズムを使用して、例外が発生してもスクリプトが例外をキャプチャして実行を継続できるようにします。

2. スクリプト実行のタイムアウト処理: 待機時間が長くなることによって実行時間が無駄になるのを避けるために、構築時にタイムアウト メカニズムを考慮する必要があります。

3. ビルド結果の処理: 例外処理メカニズムにより、Jenkins ビルドの結果はすべて成功になります。ビルド結果またはステージ結果を制御および分析する場合は、ビルド結果をさらに処理する必要があります。

4. Groovyスクリプトの呼び出し: より複雑な機能を実装するために他のGroovyスクリプトを導入する

基本的なコード設計スタイル

スクリプトを書く通常の形式は

  1. ノード {
  2. ステージ( 'ビルド' ){
  3. // git ダウンロード コード
  4. // mvn クリーンインストール ビルドコード
  5. }
  6. ステージ( 'ユニットテスト' ) {
  7. // ユニットテストを実行する
  8. }
  9. ステージ( 'テスト' ) {
  10. // コア機能をカバーする自動テストスクリプトを実行する
  11. }
  12. ステージ( 'デプロイ' ){
  13. // 運用および保守スクリプトを実行し、プログラムをオンラインで展開します
  14. }
  15. }

スクリプトを安定させる

  1. ステージ( 'テスト' ){
  2. 試す {
  3. //処理するコード
  4. }キャッチ(エラー) {
  5. //エラー処理コード
  6. }
  7. catch(式) {
  8. //例外処理のコード
  9. }

スクリプト実行タイムアウト処理

シナリオによっては、Maven ビルド タイムアウト、テスト コード実行タイムアウトなどのスクリプト タイムアウトを処理する必要があり、その場合は次のようにコードを設計できます。

  1. 試す {
  2. タイムアウト(タイムアウト) {
  3. //タイムアウト処理コード
  4. }
  5. }
  6. キャッチ (式) {
  7. //タイムアウト例外をキャッチしてさらに処理する
  8. def error_msg = exp.getCauses()[0].toString()
  9. if (error_msg.find( "タイムアウトステップ実行" ) == "タイムアウトステップ実行" ) {
  10. //処理ロジック
  11. }
  12. }

ビルド結果の処理

try... catch... メソッドを使用すると、Jenkins ビルドの結果はすべて SUCCESS になります。ビルドまたはステージの結果を制御する場合は、次の方法に従います。

ビルド結果には、SUCCESS、UNSTABLE、FAILURE(ビルドが進行中の場合はnullを返す)が含まれます。

ビルドの最終結果を設定するには、変数currentBuild.resultを使用します。

currentBuild.result ='FAILURE' //ビルド結果を失敗に設定する

各ステージの結果を処理するには、catchErrorを使用する必要があります。

catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {} //ビルド結果を成功、ステージ結果を失敗に設定します

他のGroovyスクリプトをインポートする

GroovyクラスでAPIを呼び出す

  1. クラスデモ.groovy
  2. クラス MyClass {
  3. void test1() {
  4. println( "テスト1" )
  5. }
  6. 静的void test2() {
  7. println( "テスト2" )
  8. }
  9. }
  10. 新しいMyClass()を返す

呼び出し元に戻り値を返す必要があることに注意してください。つまり、return new MyClass()はインスタンスを返します。

Groovy スクリプトで関数を呼び出す

  1. デモ.groovy
  2. デフfun1(){
  3. println( "関数1" )
  4. }
  5. デフfun2(){
  6. 楽しい1()
  7. println( "func2" )
  8. }
  9. デフfun3(){
  10. 楽しい1()
  11. println( "func3" )関数
  12. }
  13. これを返す

また、呼び出し元に返り値を返す必要があることに注意してください。つまり、これを返す必要があります。

パイプラインで Groovy スクリプトを呼び出す

スクリプトを導入するには load を使用します。コードは次のとおりです

  1. ノード {
  2. def f= load ( "/opt/scripts/test/Demo.groovy" )
  3. f.fun1()
  4. def f2=ロード( "/opt/scripts/test/ClassDemo.groovy" )
  5. f2.テスト1()
  6. }

Jenkins共有ライブラリ方式

share メソッドを使用できます。公式ドキュメントを参照してください。

https://www.jenkins.io/doc/book/pipeline/shared-libraries/

<<:  今後3~5年間のITアーキテクチャの反復とアップグレード:従来型、クラウド、エッジコンピューティングのハイブリッドパス

>>:  製造業におけるクラウド コンピューティング: 不可能から不可欠へ

推薦する

casbay: マレーシア VPS/マレーシア クラウド サーバー、月額 11.59 ドルから、帯域幅 100M、トラフィック無制限

Casbayは2010年に設立され、主にマレーシアとシンガポールでVPS、クラウドサーバー、外貨両替...

360度検索トラフィックデータをめぐる論争後の考察

みなさんこんにちは。私はネット民の朱偉坤です。記事を書く目的は客観的に書くことです。個人攻撃はしない...

SEO担当者はトラフィックのある外部リンクを追求する必要がある

外部リンクは、多くのウェブマスターや SEO 担当者が苦労している難しい問題の 1 つです。ウェブサ...

#12.12# onetechcloud: すべての VPS が 20% オフ、香港 cn2、米国トリプルネットワーク cn2、米国 cn2 高防御

onetechcloudは香港に新しいデータセンターを追加し、中国電信はCN2を行き来し、中国聯通と...

過剰な最適化が降格につながる理由は何ですか?

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスウェブサイトが降格される...

中国で初めてドメイン名登録業者による侵害事件が新郷市で判決を受けた。

大河網(宋翔楽記者)インターネット上で国民の名誉が毀損され攻撃された場合、侵害発言を掲載したウェブサ...

羅清奇:国美の新たなマーケティングモデルは小売業界の「質的変化」を促進する

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています今年7月、...

2018年上半期の中国モバイルインターネット産業の発展に関する分析レポート

2018年上半期の中国モバイルインターネット産業の発展に関する分析レポートキーワード: 安全、上場、...

SEO担当者は仕事の効率に注意してください

多くのウェブマスターは、SEO は難しい、単調すぎる、退屈すぎる、結果が出ない繰り返し作業が多すぎる...

Refinedhost: 10Gbps 米国高帯域幅 VPS、月額 4.99 ドル、4G メモリ/4 コア/25g NVMe/1T トラフィック

Refinedhost は、Nodestop LLC が米国で開設したホスティング ブランドです。現...

百度は三馬の包囲網をいかにして突破できるのか?

最近、百度を悩ませ、ロビン・リーを眠らせないのは、おそらく神馬検索の立ち上げだろう。全世界5億人のユ...

Tencent Cloud IPv6: 高速レーンへの参入

[51CTO.com からのオリジナル記事] 「地球上のすべての砂粒にアドレスを持たせよう」、そうで...

SEOプラットフォームは小さすぎるが、ビジョンは拡大すべきである

当時、この検索エンジンは中国の3大インターネット企業の中で最も重要な存在でした。その時価総額は一時テ...

Taobao Tmall ストアは、Baidu の検索ランキングを活用して、トラフィックと注目を集めるにはどうすればよいでしょうか?

ジャック・マーがかつて、百度のトラフィックはタオバオにとってジャンクトラフィックだと言ったという噂が...