このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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 スクリプトを作成するには、次のようにします。
Jenkins インターフェイスの左側にある [New Item] を選択します。[Pipeline] を選択します。
プロジェクトの [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" } }
このプロジェクトをビルドするときに、解析の各ステージが次のように表示されます。
このスクリプトは、大規模なスクリプトの一部として Jenkisnfile に保存し、バージョン管理システムにコミットできます。Using a Jenkinsfile を参照してください。
必要に応じてこのスクリプトを変更できます。
このスクリプトは、Polyspace 解析ワークフローの各ステップを個別の
stage
セクションで実行します。複数のステップを組み合わせて 1 つのstage
にすることができます。このスクリプトは
sh
命令を使用して Linux® シェル コマンドを実行します。Windows® コマンドを実行するには、代わりにbat
命令を使用します。このスクリプトは Credentials プラグインのデータを使用してユーザー名とパスワードを抽出します。資格情報を別の形式で保存している場合は、ユーザー資格情報を変数にバインドする
withCredentials
コマンドを置換できます。このスクリプトは、次の
make
コマンドを使用し、Git サンドボックスで makefile を使用してソース コードをビルドします。異なるビルド コマンドを使用する場合は、使用するビルド コマンドでこの行を置き換えます。make -C $git_sandbox
このスクリプトの Pipeline 固有の構文の詳細については、次を参照してください。
Pipeline Syntax:
node
、stage
、label
について説明しています。Pipeline Steps Reference:
sh
、mail
について説明しています。Credentials Binding Plugin:
withCredentials
について説明しています。
このスクリプトの Polyspace コマンドの詳細については、次を参照してください。
polyspace-bug-finder-server
(polyspace-code-prover-server
(Polyspace Code Prover) も参照)
参考
Jenkins を使用した Polyspace 解析のサンプル スクリプト | Manage Polyspace Access Results and Users at the Command Line (Polyspace Access)