メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Polyspace 解析用のサンプル Jenkins Pipeline スクリプト

Jenkins® Pipeline を使用すると、Jenkins のスクリプトを使用して継続的デリバリー パイプラインのワークフローを自動化できます。コードをリリースできる状態にするために、プロジェクトをビルドし、テスト スイートを実行し、必要なチェックをすべて実行する Pipeline スクリプトを作成できます。これらのスクリプトをバージョン管理システムの一部としてチェックインし、コード自体と同じレビューとバージョン管理の対象とすることができます。

Jenkins Pipeline スクリプトで Polyspace® 解析を実行できます。Jenkins で Pipeline の代わりにフリースタイル プロジェクトを使用している場合は、スクリプトの作成を容易にするために Polyspace プラグインを使用します。Jenkins を使用した Polyspace 解析のサンプル スクリプトを参照してください。Pipeline を使用する場合は、以下に示すスクリプトを変更して、Polyspace 解析を実行するようにします。

前提条件

サーバーで Polyspace 解析を実行し、Polyspace Access™ Web インターフェイスで結果を確認するには、次の 1 回限りの設定を実行する必要があります。

  • 解析を実行するには、Polyspace Server 製品のインスタンスを 1 つインストールする必要があります。

  • 結果をアップロードするには、Polyspace Access の Web インターフェイスをホストするために必要なコンポーネントを設定する必要があります。

  • アップロードされた結果を表示するには、結果をレビューする開発者の各々が 1 つの Polyspace ライセンスを所有していなければなりません。

Polyspace Server および Access 製品のインストールを参照してください。

Pipeline スクリプトのステージでの Polyspace 解析の実行

Jenkins Pipeline スクリプトを作成するには、次のようにします。

  1. Jenkins インターフェイスの左側にある [New Item] を選択します。[Pipeline] を選択します。

  2. プロジェクトの [Pipeline] セクションで、[Definition][Pipeline script] を選択します。このスクリプトを入力します。

    太字の部分は、各自のソース コードと Polyspace インストールに合わせてスクリプトを変更する必要がある部分を示しています。

    node {
        def module = "folder_to_hold_sources_and_results" // Replace with another foldername (or use job workspace)
        def git_url = "https://github.com/lz4/lz4.git" //Replace with another Git URL
        def git_sandbox = "${module}/lz4_sources" //Replace with path to sources
        def polyspace_bin = "/usr/local/Polyspace/R2019a/polyspace/bin" // Replace with Polyspace installation folder
        def configure = "${polyspace_bin}/polyspace-configure"
        def configure_opts = "${module}/lz4.opts"
        def analyze = "${polyspace_bin}/polyspace-bug-finder-server" // Replace with polyspace-code-prover-server to run Code Prover
        def results_dir = "${module}/results"
        def protocol = "https" //Replace with "http" if Polyspace Access URL uses http
        def host = "your-host-name" //Replace with host name of server hosting Polyspace Access
        def port = "9443" //Replace with port number of server hosting Polyspace Access
        def subject = "Polyspace analysis: $git_url" //Replace with a different mail subject line
        def body = "Log available on ${BUILD_URL}/ConsoleFull" //Replace with a different mail body line
        def to = "john@email.com" //Replace with a comma-separated list of email addresses
        
        stage ("Prepare") {
            sh script: "env"
            sh label: "Cleanup", script: "rm -fr $module; mkdir -p $module"
        }
        
        stage ("Checkout") {
            sh label: "Check out", script: "git clone $git_url $git_sandbox"
        }
        
        stage ("Configure") {
            sh label: "Polyspace configure", script: "$configure -allow-overwrite -prog \"lz4\" -author jenkins -output-options-file $configure_opts make -C $git_sandbox"
        }
        
        stage ("Analyze") {
            sh label: "Polyspace analysis", script: "$analyze -options-file $configure_opts -checkers all -results-dir $results_dir "
        }
        
        stage ("Upload") {
            withCredentials([usernamePassword(credentialsId: 'credentials-id-from-jenkins-credentials-plugin', passwordVariable: 'password', usernameVariable: 'username')]) 
            {
                def access = "${polyspace_bin}/polyspace-access -tmp-dir tmp-dir -protocol ${protocol} -host ${host} -port ${port} -login ${username} -encrypted-password ${password}"
                sh label: "Create folder on server", script: "$access -create-project \"/public/JenkinsProject\""
                sh label: "Upload results on server", script: "$access -parent-project \"/public/JenkinsProject\" -upload $results_dir"
            }
        }
        
        stage ("Notification") {
            mail body: "$body", subject: "$subject", to: "$to"
        }
    }

このプロジェクトをビルドするときに、解析の各ステージが次のように表示されます。

Graphical view of a Jenkins Pipeline run showing the duration of each stage of Pipeline

このスクリプトは、大規模なスクリプトの一部として Jenkisnfile に保存し、バージョン管理システムにコミットできます。Using a Jenkinsfile を参照してください。

必要に応じてこのスクリプトを変更できます。

  • このスクリプトは、Polyspace 解析ワークフローの各ステップを個別の stage セクションで実行します。複数のステップを組み合わせて 1 つの stage にすることができます。

  • このスクリプトは sh 命令を使用して Linux® シェル コマンドを実行します。Windows® コマンドを実行するには、代わりに bat 命令を使用します。

  • このスクリプトは Credentials プラグインのデータを使用してユーザー名とパスワードを抽出します。資格情報を別の形式で保存している場合は、ユーザー資格情報を変数にバインドする withCredentials コマンドを置換できます。

  • このスクリプトは、次の make コマンドを使用し、Git サンドボックスで makefile を使用してソース コードをビルドします。

    make -C $git_sandbox
    異なるビルド コマンドを使用する場合は、使用するビルド コマンドでこの行を置き換えます。

このスクリプトの Pipeline 固有の構文の詳細については、次を参照してください。

このスクリプトの Polyspace コマンドの詳細については、次を参照してください。

参考

| (Polyspace Access)