Jenkinsfile を使用してインターフェイス自動テストの継続的統合を実現する

1.ジェンキンスパイプライン

パイプライン: パイプライン

1. パイプラインの種類は何ですか?

パイプラインとは簡単に言うと、Jenkins上で動作するワークフローフレームワークのことで、本来は単一または複数のノード上で独立して動作するものを接続し、単一のタスクでは完了することが難しい複雑なプロセスの整理や可視化作業を実現します。

ここに画像の説明を挿入

2. パイプラインのいくつかのステップ:

一般: プロジェクトの説明、グローバル パラメーターの作成、パイプラインのその他のグローバル構成など、構成タスクのグローバル情報。実はフリースタイルでは大将とあまり変わりません。
ビルド トリガー: 他の場所を通じてタスクの構築をトリガーする必要がある場合 (スケジュールされた構築など)、スクリプトを使用して構築操作をリモートでトリガーし、他のタスクが構築された後にこのタスクの構築を自動的にトリガーします。
使い始めたばかりの場合、ビルド トリガーで構成を構成する必要はなく、タスクのビルドには影響しません。ビルドするには、ビルド ボタンを積極的にクリックするだけです。
詳細プロジェクト オプション: プロジェクトの表示名を構成します。構成されていない場合は、デフォルトで表示されます。
パイプライン: このモジュールはパイプライン構成のハイライトです。パイプライン スクリプトを通じてさまざまなビルド依存関係操作を実装します。(Android プロジェクトのビルドなどの関連する構築プロセスには、引き続き Gradle プラグインが必要です)
ここに画像の説明を挿入
一定の時間が経過した後、jenkins サーバーにコードの比較を要求し、コードが異なる場合はビルド操作を実行します。

2. Jenkinsfile を使用してコードを実行する

1. jenkinsfile をリモートウェアハウスにプッシュします

pipeline {
    
    
    agent {
    
    
        label 'Node_python_0702'
    }

    parameters {
    
    
        string(name: 'Version',defaultValue:'1.1.1’,description: '版本号')
        text name: 'msb',defaultValue: 'hello msb',description: 'hello msb'
        booleanParam(name: 'ifFlag',defaultValue: true, description: 'isFlag is True')
        choice name: 'choice',choices: ["java","python","测试"], description: 'choice class'
    }

    stages {
    
    
        stage('pull msbdemo') {
    
    
            steps {
    
    
                checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '28496d71-19df-4ba5-b7d4-8493cbf9d091', url: 'https://gitee.com/zhilongya/pytest_ci.git']])
            }
        }
        stage('build msbdemo') {
    
    
            steps {
    
    
                sh 'pip3 install -r requirements.txt'
                sh 'pytest -sv testcases --alluredir=./allure-results'
            }
        }
    }

}

ここに画像の説明を挿入

2. パイプラインを構成する

ここに画像の説明を挿入
ここに画像の説明を挿入

特別な注意: リモート ウェアハウス内のスクリプト パスと jenkinsfile ファイル名は一貫している必要があります。

3. Jenkinsfile での post の使用

1. 背景と目的

背景: 通常の状況では、対応するコードを実行した後、テスト レポートの生成、電子メールと DingTalk の送信、およびその他の対応する操作など、いくつかのビルド後の操作を実行します。ビルド中にエラーが発生した場合、レポートは生成されず、DingTalk が送信され、電子メールは送信されません。
目的: ビルドが成功、失敗、または不安定かどうかに関係なく、テスト レポートを生成し、DingTalk を送信し、電子メールを送信する必要があります。

2. Jenkinsfileファイルの書き込み

pipeline {
    
    
    agent {
    
    
        label 'Node_python_0702'
    }

    parameters {
    
    
        string(name: 'Version',defaultValue:'1.1.1’,description: '版本号')
        text name: 'msb',defaultValue: 'hello msb',description: 'hello msb'
        booleanParam(name: 'ifFlag',defaultValue: true, description: 'isFlag is True')
        choice name: 'choice',choices: ["java","python","测试"], description: 'choice class'
    }

    stages {
    
    
        stage('pull msbdemo') {
    
    
            steps {
    
    
                checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '28496d71-19df-4ba5-b7d4-8493cbf9d091', url: 'https://gitee.com/zhilongya/pytest_ci.git']])
            }
        }
        stage('build msbdemo') {
    
    
            steps {
    
    
                sh 'pip3 install -r requirements.txt'
                sh 'pytest -sv testcases --alluredir=./allure-results'
            }
        }
    }
    post {
    
    
        always {
    
    
            allure includeProperties: false, jdk: '', results: [[path: 'allure-results']]

            sh 'cd "${WORKSPACE}"'
            sh 'python3 send_ding.py "${JOB_BASE_NAME}"'


            script{
    
    
                emailext body:
                '''  <!DOCTYPE html>
                <html>
                <head>
                <meta charset="UTF-8">
                <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
                </head>
                <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0">
                    <table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
                        <tr>
                            <td>(本邮件由程序自动下发,请勿回复!)</td>
                        </tr>
                        <tr>
                            <td>
                                <h2><font color="#FF0000">构建结果 - ${BUILD_STATUS}</font></h2>
                            </td>
                        </tr>
                        <tr>
                            <td><br />
                                <b><font color="#0B610B">构建信息</font></b>
                                <hr size="2" width="100%" align="center" />
                            </td>
                        </tr>
                        <tr><a href="${PROJECT_URL}">${PROJECT_URL}</a>
                            <td>
                                <ul>
                                    <li>项目名称:${PROJECT_NAME}</li>
                                    <li>GIT路径:<a href="[email protected]:wangxu/ops.git">[email protected]:wangxu/ops.git</a></li>
                                    <li>GIT分支:master</li>
                                    <li>构建编号:${BUILD_NUMBER}</li>
                                    <li>触发原因:${CAUSE}</li>
                                    <li>构建日志:<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
                                </ul>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <b><font color="#0B610B">变更信息:</font></b>
                                <hr size="2" width="100%" align="center" />
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <ul>
                                    <li>上次构建成功后变化 :  ${CHANGES_SINCE_LAST_SUCCESS}</a></li>
                                </ul>
                            </td>
                        </tr>
                    <tr>
                            <td>
                                <ul>
                                    <li>上次构建不稳定后变化 :  ${CHANGES_SINCE_LAST_UNSTABLE}</a></li>
                                </ul>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <ul>
                                    <li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
                                </ul>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <ul>
                                    <li>变更集:${JELLY_SCRIPT,template="html"}</a></li>
                                </ul>
                            </td>
                        </tr>
                        <!--
                        <tr>
                            <td>
                                <b><font color="#0B610B">Failed Test Results</font></b>
                                <hr size="2" width="100%" align="center" />
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <pre style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre>
                                <br />
                            </td>
                        </tr>

                        <tr>
                            <td>
                                <b><font color="#0B610B">构建日志 (最后 100行):</font></b>
                                <hr size="2" width="100%" align="center" />
                            </td>
                        </tr>-->
                        <!-- <tr>
                            <td>Test Logs (if test has ran): <a
                                href="${PROJECT_URL}ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip">${PROJECT_URL}/ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip</a>
                                <br />
                            <br />
                            </td>
                        </tr> -->
                        <!--
                        <tr>
                            <td>
                                <textarea cols="80" rows="30" readonly="readonly" style="font-family: Courier New">${BUILD_LOG, maxLines=100,escapeHtml=true}</textarea>
                            </td>
                        </tr>-->
                        <hr size="2" width="100%" align="center" />

                    </table>


                </body>
                </html>
''',
              subject: '$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!', to: '[email protected]'
          }
        }
    }
}

3. ジョブを構築する

ここに画像の説明を挿入

4.DingTalkを送信する

ここに画像の説明を挿入

5.メールを送信する

ここに画像の説明を挿入

4. ビルド後の操作 - ビルド後のタスクの使用

インストールプラグインのポストビルドタスクレポート生成後のシェル実行

1. フリースタイルの操作は以下の通りです

ここに画像の説明を挿入
ここに画像の説明を挿入

ここに画像の説明を挿入

2. jenkinsfileを使用して書き込む

ここに画像の説明を挿入
python3 send_ding.py "${JOB_BASE_NAME}": パラメータ「${JOB_BASE_NAME}」を send_ding.py ファイルに渡します。JOB_BASE_NAME: ジョブ名を示します。

受信するには、send_ding.py で sys.argv[1] を使用する必要があります。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/YZL40514131/article/details/131608579