最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜...

44
第10回 大阪Jenkins勉強会 LT Ver 1.1 最近、 話が合わなかった ハナシ Jenkins2.0からの新機能について

Transcript of 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜...

Page 1: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

第10回 大阪Jenkins勉強会 LTVer 1.1

最近、

話が合わなかった

ハナシ

〜Jenkins2.0からの新機能について〜

Page 2: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

何もかもみな懐かしい…

Jenkins2.0 が出てから、

1年以上が経ちました。

Jenkins2.0 が出てから、

Page 3: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

最近、こんな会話しまして…

Page 4: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

良かった共有

Jenkins2.0なってからPipelineScript(Jenkinsfile)が書けるようになって、AsCodeできるし

ソースリポジトリ側に含められるし、

楽になりましたわー。

Page 5: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

良かった共有

Jenkins2.0なってからPipelineScript(Jenkinsfile)が書けるようになってから、

AsCodeできるしソースリポジトリ側に含められるし、

楽になりましたわー。

ですよねですよねですよね!ですよね!

Page 6: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

違和感①

でもねー、できれば

master以外のブランチもpushしたらビルドして

ほしいんすよねー

Page 7: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

違和感①

でもねー、できれば

master以外のブランチもpushしたらビルドして

ほしいんすよねーん?ん?

Page 8: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

違和感②

もっと言うと「プロジェクト全体」や「部署」もっと言えば「全社」への水平展開

考えると「リポジトリ増やしたら自動的に登録」されてほしいんですよねー。

Page 9: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

違和感②

もっと言うと「プロジェクト全体」や「部署」もっと言えば「全社」への水平展開

考えると「リポジトリ増やしたら自動的に登録」されてほしいんですよねー。

んん!?んん!?

Page 10: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

祝!リリース

2016年、Jenkins2.0そのためのそのためのJenkins2.0Jenkins2.0じゃないの?じゃないの?

Page 11: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

祝!リリース

2016年、Jenkins2.0と、思ってたのですがと、思ってたのですが ……オレがまちがってるのオレがまちがってるのかもしれん…かもしれん…

と不安になってきたと不安になってきた

ので!ので!

この会場に居る人とだけでもこの会場に居る人とだけでも「意識合わせ」しときたい「意識合わせ」しときたい

Page 12: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

まえおき

• 今日伝えたいこと–Jenkins2.0を今から始める人へ•「Jenkins2.0って ってことも出来るらしいで!知ら〜んけど」と、周りにひけらかせる「アバウトな知識」

–「そんなん知ってるわ」な人へ•内容のレビュー(わりと記憶から出してるので)

• 今日出てこないこと–具体的なやり方•デモ…どころか画面すらあまり出てこない(予定)

Page 13: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

Jenkins2.0になって

強化されたとこ

Page 14: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

Jenkins2.0になって強化されたとこ

• BuildのAsCode–「Pipeline Script」と、ジョブ種「Pipeline」

• ジョブの内容定義の外部化– Jenkinsfile

• セキュリティ–デフォルトが「Login要」に

• 「ジョブ自動生成系」ジョブ種の追加– Multibranch Pipeline , Github Organization

• ユーザビリティ–ジョブの編集画面、設定画面の小分け、など

Page 15: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

本日は、ここの話

• BuildのAsCode–「Pipeline Script」と、ジョブ種「Pipeline」

• ジョブの内容定義の外部化– Jenkinsfile

• セキュリティ–デフォルトが「Login要」に

• 「ジョブ自動生成系」ジョブ種の追加– Multibranch Pipeline , Github Organization

• ユーザビリティ–ジョブの編集画面、設定画面の小分け、など

Page 16: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

追加の新ジョブ種“Multibranch

Pipeline“と

“Github Organization”

Page 17: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

追加の新ジョブ種“Multibranch

Pipeline“と

“Github Organization”

ととその前にその前に

Page 18: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

追加されたジョブ、ひとつ目

ジョブ種類

「パイプライン」

について(本日伝えたいことの前段)

Page 19: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

ジョブ種「パイプライン」

• 「Pipeline Script」で処理が書けるジョブ種

• スクリプト記述は「いくつかの方法」で– Git/Subversion上の “Jenkinsfile”• とあるブランチから

–ジョブ自体に「その場書き」したテキスト

Page 20: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

ジョブ種「パイプライン」で出来る事

「As Code」 と「ジョブ内容の外部化」

Jenkins2.0従来のJenkins

Jobの定義情報

Jenkins ソース管理

リポジトリ

ソース(Project)

ソースを取得

ソースの在り処(のみ)

Jenkins2.0 ソース管理

リポジトリ

ソース(Project)

ソースを取得コード化されたJobの定義情報(Jenkinsfile)

Page 21: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

ジョブ種「パイプライン」で出来る事

「As Code」 と「ジョブ内容の外部化」

Jenkins2.0従来のJenkins

Jobの定義情報

Jenkins ソース管理

リポジトリ

ソース(Project)

ソースを取得

ソースの在り処(のみ)

Jenkins2.0 ソース管理

リポジトリ

ソース(Project)

ソースを取得コード化されたJobの定義情報(Jenkinsfile)

と、いうのをと、いうのを覚えといて覚えといてくださいください

Page 22: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

追加の新ジョブ種“Multibranch

Pipeline“と

“Github Organization”

Page 23: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

追加されたジョブ、ふたつ目

ジョブ種類

「Multibranch Pipeline」

について

Page 24: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

ジョブ種「Multibranch Pipeline」

• ソース管理システムの「ソースリポジトリ」を登録するジョブ種–登録出来るのはGit,Subversion

• 登録後、リポジトリに「ブランチが作成・更新されるたび」にジョブを作成・実行する–ただし直下に”Jenkinsfile”が在る場合のみ

• Jenkins上は「フォルダ」に見える

Page 25: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

ジョブ種「Multibranch Pipeline」

Jenkins2.0

ソース管理システム(git,Subversion)

ソースリポジトリ” jenkins-multibranch-pipeline-sample”

ブランチ”master”

Jobの定義情報(Jenkinsfile)

リポジトリを指定しジョブ定義

「Multibranch Pipeline」ジョブ(Jenkins上はフォルダ)

ブランチ”sample-feature-branch-01”

Jobの定義情報(Jenkinsfile)

ブランチ”sample-feature-branch-02”

Jobの定義情報(Jenkinsfile)

ブランチ”sample-feature-branch-03”

Jobの定義情報(Jenkinsfile)

“Jenkinsfile”の設置を検知

ブランチの作成を検知し、ジョブ生成

Page 26: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

ジョブ種「Multibranch Pipeline」

Jenkins2.0

ソース管理システム(git,Subversion)

ソースリポジトリ” jenkins-multibranch-pipeline-sample”

ブランチ”master”

Jobの定義情報(Jenkinsfile)

リポジトリを指定しジョブ定義

「Multibranch Pipeline」ジョブ(Jenkins上はフォルダ)

ブランチ”sample-feature-branch-01”

Jobの定義情報(Jenkinsfile)

ブランチ”sample-feature-branch-02”

Jobの定義情報(Jenkinsfile)

ブランチ”sample-feature-branch-03”

Jobの定義情報(Jenkinsfile)

“Jenkinsfile”の設置を検知

ブランチの作成を検知し、ジョブ生成

ソースリポジトリをソースリポジトリを登録しておけば、登録しておけば、ブランチがブランチが

作成・修正される作成・修正されるごとにごとに

CICIが回せるが回せる

Page 27: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

詳しくは…(手前味噌ですみません)

デモ(動画)はココらへん

https://www.slideshare.net/miurakazuhito/jenkins20-7jenkins-jenkinsstudy#58

Page 28: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

さらに

Page 29: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

追加されたジョブ、みっつ目

ジョブ種類

「Github Organization」

について

Page 30: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

ジョブ種「GitHub Organization」

• github.comの「Organization」を登録するジョブ種

• 登録したOrganizationに属すリポジトリに対応したジョブを自動的に作成する–リポジトリ1つずつに、先ほどの「Multibranch Pipeline」を作成してくれる感じ• 同じく「直下にJenkinsfileがあったら」を条件に

• Jenkins中のUIからは「フォルダのフォルダ」に見える

Page 31: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

ジョブ種「GitHub Organization」

Jenkins2.0GitHub

Organization “A”

ソースリポジトリ”01”

Jobの定義情報(Jenkinsfile)

ソースリポジトリ”02”

Jobの定義情報(Jenkinsfile)

ソースリポジトリ”03”

Jobの定義情報(Jenkinsfile)

「GitHub Organization」ジョブ(Jenkins上はフォルダのフォルダ)

Organizationを指定しジョブ定義

ビルドジョブ ”01”(Multibranch Pipeline)

リポジトリの作成を検知し、ジョブ生成

ビルドジョブ ”02”

ビルドジョブ ”03”

Page 32: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

ジョブ種「GitHub Organization」

「GitHub Organization」というジョブ種が公式標準で追加

Jenkins2.0GitHub

Organization “A”

ソースリポジトリ”01”

Jobの定義情報(Jenkinsfile)

ソースリポジトリ”02”

Jobの定義情報(Jenkinsfile)

ソースリポジトリ”03”

Jobの定義情報(Jenkinsfile)

「GitHub Organization」ジョブ(Jenkins上はフォルダ)

Organizationを指定しジョブ定義

ビルドジョブ ”01”

リポジトリの作成を検知し、ジョブ生成

ビルドジョブ ”02”

ビルドジョブ ”03”

““組織”組織”のような単位でのような単位で「増える「増える

プロジェクト」をプロジェクト」を自動検知・ビルド自動検知・ビルド

Page 33: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

ジョブ種「GitHub Organization」

「GitHub Organization」というジョブ種が公式標準で追加

Jenkins2.0GitHub

Organization “A”

ソースリポジトリ”01”

Jobの定義情報(Jenkinsfile)

ソースリポジトリ”02”

Jobの定義情報(Jenkinsfile)

ソースリポジトリ”03”

Jobの定義情報(Jenkinsfile)

「GitHub Organization」ジョブ(Jenkins上はフォルダ)

Organizationを指定しジョブ定義

ビルドジョブ ”01”

リポジトリの作成を検知し、ジョブ生成

ビルドジョブ ”02”

ビルドジョブ ”03”

ただし、ただし、github.comgithub.comに乗ってに乗ってないと…ないと…

Page 34: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

せつなくはありますが…

5年前は「自力で仕組みを作る」しましたが…

公式本体の機能だけで実現可能に!

Page 35: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

詳しくは…(手前味噌ですみません)

説明とデモ(動画)はココらへん

https://www.slideshare.net/miurakazuhito/fat-jenkins#77

Page 36: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

ソース管理とJenkinsで出来ること

を整理すると…

Page 37: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

ソース管理&Jenkinsで出来る事を整理

ソース管理システム・サービス

グループ・ユーザ

Jenkins2.0

ソースリポジトリ

ブランチ

Organization

github.comジョブ種「GitHub Organization」 GithubのOrganizationを

Jenkinsに登録しておくと、リポジトリを作成・更新すると、ジョブ(Multibranch Pipeline)を作成・実行してくれる。

ジョブ種「Multibranch Pipeline」リポジトリをJenkinsに登録しておくと、ブランチ作成・更新すると、ジョブを作成・実行してくれる。

ジョブ種「パイプライン」 リポジトリをJenkinsに登録しておくと、ブランチ作成・更新すると、ジョブを作成・実行してくれる。

Page 38: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

でも…これ、なんで

出来たん?(出てきた背景)

Page 39: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

これが出てきた背景

• CIサービスの台頭– TravisCI、CircleCI、AppVeyor、etc…

–大体のサービスが基本的に…• 「専用設定ファイルをリポジトリに置いて…」というAsCode

• 「branchが生成/pushたびに…」というMultibranch対応

• “github”から「ユーザ or Orginization」を登録しておくと1クリックでリポジトリ登録出来る– ここは半自動

–これの影響を請けて、Jenkinsのジョブ種が対応されたのかな?

Page 40: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

でも、周りで

「2つのジョブ」使ってるって

聞かないな…

Page 41: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

なんでやろ…

• 日本で流行ってない(あまり事例が出ない)理由の推測(妄想)–聞いてる範囲で「日本のJenkins利用理由」の多くは…• 閉鎖環境にあり外サービスが使えないから

• ビルドする環境に「特殊性」があり開発現場のマシンに依存してるから

–上記が大多数なら「ソース管理系を限定される」のが相性悪いのではないか• Git,Subversionは「今時デファクト」「社内サーバ立てれる」なので Multibranch Pipeline の普及は問題なさそう

–「github(というWebサービス)を使う」限定が Github Organization の普及を阻んでそう

Page 42: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

なんでやろ…

• 日本で流行ってない(あまり事例が出ない)理由の推測(妄想)–聞いてる範囲で「日本のJenkins利用理由」の多くは…• 閉鎖環境にあり外サービスが使えないから

• ビルドする環境に「特殊性」があり開発現場のマシンに依存してるから

–上記が大多数なら「ソース管理系を限定される」のが相性悪いのではないか• Git,Subversionは「今時デファクト」「社内サーバ立てれる」なので Multibranch Pipeline の普及は問題なさそう

–「github(というWebサービス)を使う」限定が Github Organization の普及を阻んでそう

ま、ま、「友達少ない「友達少ないだけ説」もだけ説」も否めません否めませんけどねっ!けどねっ!

Page 43: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

ま、ともあれ…

みなさんと意識合わせしときたい

まとめ

Page 44: 最近、話が合わなかったハナシ 〜Jenkins2.0からの新機能について〜 #jenkinsstudy

まとめ• Jenkins2.0には「ソース管理と連動して、

自動的ジョブを生成・起動する」ための

「ジョブ種が追加」されている– Multibranch Pipeline• ソースリポジトリ一つ分の「ブランチ全部」が対象

– Github Organization• github内「Organization1個内のリポジトリ全部」が対象

• ただし「ソース管理系」を限定– Multibranch Pipeline は管理システムが Git or Subversion

– Github Organization は管理サービスがGithub.com