AWS CodePipeline ㌠GitLabをサãƒãƒ¼ãƒˆã—ãŸã®ã§ä½¿ã£ã¦ã¿ãŸã€Laravel】
AWSã®CI/CDツールã¨ã—ã¦ãŠãªã˜ã¿ã®Codeã‚·ãƒªãƒ¼ã‚ºã‚¢ãƒƒãƒ—ãƒ‡ãƒ¼ãƒˆæƒ…å ±ã§ã™ã€‚
CI/CDツールã®CodePipelineãŒã‚½ãƒ¼ã‚¹ãƒªãƒã‚¸ãƒˆãƒªã¨ã—ã¦gitlabã®ã‚µãƒãƒ¼ãƒˆã‚’é–‹å§‹
今回ã¯CodePipelineを作りãªãŒã‚‰GitLabã¨ã®CI/CD実ç¾ã—ã¦ã¿ã¾ã™ã€‚
- 1. 概è¦
- 1.1. CodePipelineã¨ã¯
- 1.2. GitLabã¨ã¯
- 2. CI/CDæ§‹ç¯‰æ‰‹é †
- 2.1. GitLabå´ã®ä½œæ¥ : GitLabã§ã®ãƒªãƒã‚¸ãƒˆãƒªä½œæˆ
- 2.1.1. GitLabã«ãƒªãƒã‚¸ãƒˆãƒªã‚’作æˆã™ã‚‹
- 2.1.2. GitLabã«ãƒªã‚½ãƒ¼ã‚¹ã‚’デプãƒã‚¤ã™ã‚‹
- 2.2. AWSå´ã®ä½œæ¥ : CodePipelineã®ä½œæˆ
- 2.2.1. リソースã®ãƒ‡ãƒ—ãƒã‚¤å…ˆã‚µãƒ¼ãƒã‚’準備ã™ã‚‹
- 2.2.2. AWS CodePipelineã‹ã‚‰GitLabã¸ã®æŽ¥ç¶šã‚’作æˆã™ã‚‹
- 2.2.3. デプãƒã‚¤å…ˆã‚’指定ã™ã‚‹
- 2.2.4. è¿½åŠ CodeBuild ã§ã‚µãƒ¼ãƒã®åˆæœŸè¨å®šã‚’行ã†
- 2.3. gitlabã«ã‚³ãƒŸãƒƒãƒˆã—ã¦ã¿ã‚‹
- 3. ã¤ã¾ã¥ããƒã‚¤ãƒ³ãƒˆ
- 3.1. ElasticBeanstalk : No Default VPC
- 3.2. GitLab接続時 : 䏿˜Žãªã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ
- 3.3. CodeBuild : php version (7.4.33) does not satisfy that requirement
- 4. ç·æ‹¬
概è¦
CodePipelineã¨ã¯
ã„ã‚ゆるCodeシリーズã®ä¸€ã¤ã€‚
CI継続的デリãƒãƒªãƒ¼ã‚’æ‹…ã†ã‚µãƒ¼ãƒ“スã§ã™ã€‚
CodeCommit, CodeBuild, CodeDeploy ã¨é€£æºã—ã¦CI/CD環境を構築ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

GitLabã¨ã¯
GitHubã¨åç§°ãŒä¼¼ã¦ã„ã¾ã™ãŒã€ã‚µãƒ¼ãƒ“ス的ã«ã‚‚åŒã˜ã‚ˆã†ãªã‚‚ã®ã§ã™ã€‚web上ã«ãƒªãƒã‚¸ãƒˆãƒªã‚’作æˆã—ã¦ãƒªã‚½ãƒ¼ã‚¹ç®¡ç†ã§ãã¾ã™ã€‚
Gitリãƒã‚¸ãƒˆãƒªç®¡ç†ã®åˆ†é‡Žã«ãŠã„ã¦GitHubã«æ¬¡ãNo.2ãã‚‰ã„æœ‰åãªã®ã§ã¯ãªã„ã§ã—ょã†ã‹ã€‚
CI/CDæ§‹ç¯‰æ‰‹é †
GitLabå´ã®ä½œæ¥ : GitLabã§ã®ãƒªãƒã‚¸ãƒˆãƒªä½œæˆ
GitLabã«ãƒªãƒã‚¸ãƒˆãƒªã‚’作æˆã™ã‚‹
ã¾ãšã¯ç®¡ç†å¯¾è±¡ã¨ã™ã‚‹ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã‚’作æˆã—ã¾ã™ã€‚
今回ã¯ã€Œtest-appã€ã¨ã„ã†ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã‚’作æˆã—ã¾ã—ãŸã€‚

プãƒã‚¸ã‚§ã‚¯ãƒˆã®ä½œæˆãŒå®Œäº†ã—ã¾ã—ãŸã€‚

GitLabã«ãƒªã‚½ãƒ¼ã‚¹ã‚’デプãƒã‚¤ã™ã‚‹
作æˆã—ãŸç©ºã®ã€Œtest-appã€ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã«ãƒªã‚½ãƒ¼ã‚¹ã‚’デプãƒã‚¤ã—ã¾ã™ã€‚
Gitツールãªã©ã‚’利用ã—ã¦ãƒ‡ãƒ—ãƒã‚¤ã—ã¾ã™ã€‚方法ã¯å‰²æ„›ã€‚
今回ã¯Laravelプãƒã‚¸ã‚§ã‚¯ãƒˆã‚’作æˆã—ã¾ã—ãŸã€‚
ãŠãªã˜ã¿ã®TOPç”»é¢ãŒè¡¨ç¤ºã•れるã¨ã“ã‚ã¾ã§æº–å‚™ãŒã§ããŸã‚‰ãƒ‡ãƒ—ãƒã‚¤ã‚’行ã„ã¾ã™ã€‚

AWSå´ã®ä½œæ¥ : CodePipelineã®ä½œæˆ
リソースã®ãƒ‡ãƒ—ãƒã‚¤å…ˆã‚µãƒ¼ãƒã‚’準備ã™ã‚‹
CodePipelineã‹ã‚‰ãƒ‡ãƒ—ãƒã‚¤ã§ãã‚‹å…ˆã¯é™ã‚‰ã‚Œã‚‹ã®ã§ã€ä»Šå›žã¯ElasticBeanstalkを利用ã—ã¾ã™ã€‚

ã“ã®æ®µéšŽã§ã‚¢ãƒ—リケーションコードã«åœ§ç¸®ã—ãŸLaravelプãƒã‚¸ã‚§ã‚¯ãƒˆã®ãƒ•ァイルをアップãƒãƒ¼ãƒ‰ã—ã¦ãŠãã¨
動作確èªãŒæ—©ãã¦ä¾¿åˆ©ã§ã™ã€‚
AWS CodePipelineã‹ã‚‰GitLabã¸ã®æŽ¥ç¶šã‚’作æˆã™ã‚‹
ソースステージã®è¿½åŠ ç”»é¢ã§ã€ã‚½ãƒ¼ã‚¹ãƒ—ãƒãƒã‚¤ãƒ€ã‹ã‚‰ã€ŒGitLabã€ãŒé¸æŠžã§ãるよã†ã«ãªã£ãŸã“ã¨ãŒ
今回ã®ã‚¢ãƒƒãƒ—デートã§ã™ã€‚
GitLabã‚’é¸æŠžã™ã‚‹ã¨ã€ŒGitLabã«æŽ¥ç¶šã™ã‚‹ã€ãƒœã‚¿ãƒ³ãŒæŠ¼ä¸‹ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚
ã™ã§ã«è¨å®šæ¸ˆã¿ã§ã‚れã°ã€ŒæŽ¥ç¶šã€ã®ãƒ—ルダウンã‹ã‚‰é¸æŠžã§ãã¾ã™ã€‚

「GitLabã«æŽ¥ç¶šã™ã‚‹ã€ãƒœã‚¿ãƒ³ã‚’押下ã™ã‚‹ã¨ã“ã¡ã‚‰ã®ç”»é¢ãŒè¡¨ç¤ºã•れã¾ã™ã€‚
接続åã¯AWS内ã§ã®ç®¡ç†åç§°ãªã®ã§ã‚ã‹ã‚Šã‚„ã™ã„åå‰ã‚’付ã‘ã¦ãŠãã¾ã—ょã†ã€‚

オレンジã®ã€ŒGitLabã«æŽ¥ç¶šã™ã‚‹ã€ãƒœã‚¿ãƒ³ã‚’押下ã™ã‚‹ã¨ã€GitLabå´ã®ãƒã‚°ã‚¤ãƒ³ç”»é¢ãŒè¡¨ç¤ºã•れã¾ã™ã€‚
ãƒã‚°ã‚¤ãƒ³ãŒå®Œäº†ã™ã‚‹ã¨AWS CodePipelineã®ç”»é¢ã«æˆ»ã£ã¦ãã¾ã™ã€‚

ãƒã‚°ã‚¤ãƒ³ãŒå®Œäº†ã™ã‚‹ã¨ãƒªãƒã‚¸ãƒˆãƒªã‚„ブランãƒåをプルダウンã‹ã‚‰é¸æŠžã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚
å…ˆã»ã©ä½œæˆã—ãŸã€Œtest-appã€ãƒªãƒã‚¸ãƒˆãƒªã‚’é¸æŠžã—ã¾ã™ã€‚

デプãƒã‚¤å…ˆã‚’指定ã™ã‚‹
ソースã®å–å¾—å…ƒãŒè¨å®šã§ããŸã‚‰ã€æ¬¡ã¯ãƒ‡ãƒ—ãƒã‚¤å…ˆã‚’指定ã—ã¾ã™ã€‚
ã“ã“ã«ã¯å…ˆã»ã©ä½œæˆã—㟠ElasticBeanstalk ã‚’è¨å®šã—ã¾ã™ã€‚

レビューã¾ã§ã‚¹ã‚ップã—ã¦è¨å®šã‚’完了ã™ã‚‹ã¨ã€ã™ãã«CodePipelineãŒå‹•ã出ã—ã¾ã™ã€‚
å•題ãªãæˆåŠŸã™ã‚Œã°ã€ã“ã®ã‚ˆã†ã«ç·‘色ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã§ã€ŒæˆåŠŸã€ã¨è¡¨ç¤ºã•れã¾ã™ã€‚

「ソースã€ã€Œãƒ‡ãƒ—ãƒã‚¤ã€ãれãžã‚Œã®æ¨ªã«ã‚‚æˆåŠŸã—ã¾ã—ãŸã¨ã„ã†è¨˜è¿°ãŒã‚りã¾ã™ã€‚エラーãŒã‚ã‚‹ã¨ã“ã¡ã‚‰ã«èµ¤å—ã§è¡¨ç¤ºã•れã¾ã™ã€‚
ã“れ㧠CodePipeline ã®è¨å®šãŒå®Œäº†ã—ã¾ã—ãŸã€‚
è¿½åŠ CodeBuild ã§ã‚µãƒ¼ãƒã®åˆæœŸè¨å®šã‚’行ã†
Laravelã®ç’°å¢ƒã‚’æ•´å‚™ã™ã‚‹ã«ã¯ã€ã‚µãƒ¼ãƒä¸Šã§ã„ãã¤ã‹ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã。
コマンドã¯CodeBuildを使ã£ã¦å®Ÿè¡Œã™ã‚‹ã‚ˆã†ã«è¨å®šã‚’è¿½åŠ ã—ã¾ã™ã€‚

ソースをS3ã«ç½®ãã®ãŒé¢å€’ã ã£ãŸã®ã§ã€ãã®ã¾ã¾Buildspecã‚’è¨å®šã—ã¾ã—ãŸã€‚
version: 0.2
phases:
build:
commands:
- echo installing composer..
- composer install
- echo creating .env file..
- cp .env.example .env
- echo generating app key
- php artisan key:generate
ã“れã§CI/CDã®æº–å‚™ã¯å®Œäº†ã§ã™ã€‚
実際ã«ã¯ä¸Šè¨˜ã®Buildspec ã§ã¯ã†ã¾ãã„ãã¾ã›ã‚“ã§ã—ãŸã€‚åŽŸå› ã¯.envファイルãŒä½œæˆã•れãªã‹ã£ãŸã“ã¨ã€‚
ã‚„ã‚€ãªãEC2サーãƒã§ç›´æŽ¥.envファイルを作æˆã—ã¾ã—ãŸã€‚
gitlabã«ã‚³ãƒŸãƒƒãƒˆã—ã¦ã¿ã‚‹
実際ã«GitLabã«ãƒ—ッシュã—ãŸã‚½ãƒ¼ã‚¹ãŒåæ˜ ã•れるã‹ã‚’確èªã—ã¾ã™ã€‚
ãŠãªã˜ã¿ã®Laravel Topç”»é¢ã«ãƒ–ãƒã‚°åã‚’å·®ã—込んã§ã¿ã¾ã—ãŸã€‚
<body class="antialiased">
<h1>syun tech blog</h1>
<div class="relative sm:flex sm:justify-center sm:items-center min-h-screen bg-dots-darker bg-center bg-gray-100 dark:bg-dots-lighter dark:bg-gray-900 selection:bg-red-500 selection:text-white">
@if (Route::has('login'))
<div class="sm:fixed sm:top-0 sm:right-0 p-6 text-right z-10">
ElasticBeanstalk ã®ãƒ‰ãƒ¡ã‚¤ãƒ³ã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã¿ã¾ã™ã€‚

å®Ÿé¨“çµæžœ

分ã‹ã‚Šã¥ã‚‰ãã¦ç”³ã—訳ãªã„ã®ã§ã™ãŒã€ã¡ã‚ƒã‚“ã¨æ›´æ–°ã•れã¦ã„ã¾ã™ã€‚
ã¤ã¾ã¥ããƒã‚¤ãƒ³ãƒˆ
ElasticBeanstalk : No Default VPC
ä»Šå›žã®æœ¬é¡Œã¨ã¯é•ã†ã¨ã“ã‚ã§ä¸€ç•ªèº“ã„ãŸ
デフォルトVPCを削除ã—ãŸçŠ¶æ…‹ã ã¨ã€Œ-ã€ã‚’é¸æŠžã—ãŸéš›ã«EB環境構築エラーã«ãªã‚‹ã®ã§æ³¨æ„
GitLab接続時 : 䏿˜Žãªã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ
åŽŸå› ä¸æ˜Žã€‚ã—ã°ã‚‰ãã™ã‚‹ã¨è¡¨ç¤ºã•ã‚Œã¦æŽ¥ç¶šå…ˆã¨ã—ã¦é¸æŠžã§ãるよã†ã«ãªã‚‹ã€‚
ãŠèŒ¶ã§ã‚‚飲んã§å°‘ã—å¾…ã¡ã¾ã—ょã†ã€‚

CodeBuild : php version (7.4.33) does not satisfy that requirement
AmazonLinux2ã‚’é¸æŠžã—ã¦ã„ãŸã‚‰ã‚¨ãƒ©ãƒ¼ãŒcomposer install ã§ã‚¨ãƒ©ãƒ¼ãŒé€£ç™ºã—ãŸã€‚
php version (7.4.33) does not satisfy that requirement
ãˆã€ã€PHPã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³7.4ãªã‚“ã§ã™ã‹ã€‚ã“ã‚Œã‚‚åŽŸå› ã‚’çªãæ¢ã‚ã‚‹ã®ã«åœ°å‘³ã«æ™‚é–“ãŒã‹ã‹ã£ãŸã€‚
解決ç–ã¯ubuntuを使ã†ã“ã¨ã€‚
ç·æ‹¬
AWS Pipelineã«ã¦GitLab連æºãŒã§ãるよã†ã«ãªã£ãŸã®ã§ã€ã„ã„æ©Ÿä¼šã¨ã„ã†ã“ã¨ã§AWS Pipelineã§ã®CI/CD構築å«ã‚ã¦æ•´ç†ã—ã¦ã¿ã¾ã—ãŸã€‚
試験ã®çŸ¥è˜ã ã‘ã§ã¯å®Ÿéš›ã®æ¥å‹™ã«æ´»ã‹ã—ãれãªã„ã“ã¨ã‚‚ã—ã°ã—ã°ã‚りã¾ã™ã®ã§ã€å®Ÿéš›ã«ãƒãƒ³ã‚ºã‚ªãƒ³ã—ã¦ç†è§£ã‚’æ·±ã‚ã‚‹ã“ã¨ãŒå¤§äº‹ã§ã™ã。
ã¡ãªã¿ã«CodeStarã§ã¯ã‚½ãƒ¼ã‚¹ãƒªãƒã‚¸ãƒˆãƒªã«GitLabã¯é¸æŠžã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ä»Šå¾Œã®æ©Ÿèƒ½æ‹¡å¼µã«æœŸå¾…ã§ã™ã€‚


