SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
Fuelphpのテストをdocker-composeとJenkinsで実行
Report
gree_tech
Follow
gree_tech
Jun. 27, 2019
•
0 likes
•
1,328 views
1
of
14
Fuelphpのテストをdocker-composeとJenkinsで実行
Jun. 27, 2019
•
0 likes
•
1,328 views
Download Now
Download to read offline
Report
Engineering
「第139回 PHP勉強会@東京」で発表された資料です。 https://phpstudy.doorkeeper.jp/events/93038
gree_tech
Follow
gree_tech
Recommended
gRPCを使ったメディアサービス
gree_tech
2.1K views
•
17 slides
Firestoreを使ってメディアアプリを作ってみた
gree_tech
1.6K views
•
15 slides
DCL15秒の見れないサイトを3秒まで改善した話。改善継続中
gree_tech
749 views
•
18 slides
RecommendWidgetを作った話
gree_tech
963 views
•
14 slides
LIMIAでのBigQuery活用事例
gree_tech
4.2K views
•
18 slides
メディアアプリLIMIAにおけるプッシュ通知配信システム
gree_tech
758 views
•
26 slides
More Related Content
What's hot
LIMIAアプリにおける行動履歴を用いたコンテンツ配信の最適化
gree_tech
2.2K views
•
27 slides
公式部活動技術書典部の活動紹介
gree_tech
1.9K views
•
22 slides
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま
Daiki Hirozawa
2.6K views
•
25 slides
[社内向け]Titanium勉強会
Rei Matsushita
1.2K views
•
13 slides
Realtime database、Clean Architectureを組み合わせた導入事例
Tatsuya Kikuchi
603 views
•
14 slides
【サンプル】 Instagram開設マニュアルサービス資料
AAsolution
18.5K views
•
7 slides
What's hot
(16)
LIMIAアプリにおける行動履歴を用いたコンテンツ配信の最適化
gree_tech
•
2.2K views
公式部活動技術書典部の活動紹介
gree_tech
•
1.9K views
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま
Daiki Hirozawa
•
2.6K views
[社内向け]Titanium勉強会
Rei Matsushita
•
1.2K views
Realtime database、Clean Architectureを組み合わせた導入事例
Tatsuya Kikuchi
•
603 views
【サンプル】 Instagram開設マニュアルサービス資料
AAsolution
•
18.5K views
20171109_Mobile Center を使ったモバイルアプリ開発ライフサイクル自動化【Mobile DevOps】
Madoka Chiyoda
•
5.7K views
Matcherの紹介@ITリーダー育成キャンプ
noriyaz
•
369 views
オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram...
Members_corp
•
5.6K views
Ruby会議08 倉貫発表資料
Yoshihito Kuranuki
•
2.6K views
How are AsakusaSatellite growing with mzp
Ryo Suetsugu
•
9.4K views
マルチテナントに対応したシラサギグループウェアのご紹介
Shinji Tanimoto
•
1.6K views
月間6アプリリリースの開発現場でのQiita:Team活用法
Naoya Mouri
•
9.1K views
生涯エンジニアというマインドを活かしてYahoo!天気アプリを成長させたPM手法 #devsumi
Yahoo!デベロッパーネットワーク
•
6K views
ビッグデータを活用したSEO対策:検索エンジン最適化とは
新潟コンサルタント横田秀珠
•
1.3K views
Bot Builder V4 SDK + QnA Maker / LUIS
Yoshitaka Seo
•
809 views
More from gree_tech
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
gree_tech
697 views
•
36 slides
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
gree_tech
222 views
•
13 slides
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
gree_tech
1K views
•
18 slides
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech
1.7K views
•
84 slides
長寿なゲーム事業におけるアプリビルドの効率化
gree_tech
341 views
•
116 slides
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech
548 views
•
31 slides
More from gree_tech
(20)
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
gree_tech
•
697 views
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
gree_tech
•
222 views
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
gree_tech
•
1K views
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech
•
1.7K views
長寿なゲーム事業におけるアプリビルドの効率化
gree_tech
•
341 views
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech
•
548 views
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
gree_tech
•
585 views
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
gree_tech
•
610 views
海外展開と負荷試験
gree_tech
•
586 views
翻訳QAでのテスト自動化の取り組み
gree_tech
•
294 views
組み込み開発のテストとゲーム開発のテストの違い
gree_tech
•
541 views
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
gree_tech
•
206 views
データエンジニアとアナリストチーム兼務になった件について
gree_tech
•
296 views
シェアドサービスとしてのデータテクノロジー
gree_tech
•
424 views
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
gree_tech
•
951 views
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
gree_tech
•
1K views
比較サイトの検索改善(SPA から SSR に変換)
gree_tech
•
664 views
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
gree_tech
•
2.6K views
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
gree_tech
•
385 views
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
gree_tech
•
740 views
Fuelphpのテストをdocker-composeとJenkinsで実行
1.
FuelphpのテストをJenkinsと docker-composeで実行
2.
Masahiro Higuchi /
樋口雅拓 ● グリーグループのリミア株式会社で、LIMIA という住まい領域のメディアを 作っています。ゲーム会社ですが、最近はメディアに力を入れています。 ● 機械学習のエンジニアですが、iOS, Android,JSなどもやっている何でも屋 です。4歳の娘のパパ。twitter: @mahiguch1 ● https://limia.jp/ ● https://arine.jp/ ● https://aumo.jp/ ● https://www.mine-3m.com/mine/
3.
LIMIAとは? ● メディアサービス ● Android,
iOS, Web ● 記事一覧を表示し、タップすると記事 詳細を閲覧できる。 ● AWS:90%、GCP:10%。 ● PHP/EC2 → Go/ECS移行中
4.
Fuelphpが。。。 ● 最近バージョンアップの話を聞かない ● Githubを確認すると、最後のcommitが2018年5月 ●
Laravelに行く? いや、コンテナ考えたらgolangでしょ! —> golangに移行開始したばかりですが、さっそくJenkinsでハマったことに ついて話します。
5.
移行したシステムについて
6.
開発環境 ● まず、他との繋がりが薄いRecommendEngineをgolangで書いてコンテナ を作った。 ● php,
MySQL, memcached, DynamoDB Local, elasticmqもコンテナにし て、開発環境をdocker-composeで作った。 ● 本番環境はgolangのみECSで動かし、phpはEC2で。
7.
本番環境 ユーザが記事の一覧表示をしようとすると、EC2で動く fuel PHP ApplicationにHTTPリクエストが飛ぶ。PHP Appは、ECSで動くgolang
Serviceにgrpcで問い合わ せる。PHP Appはgolangからの応答に後処理を行 なってユーザに返す。
8.
APIの結合テスト
9.
テストについて ● UnitTestだけでなく、APIの結合テストもFuel phpのテストを書いていた。 ●
レスポンスのIFをかなり網羅していたので、リファクタのときには重要。 ● GitのDevelop branchにmergeされるとJenkinsでテストが走り、成功したら結合テスト環境に配布してい た。 —> 実装完了してmergeしたらテストが失敗。何故!?
10.
テストが失敗した理由 ● Jenkins Slaveは、EC2にphpをインストールしてテストを実行していた。 ●
当然だがgolangコンテナが無いので、接続失敗でテストがコケる。 ● Jenkins Slave専用にECS Service建てるのは、もったいないよねー。 —> 開発環境用に作ったdocker-composeをJenkins Slaveの中に立ててしまおう!
11.
第1の関門: git tokenの渡し方 Repository構成 ●
docker: docker-compose.ymlなど ● app: PHPで書かれた本体 ● api: golangで書かれたマイクロサービス これまでは、Jenkinsにgithubのtokenとrepository pathを登録しておくと、手元に展開されていた。 Repositoryが3つだとScriptの所でgit cloneを3行書く。—> Permission Denied... あれ? どうやってtoken渡そう。—> .netrcに書くことで解決!
12.
第2の関門: コンテナの建て方 ● 1つ目のテストは成功したが、別のテストで失敗。 ●
コンテナが立てっぱなしだったので、ポートを取れなかった。 ● 80/tcp —> 8080/tcp(dockerのNginxが動くport)に透過させていたのが原因。 —> テストの開始時にdocker-compose up、終了時にdocker-compose downすることで解決。
13.
第3の関門: コンテナの更新 ● しばらくうまく動いていたが、突然テストが失敗するように。 ●
Jenkins Slaveでコンテナの更新を行なっていなかった。 ● テスト開始前にdocker-compose pullしたが上手くいかない。あれ? —> ecr loginしてなかったので、docker repos.にアクセスできていなかった。loginすることで解決。
14.
まとめ ● 一部のサービスをgolangで書き直してみた。 ● 今後PHPの部分はBFFっぽくなっていく予定。 ●
PHPをコンテナ化する必要があるが、知見が無いので、もし経験があれば教えて欲しい。 ありがとうございました。懇親会でぜひ声をかけてください!