2. deleteDir こんにちはSREエンジニアのMakiです。 この記事ではJenkinsのジョブで成果物を取得するやり方を2つ紹介します。 成果物の取得ってどうやってやるんだっけと思ったときに参考になれば幸いです。, 成果物の取得ができるのは、成果物を保存 する処理がフリースタイルジョブまたはパイプラインジョブの中で記載されている場合に限ります。, BlueOceanからも成果物の取得を行うことができます。 クラシックUIのほうがやりやすいので、実際にはあまり使う機会はないかもしれません。。。, [改訂第3版]Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus) 初めてJenkinsを学ぶ方におすすめです。, Jenkins Jenkinsでできることについてもう少し詳しく学びたい方におすすめです。, ◆ Twitterで最新情報を配信していきます。フォローお願いします。Follow @y_sakamaki0415, 次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。. Jenkins pipelineは次の2つの構文をサポートしています。 Scripted Pipeline; Declarative Pipeline (Pipeline 2.5で導入) Scripted Pipelineは柔軟な表現ができますがやや複雑でした。 Declarative Pipeline ではよりシンプルな記述が可能になりました。 5. findFiles, 一つのパイプラインの中で複数のdocker imageをagentにするためのサンプルです。 6. echo, writeFile stepを使ってファイルの書き込みをやってみます。 書き込む内容はパラメータから受け取ります。, 書き込んだファイルをビルドの成果物として保存してみます。 1. environment declarative pipeline とは. Jenkins入門【2.0対応】 - オープンソースCIツール(5)。何をやっているか分からない「Jenkinsおじさん」の作業を見える化しよう。Jenkins 2に新搭載されたPipelineを使えばパイプラインをコードで記述できるようになる。その基本的な使い方を解説。 デフォルトでは、JenkinsFileスクリプトはリソースをあまり使わないマスターノードで動く。 JavaのコンパイルなどはJenkinsの分散機能を使用して、slaveノードで行う。 © 2019 tracpath.com All rights reserved. """, 'https://github.com/chusiang/helloworld.ansible.role', ほとんどのArm IPが試し放題でスタートアップは年会費無料!?Arm Flexible Access, https://sre.leprofront.tech/index.php/sre/ci-cd/jenkins/pipeline-basic/, https://sre.leprofront.tech/index.php/sre/ci-cd/jenkins/pipeline-advance/, https://github.com/sakamaki-y123/jenkins-continuous-delivery, http://118.27.19.114:8080/job/decrative-pipeline/, https://github.com/chusiang/helloworld.ansible.role, Declarative PipelineでJenkinsfileを書いてみた(Checkstyle,Findbugs,PMD,CPDとか), Jenkins 2.0 (3): Scripted Pipeline と Declarative Pipeline, https://hub.docker.com/r/williamyeh/ansible/, williamyeh/ansible:alpine3 のdocker image を利用してansible-playbook を実行。, you can read useful information later efficiently. 入力がされなかったときはタイムアウトするようにしています。, when ブロックを使って、条件に応じてステージの実行を制御します。 - 【Jenkins】Pipelineジョブを使ってみよう ~ 基本編 ~ 5. steps 1. agent none 2. withDockerContainer 2. archiveArtifacts, ビルドが成功したらcleanWs stepを使ってworkspaceを一掃します。, ほかのジョブの成果物として保存されているファイルを取得し、 * expression スクリプトの真偽値の判定に使います。, ansible-playbook をdocker を使ってhello worldするサンプルです。, topics 2. using multiple docker containers, YAML形式のデータのやり取りをやってみました。 尚、ステージの分け方について決まりはありません。失敗しやすいフェーズは単独のStageとして分けることで再実行を容易にしたり、あえて細かく分けることで問題の特定を容易にしたりするなど、プロジェクトの方針に応じて最適な設計を考慮しましょう。, 続いてWindowsバッチファイルで利用される、バッチコマンドを実行するジョブを作ってみましょう。これを使う場面は、ビルド実行や成果物のデプロイ等です。, environmentで括られた部分は変数の宣言を行います。定義したBAT_RESULTにbatコマンドの実行結果を格納します。returnStdout: trueというオプションを付けると、実行結果がそのまま文字列として戻ってきます。@echo~以降はバッチコマンドです。これはバッチファイル自身のパスを返すコマンドになります。, コンソール出力を見ると、バッチのパスが出力されています。これはbatコマンドを実行すると、一時ファイルとしてバッチファイルが生成され、それが実行されるからです。そのパスが下記に表れているということになります。, Jenkins パイプラインではGroovyスクリプトを扱いましたが、設定を全てスクリプトで書く必要があるために、最初はとっつきにくいと感じるかと思います。しかしながら、コードで管理することで、バージョン管理ができるというメリットがあります。また、将来的にはJenkinsはパイプラインをメインストリームにするという話もあるので、今から学んでくことで新しい便利な機能をいち早く取り入れられるメリットもあるでしょう。 このサンプルではファイル名をenvironment blockを使って定数として宣言してみます。, topics 以下のページでJenkins Pipelineを使って実際にどうやってジョブを作っていくかについてまとめてあります。 Copyright © 2019 leprofront.tech All Rights Reserved. 4. たくさんの方に閲覧、ストックしていただきありがとうございます。 topics 3. ansiblePlaybook.   https://sre.leprofront.tech/index.php/sre/ci-cd/jenkins/pipeline-advance/ そのファイル名を表示するサンプルです。 JenkinsはメジャーなCI/CD支援ツールとして地位を築いています。そんなJenkinsが数年前からGUIベースではなく、コードベースで設定ができるようにした機能がJenkins pipeline(パイプライン)です。コードで設定ができるようになったことで、バージョン管理が可能になり、設定の差分などを容易に参照できるようになりました。今回は、そのJenkins pipelineの基本的な使い方を学んでいきます。, まずは、パイプラインのジョブを作ってみましょう。Jenkinsのダッシュボードから、新規ジョブ作成を押して、ジョブ名を入力し、ジョブの種類はパイプラインを選択します。, OKを押すと続けて設定ページに移行します。設定ページの中腹にパイプラインとよばれるエリアがあるので、そこまで移動します。通常のジョブでは、設定をこのページでチェックを入れたり、テキストエリアに入力したりしながら作っていきましたが、パイプラインではここにコードを入力してジョブを制御します。, ではまずはサンプルコードを試してみましょう。Scriptと書かれている右側の欄がスクリプトを入力するエリアです。右上に「try sample Pipeline…」と書かれているところがありますので、そこを押して、「Hello World」を選びます。すると、スクリプトエリアにコードが自動挿入されるので、そのまま保存します。, ジョブが出来たら、早速実行してみましょう。左側のツリーから「ビルド実行」を押します。, 実行が無事完了したら、結果を見てみます。ビルド番号を示す「#1」と書かれているところを押すと、ビルドの結果ページに移動します。, ビルド結果画面に移動したら左のツリーから「Console Output」を押して実行結果を確認します。, コンソール出力結果を見てみましょう。コードの実行結果の中に、「Hello World」が出力されていることが確認できたら完了です。, パイプラインジョブの作成方法は以上になります。ジョブの作り方自体は同じで、制御がスクリプトで行われるところが違いとなります。, パイプラインジョブに記載できるスクリプトはGroovy(グルーヴィ)というJava scriptをベースとしたスクリプト言語になります。基本的な制御コードはGroovyのリファレンスを見れば分かりますが、ジョブを作っていくためにはJenkins独自の命令を記載する必要があるので、それはコードジェネレータを使って生成することができます。, まずは、スクリプトエリアの下にある「Pipeline Syntax」というリンクを押します。, コードジェネレータのページが開くので、ここでやりたいことを選択します。今回はバッチコマンドの実行をしたいと仮定します。右側の「Sample Step」から「bat: Windows Batch Script」を選びます。, Sample Stepを選んだら、続いてBatch Scriptというエリアに、実行したいバッチコマンドを入力しましょう。今回はecho命令でHelloという文字を出力してみたいと思います。, 入力が終わったらその下にある青いボタン「Generate Pipeline Script」を押して下のテキストエリアにパイプラインのコードが出力されるので、これをジョブ設定画面のスクリプトエリアに貼り付けて使います。, 以上、コードジェネレータの使い方でした。尚、今回使ったbat以外にも使えそうなStepsをいくつかピックアップしますので、必要に応じて使ってみてください。, ここでは「ステージ」という概念を学びます。ステージはジョブのタグ付けのようなもので、これを使うことにより、どこで失敗したか特定したり、特定のステージから開始したりすることもできます。また、ステージごとの所要時間も出ますし、並列実行も可能になります。, 今回はステージを理解するためのテストとして、下記のようなコードを実行してみたいと思います。スクリプトエリアに下記を貼り付けてください。, 修正が終わったら、実行しましょう。実行が完了するとStage Viewに、各ステージ名が表示されており、それぞれの実行時間が表示されています。, 続いて実行結果をコンソール出力で見てみましょう。各ステージのecho文の内容が出ていれば成功です。, では続いて、ジョブが途中のステップでエラーになってしまった等で途中のステージからやり直す方法を紹介します。一つ上のページに戻り、左のツリーから「Restart from Stage」を押します。, ここでステージを選択できますので、始めたいステージを選び、Runを押すと、そのステージからジョブが開始されます。, では、最後に並列実行の方法もご紹介します。サンプルコードは以下になります。設定画面のスクリプトエリアに貼り付けて保存してください。, 今回はparallelというブロックを使い、”Tests”というステージにTest1とTest2を並列実行するコードになっています。保存したら、実行してみてください。, ここでは並列実行されたことが見て取れないので、Console Outputで実行結果を見てみましょう。ビルド番号を押してビルド結果から、Console Outputに移動します。, コンソール出力を見ると、parallelと書いてある部分の直後にBranchが2つ出来ていて、それぞれTest1とTest2が実行されています。これにより、問題なく並列実行できていることが分かりました。, 並列実行を駆使することで、ジョブの実行時間の短縮が見込めますので、ジョブ設計の際には検討してみてください。 ファイル名を一つずつ表示させるためscriptブロックを使います。, topics Declarative Pipeline ではよりシンプルな記述が可能になりました。 処理は1つのnodeブロックで囲う. last: "" Scripted Pipelineは柔軟な表現ができますがやや複雑でした。 topics first: "" log_path = ./ansible.log 1. git また関連するページもサンプルごとに随時紹介をしていきます。, ここで紹介するsampleを実行できるサーバーを立てていますので、実際に触ってください。, 2020/01/19追記 そして、Declarative Pipeline では必要に応じてScripted Pipelineの柔軟な表現も行えるため、両者のメリットを共に享受することができる構文となっています。, 本記事では実際にdeclarative pipelineでどのようなことができるのかを紹介していきたいと思います。 """, "Name is ${datas.name.first} ${datas.name.last}", """\ What is going on with this article? 4. stage Jenkinsのダッシュボードから+ボタンで新規ビューを作成する。このとき「Build Pipeline View」を選択する。 1. parameters Jenkinsfileはこちらコミットしてありますので、併せて紹介をしていきます。 [defaults] 3. copyArtifacts 2. agent ポイントは最初にagente none と設定し、stage ブロックの中で改めて利用するagentを指定することです。 - 【Jenkins】Pipelineジョブを使ってみよう ~ 応用編 ~ * environment 特定の文字列を比較する際に使います。 4. script dates: Visual Studio CodeによるWindows バッチファイルのデバッグ, 実現困難とされた青色LEDが打ち合わせもなく開発に成 功した理由「お互いの方針が一致していれば話し合いを する必要なんてない。」, 【Ruby版】CIツール導入ガイド 第3回 さまざまなジョブ(1)(RuboCop、Flay、test/unit), オープンソースで懐かしのレトロゲーム「シムシティ」を楽しむ。シムシティクローン「micropolis」の紹介. By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. 'Name of source project for copying of artifact(s). 最後までお読みいただきありがとうございました。, 次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。, このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。, こちらのサイトを運営している株式会社オープングルーヴでは、技術者の求人を募集しています。. デプロイ用のコマンドはシェルなりcapistranoなりで用意したものを設定し、↑の成果物をデプロイ対象とする。 ビルドパイプラインのViewを追加. Help us understand the problem. 3. stages もう少し具体的にPipelineで何ができるのかについて、興味ある方はこちらも是非読んでいただけると嬉しいです。, まずはhello worldをやってみます。 birth: ""   https://sre.leprofront.tech/index.php/sre/ci-cd/jenkins/pipeline-basic/ name: 1. pipeline Why not register and get more from Qiita? この記事ではJenkinsのジョブで成果物を取得するやり方を2つ紹介します。 成果物の取得ってどうやってやるんだっけと思ったときに参考になれば幸いです。 ', 'curl -f -o date.json "http://date.jsontest.com"', """\ GUIベースではなく、コードベースで設定ができるようにした機能がJenkins pipeline(パイプライン)です。バージョン管理が可能になり、設定の差分などを容易に参照できるようになりました。今回は、そのJenkins pipelineの基本的な使い方を学んでいきます。 はじめに こんにちはSREエンジニアのMakiです。 この記事では定番CI/CDツールJenkinsの起動、停止、再起動の方法について紹介します。 Jenkinsの停止、起動、再起動ってあまりやることではないと思うのでやり方を忘れがちだと... この記事ではJenkinsのワークスペースの中身を確認する方法について紹介します。 フリースタイルジョブはわかりやすいのですが、Pipelineの場合少しわかりずらいことがあるので参考になれば幸いです。, この記事ではJenkinsで扱うジョブの種類を紹介します。 初めてJenkinsのジョブを作ろうとするとたくさん種類があって迷うのではないかと思います。 ここでは使う頻度の高い順にジョブの紹介をいたします。, この記事ではJenkinsのジョブの実行中に途中で停止させる方法について紹介します。 `×` ボタンを押したのにジョブが止まってくれない、と困っているときに役に立つかもしれません。, この記事ではJenkinsでできることについて紹介します。 これからJenkinsを使おうと考えているかた、Jenkinsを使っているけれど体系的に理解したいという方におすすめの内容となっています。, こんにちはSREエンジニアのMakiです。 この記事ではJenkinsのパイプラインとは何かについて紹介します。 初めてJenkinsのパイプラインを使う人の理解に役立つのではないかと思います。. YAMLのデータを書き換えてファイルに書き出すサンプルです。, パイプラインの途中でユーザーからの入力を受け付けるサンプルです。