Casual Developers Note

エンジニアやデザイナー向けの技術情報・英語学習情報・海外留学情報・海外旅行情報を提供中。世界を旅して人生を楽しもう。

  • ホーム
  • 技術 Tips & Tutorials
  • 技術塾
  • ライフハック
  • 海外留学
  • 英語学習
  • コラム
  • お問い合わせ
現在の場所:ホーム / アーカイブjenkins

2019年8月30日 By KD コメントを書く

Jenkins爆速入門: 5日間ブートキャンプ (NodeJS&Docker編)

Jenkins爆速入門: 5日間ブートキャンプ (NodeJS&Docker編)

Jenkinsに入門したいエンジニア向けにこのブログの記事の中から厳選した爆速で学べる記事を紹介します。

はじめに

JenkinsはDevOpsに欠かせない継続的インテグレーション(CI)や継続的デプロイ(CD)を実現するための専用ツールです。自前でサーバーを用意してCI/CD環境を構築する場合はこれ一択と言ってよいでしょう。この使い方を学べば、開発したアプリケーションのCI/CD環境を自分で構築できるようになります。

それでは、ブートキャンプを始めましょう。

カリキュラム

Jennkinsのインストールから基本的な使い方、メールやSlack通知、GitHubアカウント統合までを学ぶカリキュラムです。

【1日目】爆速でJenkinsをマスターしよう(NodeJS編) ~ JenkinsセットアップからNodeJS自動テスト、Job DSLまで ~

爆速でJenkinsをマスターしよう(NodeJS編) ~ JenkinsセットアップからNodeJS自動テスト、Job DSLまで ~

【2日目】爆速でJenkinsをマスターしよう(Docker編) ~ JenkinsコンテナへのDockerインストール方法からJob DSL、Jenkins Pipelineまで ~

爆速でJenkinsをマスターしよう(Docker編) ~ JenkinsコンテナへのDockerインストール方法からJob DSL、Jenkins Pipelineまで ~

【3日目】爆速でJenkinsをマスターしよう(メール通知編) ~ パイプラインのビルド失敗時にメールで通知する方法 ~

爆速でJenkinsをマスターしよう(メール通知編) ~ パイプラインのビルド失敗時にメールで通知する方法 ~

【4日目】爆速でJenkinsをマスターしよう(Slack通知編) ~ パイプラインのビルド失敗時にSlackで通知する方法 ~

爆速でJenkinsをマスターしよう(Slack通知編) ~ パイプラインのビルド失敗時にSlackで通知する方法 ~

【5日目】爆速でJenkinsをマスターしよう(GitHubアカウント統合編) ~ JenkinsのGitHub Organizationの設定方法 ~

爆速でJenkinsをマスターしよう(GitHubアカウント統合編) ~ JenkinsのGitHub Organizationの設定方法 ~

最後に

いかがでしたか?このカリキュラムを完遂したなら、Jenkinsをマスターできたに違いありません。これであなたも立派なDevOpsエンジニアの仲間入りですね!それでは。

カテゴリ : 技術塾 タグ : bootcamp, docker, jenkins, jenkins-github-organization, jenkins-job-dsl, jenkins-pipeline, nodejs

2019年1月14日 By KD コメントを書く

爆速でJenkinsをマスターしよう(GitHubアカウント統合編) ~ JenkinsのGitHub Organizationの設定方法 ~

爆速でJenkinsをマスターしよう(GitHubアカウント統合編) ~ JenkinsのGitHub Organizationの設定方法 ~

GitHubのリポジトリを手動で一つ一つ追加していくより、GitHubのアカウントをJenkinsと統合して、Jenkinsから自動でリポジトリを追加してくれると便利です。今回はそれを実現するJenkinsのGitHub
Organizationの設定方法を紹介します。

はじめに

個人や小さい組織で個別にJenkinsを使う場合は新しいプロジェクトが立ち上がるたびに新しいリポジトリをJenkinsに登録しても大した手間ではないかもしれません。しかし、ある程度大きな組織や個人や小さい組織であっても新しいプロジェクトを量産するような場合、Jenkinsへの手動のリポジトリ追加は負担になります。この問題を解決するには、GitHubのアカウントをJenkinsと統合し、新しいリポジトリができたタイミングで自動的にJenkinsがそのリポジトリを追加する仕組みを作ることが必要です。そして、その方法はJenkinsではGitHub Organizatoinとしてすでにあります。

今回は、新しいプロジェクトをどんどん立ち上げる活発な人や組織向けに、GitHubアカウントとJenkinsの統合機能「GitHub Organization」の設定方法を紹介します。

前提

以下の準備が完了している必要があります。

  • Jenkinsが構築済みであること
  • Jenkins内でDockerが実行可能であること
  • GitHubのアカウントがあること

GitHubのAPIトークンの発行

まずは、GitHubと連携するためにGitHubのAPIトークンをJenkins用に作成しましょう。

自分のGitHubページに行き、「Settings」をクリックします。

NewImage

「Developer settings」をクリックします。

NewImage

「Personal access tokens」をクリックし、「Token description」に任意の名前(今回は「jenkins」)を入力し、「Select scopes」の「repo」を選択します。

NewImage

「Generate token」をクリックします。

NewImage

これでAPIトークンが発行されました。

NewImage

このGitHubのAPIトークンをJenkinsに設定するので、メモしておきましょう。

JenkinsのGitHub Organizationの設定

それでは、Jenkinsの設定をしましょう。

GitHub統合用のプラグインを入れる

Jenkinsに「GitHub Branch Source Plugin」というプラグインをインストールする必要があります。

「Jenkinsの管理」から「プラグインの管理」をクリックします。

NewImage

「インストール済み」に対象のプラグインが入っていればOKです。(Jenkinsセットアップ時に推奨インストールをすると自動的に入ります)

NewImage

GitHub用の認証情報の追加

ホーム画面から「認証情報」をクリックし、「Jenkins」をクリックします。

NewImage

「Add credentials」をクリックします。

NewImage

「種類」に「ユーザー名とパスワード」を選択し、以下の情報を入力し、「保存」をクリックします。

  • ユーザー名: GitHubのアカウント名
  • パスワード: GitHubのAPIトークン
  • ID: 任意(今回は「github-credentials」)

NewImage

新しい認証情報が追加されていればOKです。

NewImage

JenkinsとGitHubの統合

ホーム画面から「新規ジョブ作成」をクリックします。

ジョブ名に統合するGitHubアカウントのアカウント名を入力し、「GitHub Organization」を選択し、「OK」をクリックします。

NewImage

「Projects」に以下の情報を入力し、「保存」をクリックします。

  • Credentials: 先程作成した認証情報(github-credentials)
  • Owner: 統合するGitHubアカウントのアカウント名(手順通りにやっていれば自動的に入っている)
  • Script Path: Jenkisfileのパス(今回はプロジェクトフォルダ直下に配置するので、「Jenkinsfile」のまま)

NewImage

すると、統合したGitHubアカウントのリポジトリのスキャンを自動的に開始します。(「Script Path」に設定したパスに「Jenkinsfile」があるリポジトリをスキャンします)

NewImage

しばらくするとスキャンが完了します。

NewImage

今回は2つのリポジトリが自動的にJenkinsに追加されました。試しに「devops_sample_nodejs」をクリックしてみます。

NewImage

「ビルド実行」をクリックしてビルドを実行してみます。

NewImage

「master」ブランチをクリックします。

NewImage

ビルドの状況が確認できます。

NewImage

GitHubアカウントのページに戻ります。GitHubアカウント内でスキャンされたリポジトリ全てのビルド状況が確認できます。

NewImage

これで完了です。

最後に

いかがでしたか?これでGitHubアカウントに新しいリポジトリを追加した時に自動的にJenkinsでビルドできうようになりましたね。継続的インテグレーションをGitHubのリポジトリにどんどん適用していきましょう。それでは。

環境

  • Jenkins: 2.151

カテゴリ : 技術 Tips & Tutorials タグ : github, jenkins, jenkins-github-organization

2018年12月31日 By KD コメントを書く

爆速でJenkinsをマスターしよう(Slack通知編) ~ パイプラインのビルド失敗時にSlackで通知する方法 ~

爆速でJenkinsをマスターしよう(Slack通知編) ~ パイプラインのビルド失敗時にSlackで通知する方法 ~

継続的インテグレーションの自動ビルド失敗時に開発者に通知する手段はメールだけではありません。今回は、Jenkinsのビルドが失敗した場合にSlack通知を自動で行う方法を紹介します。

はじめに

JenkinsなどのCI/CDツールで自動ビルドが失敗した場合、開発者にビルド失敗を迅速に通知する必要があります。通知する手段としては、昔からあるメール通知は当然として、メッセンジャーで通知する方法が今では一般的です。メッセンジャーとしてはHipChatとSlackがメジャーです。

今回は、Jenkinsのパイプラインジョブにおいて、ビルドが失敗した場合に、Slackで通知する方法を紹介します。

前提

以下の準備が完了している必要があります。

  • Jenkinsが構築済みであること
  • Jenkins内でDockerが実行可能であること
  • GitHubのアカウントがあること
  • Slackのアカウントがあること

このやり方がわからない場合は以前の記事「爆速でJenkinsをマスターしよう(Docker編)」を参照してください。

また、ビルド失敗を検証するサンプルアプリケーションとして、以前の記事「爆速でJenkinsをマスターしよう(メール通知編)」で作成したものを使うので必要に応じて参照してください。

Slackのチャンネル作成と設定

Slackのチャンネル作成

任意のチャンネル名(今回は「#alerts」)を入力し、「チャンネルを作成する」をクリックします。

NewImage

このチャンネルはSlackの通知を受け取るチャンネルとして使います。

SlackのWebhook用のアプリの追加

「App 管理」をクリックします。

NewImage

「webhook」でアプリを検索して「Incoming Webhook」クリックします。

NewImage

「設定を追加」をクリックします。

NewImage

チャンネルに先程作成したチャンネル名(今回は「#alerts」)を選択し、「Incoming Webhook インテグレーションの追加」をクリックします。

NewImage

これでアプリの追加は完了です。

NewImage

「Webhook URL」が発行されていますね。

これを以下の3つの情報としてJenkinsに設定します。

  • Team Subdomain
  • Base URL
  • Secret text

NewImage

メモしておきましょう。

JenkinsのSlack通知用の設定

Slack用のプラグインを入れる

「Jenkinsの管理」から「プラグインの管理」をクリックします。

NewImage

Slack通知用のプラグイン「Slack Notification」にチェックを入れて、「ダウンロードして再起動後にインストール」をクリックします。

NewImage

Jenkinsの再起動が完了すればOKです。

SlackのWebhookの認証情報の設定

Slackで設定したWebhookの情報を元に、Jenkinsに認証情報を設定します。

「認証情報」から「Jenkins」をクリックします。

NewImage

「グローバルドメイン」の「Add credentials」をクリックします。

NewImage

「種類」に「Secret text」を選択し、「Secret」にWebhookのSecret textを入力し、IDに任意の名前(今回は「slack-webhook-url-credentials」)を付けて、「保存」をクリックします。

NewImage

認証情報が追加されていればOKです。

NewImage

大丈夫ですね。

Slack通知用の設定

JenkinsにSlack通知の設定を追加します。

「Jenkinsの管理」から「システムの設定」をクリックします。

NewImage

「Global Slack Notifier Setting」から、「Base URL」と「Team Subdomain」にSlackの情報を入力し、「Integration Token Credential ID」に先程作成した認証情報(slack-webhook-url-credentials)を選択します。

NewImage

「保存」をクリックすれば完了です。

Slack通知用のパイプラインの設定ファイル作成

今回は以前の「爆速でJenkinsをマスターしよう(メール通知編)」で準備したビルドが失敗するサンプルアプリケーションをベースにして、設定ファイルを追加することにしましょう。

ベースを作る

以前作ったプロジェクトをクローンし、新しくJenkinfileを追加します。

$ git clone https://github.com/{your-github-account}/devops_fail_build_nodejs.git
$ touch Jenkinsfile.slack

「{your-github-account}」は自分のGitHubアカウント名に置き換えてください。

Jenkinsのパイプラインの設定ファイルの作成

Jenkins.slack

今回はビルド失敗時に、Slackに赤色でジョブ名、ジョブ番号、ジョブURLを送信してみましょう。

node {
  def app

  try {
    stage('Clone repository') {
      checkout scm
    }

    stage('Build image') {
      app = docker.build('{your-github-account}/devops_fail_build_nodejs')
    }

    stage('Test') {
      app.inside {
        sh 'npm install --only=dev'
        sh 'npm test'
      }
    }
  } catch(error) {
    currentBuild.result = "FAILURE";

    slackSend (color: '#FF0000', message: "FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")

    throw error;
  }
}

GitHubにPushしましょう。

$ git add .
$ git commit -m 'Add jenkinsfile for slack notification'
$ git push origin master

これで準備は整いました。

Slack通知の動作確認

最後にJenkinsのパイプラインのビルド失敗時にSlack通知が動作することを確認しましょう。

パイプラインジョブを作る

「新規ジョブ作成」をクリックします。

任意のジョブ名(今回は「slack_notification」)を入力し、「パイプライン」を選択し、「OK」をクリックします。

NewImage

「パイプライン」から「Pipeline script from SCM」を選択して、「リポジトリURL」を入力し、「Script Path」には先程作成した「Jenkinsfile.slack」を指定します。

NewImage

「保存」をクリックすればジョブ作成は完了です。

失敗するビルドを実行し、Slack通知を確認する

いよいよビルドしてみましょう。

「ビルド実行」をクリックします。

NewImage

想定通りビルドが失敗しました。ビルド番号をクリックして出力結果を確認してみましょう。

NewImage

「Console Output」を見てみましょう。

NewImage

テストが失敗し、Slackに情報が送信されています。

NewImage

それでは、Slack側も確認しましょう。

SlackにJenkinsからビルド失敗のメッセージがビルド結果ページのURL付きで届いています。

NewImage

OKですね。

最後に

いかがでしたか?これでJenkinsのパイプラインのビルド失敗時にSlackで開発者に通知することができるようになったことでしょう。メールよりもSlackの方が迅速に連携が取れるので、より効率的に継続的インテグレーションが実現できますね。では。

環境

  • Jenkins: 2.151

カテゴリ : 技術 Tips & Tutorials タグ : cicd, devops, jenkins, jenkins-pipeline, notification, slack

  • 1
  • 2
  • 次のページ »

ブログ更新情報や海外の関連情報などを配信する無料メルマガ

Sponsored Links

About Author

KD

世界を旅し日本を愛するエンジニア。大学でコンピュータサイエンスの楽しさを学び、日本の大手IT企業で働く中で、新しい技術やスケールするビジネスが北米にある事に気づく。世界に挑戦するための最大の壁が英語であったため、フィリピン留学およびカナダ留学を経て英語を上達させた。現在は日本在住でエンジニアとして働きつつ、次の挑戦に備えて世界の動向を注視している。挑戦に終わりはない。このブログでは、エンジニアやデザイナー向けの技術情報から、海外に留学したい人向けの留学情報、海外に興味がある人向けの海外旅行情報など、有益な情報を提供しています。

https://casualdevelopers.com/

最近の投稿

  • 2020年JS周辺のバックエンド寄りの注目技術!ネクストNodeJSの「Deno」と分散型パッケージレジストリの「Entropic」の紹介

    2020年JS周辺のバックエンド寄りの注目技術!ネクストNodeJSの「Deno」と分散型パッケージレジストリの「Entropic」の紹介

    2020年1月13日
  • 今さら聞けないJavaによる関数型プログラミング入門 ~ラムダ式、ストリーム、関数型インターフェース~

    今さら聞けないJavaによる関数型プログラミング入門 ~ラムダ式、ストリーム、関数型インターフェース~

    2019年11月4日
  • ReactのためのEslintおよびPrettierの設定方法 ~Airbnb JavaScript Style Guideの適用~

    ReactのためのEslintおよびPrettierの設定方法 ~Airbnb JavaScript Style Guideの適用~

    2019年10月30日
  • BashからZshに移行する方法(Mac編)

    BashからZshに移行する方法(Mac編)

    2019年10月21日
  • Create React Appを使わないでゼロからReactの開発環境を構築する方法(Webpack/Docker編)

    Create React Appを使わないでゼロからReactの開発環境を構築する方法(Webpack/Docker編)

    2019年9月30日

カテゴリ

  • 技術 Tips & Tutorials (100)
  • 技術塾 (6)
  • ライフハック (26)
  • 海外留学 (12)
  • 英語学習 (3)
  • コラム (6)

アーカイブ

最高の学習のために

人気記事ランキング

  • MySQLで「ERROR 2003 (HY000): Can't connect to MySQL server」と怒られた時の対処法
    MySQLで「ERROR 2003 (HY000): Can't connect to MySQL server」と怒られた時の対処法
  • Jupyter Notebookで「The kernel appears to have died. It will restart automatically.」というエラーが出た場合の原因と対処法
    Jupyter Notebookで「The kernel appears to have died. It will restart automatically.」というエラーが出た場合の原因と対処法
  • 爆速でJenkinsをマスターしよう(GitHubアカウント統合編) ~ JenkinsのGitHub Organizationの設定方法 ~
    爆速でJenkinsをマスターしよう(GitHubアカウント統合編) ~ JenkinsのGitHub Organizationの設定方法 ~
  • Expressで「Cannot set headers after they are sent to the client」と怒られた時の対処法
    Expressで「Cannot set headers after they are sent to the client」と怒られた時の対処法
  • SAKURAのメールボックスで独自ドメインのメールを設定し、Gmail経由で送受信する方法
    SAKURAのメールボックスで独自ドメインのメールを設定し、Gmail経由で送受信する方法
  • バンクーバー留学豆知識:バンクーバーのATMで日本の銀行のキャッシュカードを使ってお得にお金を引き出す方法
    バンクーバー留学豆知識:バンクーバーのATMで日本の銀行のキャッシュカードを使ってお得にお金を引き出す方法
  • [tips][perl] Perlで文字コードをいい感じに処理する方法
    [tips][perl] Perlで文字コードをいい感じに処理する方法
  • PythonでWebスクレイピング入門(Scrapy+Selenium編)
    PythonでWebスクレイピング入門(Scrapy+Selenium編)
  • Amazon EC2インスタンスにSSHできなくなった時の対処法
    Amazon EC2インスタンスにSSHできなくなった時の対処法
  • SpringBootのProfile毎にプロパティを使い分ける3つの方法
    SpringBootのProfile毎にプロパティを使い分ける3つの方法

Bitcoin寄付 / BTC Donation

Bitcoinを寄付しよう

BTC
Select Payment Method
Personal Info

Donation Total: BTC 0.0010

このブログの運営のためにBitcoinでの寄付を募集しています。お気持ち程度の寄付を頂けると管理者の励みになります。

Bitcoin寄付について知りたい方はこちらの記事へ

ビットコイン取引ならここ

  • ホーム
  • 技術 Tips & Tutorials
  • 技術塾
  • ライフハック
  • 海外留学
  • 英語学習
  • コラム
  • サイトマップ
  • タグ一覧
  • プライバシーポリシー
  • お問い合わせ

Copyright © 2023 KD - Casual Developers Notes