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

Post on 22-Jan-2018

1.187 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

第10回 大阪Jenkins勉強会 LTVer 1.1

最近、

話が合わなかった

ハナシ

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

何もかもみな懐かしい…

Jenkins2.0 が出てから、

1年以上が経ちました。

Jenkins2.0 が出てから、

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

良かった共有

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

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

楽になりましたわー。

良かった共有

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

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

楽になりましたわー。

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

違和感①

でもねー、できれば

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

ほしいんすよねー

違和感①

でもねー、できれば

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

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

違和感②

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

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

違和感②

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

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

んん!?んん!?

祝!リリース

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

祝!リリース

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

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

ので!ので!

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

まえおき

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

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

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

Jenkins2.0になって

強化されたとこ

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

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

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

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

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

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

本日は、ここの話

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

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

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

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

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

追加の新ジョブ種“Multibranch

Pipeline“と

“Github Organization”

追加の新ジョブ種“Multibranch

Pipeline“と

“Github Organization”

ととその前にその前に

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

ジョブ種類

「パイプライン」

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

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

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

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

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

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

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

Jenkins2.0従来のJenkins

Jobの定義情報

Jenkins ソース管理

リポジトリ

ソース(Project)

ソースを取得

ソースの在り処(のみ)

Jenkins2.0 ソース管理

リポジトリ

ソース(Project)

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

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

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

Jenkins2.0従来のJenkins

Jobの定義情報

Jenkins ソース管理

リポジトリ

ソース(Project)

ソースを取得

ソースの在り処(のみ)

Jenkins2.0 ソース管理

リポジトリ

ソース(Project)

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

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

追加の新ジョブ種“Multibranch

Pipeline“と

“Github Organization”

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

ジョブ種類

「Multibranch Pipeline」

について

ジョブ種「Multibranch Pipeline」

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

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

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

ジョブ種「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”の設置を検知

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

ジョブ種「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が回せるが回せる

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

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

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

さらに

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

ジョブ種類

「Github Organization」

について

ジョブ種「GitHub Organization」

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

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

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

ジョブ種「GitHub Organization」

Jenkins2.0GitHub

Organization “A”

ソースリポジトリ”01”

Jobの定義情報(Jenkinsfile)

ソースリポジトリ”02”

Jobの定義情報(Jenkinsfile)

ソースリポジトリ”03”

Jobの定義情報(Jenkinsfile)

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

Organizationを指定しジョブ定義

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

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

ビルドジョブ ”02”

ビルドジョブ ”03”

ジョブ種「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 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に乗ってに乗ってないと…ないと…

せつなくはありますが…

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

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

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

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

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

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

を整理すると…

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

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

グループ・ユーザ

Jenkins2.0

ソースリポジトリ

ブランチ

Organization

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

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

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

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

でも…これ、なんで

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

これが出てきた背景

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

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

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

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

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

でも、周りで

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

聞かないな…

なんでやろ…

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

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

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

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

なんでやろ…

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

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

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

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

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

ま、ともあれ…

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

まとめ

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

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

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

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

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

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

top related