IBMCloudでDevOps(GitHub+SpringBoot+Slack)

Pocket

IBM CloudでDevOps環境を構築する手順です。(自動テスト抜き)

本当はjenkinsを入れて自動テストもしたかったのですが、差し当たりGitHubにコミットすると自動でSlackに通知されて、IBMCloud Foundry(WEBアプリ動作環境)にデプロイされる環境の作り方を記します。

IBM Cloudにはツールチェーンという機能があり、デプロイの自動化が可能です。ただしGitHubと連携する設定のやり方が少し見つけ辛いことや、無料アカウントの場合はメモリ不足の問題や、DB(IBM Cloudant)等との連携設定を引き継ぐ場合などに多少調整が必要になります。

まずデプロイするアプリは以下。他の言語でも基本は変わらないと思います。
【アプリ情報】
・言語:Java
・フレームワーク:SpringBoot
・他:Maven

事前に以下のアカウントと開発環境を準備します。
【アカウント】
・GitHub
・Slack
・IBMCloud(無料のライトアカウントでも可)※IBMライト・アカウントについて(構成情報は当時のもの)

【開発環境】
・IDE:STS(Spring Tool Suite)

大きく分けて、手順は以下の通りになります。
1.GitHubでリポジトリを用意する
2.Slackでワークスペースを用意する
3.IBMCloudでツールチェーンの設定をする
4.デプロイスクリプトを書き換える
5.GitHubにコミットしてみる

1.GitHubでリポジトリを用意する
 (1)適当なSpringBootアプリを作成し、GitHubとの紐づけを行う
 (2)アプリのフォルダ直下にIBMCloudのデプロイ用ファイルを作成する
   開発しながら動作を確認する場合はURLを固定化した方が便利。他のユーザーと重複しないように適度な長さにしておくとよい
・manifest.yml(デプロイ時のURLを自動設定する場合)

---
applications:
 - name: アプリ名
   random-route: true
   path: target/ファイル名.jar
   memory: 256M
   instances: 1

・manifest.yml(デプロイ時のURLを固定する場合)

---
applications:
 - name: アプリ名
   host: URLパス
   path: target/ファイル名.jar
   memory: 256M
   instances: 1

 (3)デプロイ時にjarファイルを動作させるため、github上にもtargetフォルダ下のjarファイルがアップロードされるように.gitignoreファイルを編集する

tareget/*
!*.jar
!*.war

2.Slackでワークスペースを用意する
 (1)Slackでワークスペースと、デプロイ告知用のチャンネルを作成する
 (2)SlackにApp(アプリ)として「incoming-webhook」をセットアップする
 (3)incoming-webhookに告知用のチャンネルを割り当てる
  ※「チャンネル名」、「Webhook URL」は後で使用するので控えておくこと

3.IBMCloudでツールチェーンの設定をする
4.デプロイスクリプトを書き換える
 (1)IBM Cloudにログインし、メニューを表示する

 (2)DevOpsを選択する

 (3)ツールチェーンを選択する

 (4)「ツールチェーンの作成」ボタンを押下する

 (5)「Cloud Foundryアプリの開発」をクリックする

 (6)設定はデフォルトのまま、「作成」ボタンを押下する
  ※現時点ではIBM CloudのAPIキー登録が必要になった。キーを自動生成すると、リージョンや組織等は勝手に設定される


 (7)以下の画面で「…」ボタンを押下し、「Git」、「Eclipse Web IDE」を削除する(IssuesはGitを削除すると連動して削除される)

 (8)「ツールの追加」ボタンを押下し、一覧から「GitHub」を選択する


 (9)「リポジトリー・タイプ」を「既存」、「リポジトリーURL」を「GitHubのリポジトリURL(HTTPS)」、「コード変更のデプロイメントを追跡」にチェックし、「統合の作成」ボタンを押下する

 (10)「ツールの追加」ボタンを押下し、一覧から「Slack」を選択する


 (11)「Slack Webhook」にあらかじめSlackで作成した告知用のincoming-webhookの「Webhook URL」を入力し、「Slackチャンネル」に告知用のチャンネル名、「Slackチーム名」に適当な名前を入力し、「統合の作成」ボタンを押下する

 (12)「Delivery Pipeline」を選択する(アイコンの中央部分)

 (13)「BUILD」の設定アイコンを選択し、「ステージの構成」を選択する

 (14)「入力」タブを選択し、「Gitリポジトリー」を自分で登録したプロジェクト名に変更し、「ブランチ」をデプロイ対象となるブランチに変更する。「ステージ・トリガー」を「変更がGitにプッシュされるたびにジョブを実行」として、「保存」ボタンを押下数r


 ※IBM Cloud側の問題で以下のようにブランチの項目が待ち状態のまま応答が返らない時がある。時間を置くなどして、再度試すと設定できる。

 (15)「DEPLOY」の設定アイコンを選択し、「ステージの構成」を選択する

 (16)デプロイスクリプトを修正し、「保存」ボタンを押す

(最初のifからfiまでまとめてコメントアウトし、先頭に「cf push $CF_APP]
を記述する)

#!/bin/bash
# Push app
cf push $CF_APP
#if ! cf app $CF_APP; then  
(以降、続けてコメントアウト(先頭に#追記))
#fi
# Export app name and URL for use in later Pipeline jobs
export CF_APP_NAME="$CF_APP"

 ※デフォルトでは既存の同名アプリをバックアップしつつ、新しいアプリが動作しなかった場合に備えている。無料枠の場合はアプリを1つ動かすメモリしかないため、バックアップ処理を削除した
 ※同名アプリでpushすることで、既存アプリの環境変数等の設定を引き継ぐことが可能

5.GitHubにコミットしてみる
アプリをGitHubにコミットすると、Slackに告知されて自動でデプロイされる。

無料枠のためだと思いますが、ビルド、デプロイには3分程度かかるので、気長に待ちましょう。

広告

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です