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アーキテクチャの反復とアップグレード:従来型、クラウド、エッジコンピューティングのハイブリッドパス

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

推薦する

中小企業のマイクロブログマーケティングプロセスに存在する問題を分析し、まとめる

Weiboマーケティングは素晴らしいツールです。大企業でも中小企業でも、多くの企業がWeiboマーケ...

米国で中国人男性が著作権侵害で懲役12年の判決を受ける:関与企業は200社近く

北京ニュース(記者 趙家尼)外国メディアの報道によると、米国の裁判所は現地時間の火曜日、中国の李翔(...

App Store 中国がアルゴリズムを調整?一部のアプリではフルネームによる検索が機能しません

文/Sohu IT 何鋒本日、Apple App Storeの中国地域で「奇妙な現象」が発生しました...

Amazon Web Services が Amazon Security Lake を開始

Amazon Web Services は、2022 re:Invent Global Confer...

Facebook と QQ Space のタイムライン体験と比較

タイムラインとは何ですか?タイムラインは、Facebook が 2011 年 12 月 15 日に世...

ライブストリーミングによる618の混乱の背後

今年の618は、DouyinとKuaishouの電子商取引にとって特別な意味を持つかもしれない。特に...

Baidu への投稿の欠点と Baidu のインスタントコレクションの実装方法についての詳細な分析

新しいサイトの場合、最も一般的な方法は、Baidu に送信することです。ここで、Baidu に送信し...

Canalys:中国のクラウドサービス支出は2021年第1四半期に60億ドルに達した

市場調査会社Canalysが発表した最新データによると、中国のクラウドインフラサービス支出は2021...

WeChatマーケティング運用に関する販売者の実践メモ

1. WeChatマーケティングを正しく理解する1. WeChatとは何ですか? WeChatはコミ...

JVM の詳細な分析: JVM はリフレクションをどのように実装しますか?

[[422686]]リフレクションは Java 言語の非常に重要な機能であり、実行中の Java プ...

VMWARE クラウドネイティブテクノロジースタックについての簡単な説明

1. Tanzuとはスワヒリ語で「tanzu」は成長する枝を意味します。日本語で「たんず」とは、モジ...

IaaS、PaaS、SaaS、企業はクラウドコンピューティングの方法をどのように選択すべきでしょうか?

クラウド コンピューティングはテクノロジー業界に革命をもたらし、企業や個人が世界中のどこからでも強力...

クラウド コンピューティング戦略にセキュリティ対策を統合するための 5 つのヒント

多くの企業システム管理者は、組織のクラウドファースト戦略がビジネスセキュリティを危険にさらしていると...

ついに誰かが「TCC 分散トランザクション」の実装原理を説明しました!

これまでインターネット上で分散トランザクションに関する記事を数多く目にしてきましたが、そのほとんどは...

2022年にクラウドコンピューティングインフラに対するサイバー犯罪の脅威が増加

サイバーセキュリティの世界では、サイバー脅威と戦うことは、終わりのない多次元のモグラ叩きゲームをプレ...