AWS CodePipeline ㌠GitLabをサãƒãƒ¼ãƒˆã—ãŸã®ã§ä½¿ã£ã¦ã¿ãŸã€Laravel】

AWSã®CI/CDツールã¨ã—ã¦ãŠãªã˜ã¿ã®Codeシリーズアップデート情報ã§ã™ã€‚

CI/CDツールã®CodePipelineãŒã‚½ãƒ¼ã‚¹ãƒªãƒã‚¸ãƒˆãƒªã¨ã—ã¦gitlabã®ã‚µãƒãƒ¼ãƒˆã‚’é–‹å§‹

今回ã¯CodePipelineを作りãªãŒã‚‰GitLabã¨ã®CI/CD実ç¾ã—ã¦ã¿ã¾ã™ã€‚

概è¦

CodePipelineã¨ã¯

ã„ã‚ゆるCodeシリーズã®ä¸€ã¤ã€‚
CI継続的デリãƒãƒªãƒ¼ã‚’æ‹…ã†ã‚µãƒ¼ãƒ“スã§ã™ã€‚

CodeCommit, CodeBuild, CodeDeploy ã¨é€£æºã—ã¦CI/CD環境を構築ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

AWSã®CI/CD解説
BlackBelt AWS CodeStar_AWS CodePipeline

GitLabã¨ã¯

GitHubã¨åç§°ãŒä¼¼ã¦ã„ã¾ã™ãŒã€ã‚µãƒ¼ãƒ“ス的ã«ã‚‚åŒã˜ã‚ˆã†ãªã‚‚ã®ã§ã™ã€‚web上ã«ãƒªãƒã‚¸ãƒˆãƒªã‚’作æˆã—ã¦ãƒªã‚½ãƒ¼ã‚¹ç®¡ç†ã§ãã¾ã™ã€‚
Gitリãƒã‚¸ãƒˆãƒªç®¡ç†ã®åˆ†é‡Žã«ãŠã„ã¦GitHubã«æ¬¡ãNo.2ãã‚‰ã„æœ‰åãªã®ã§ã¯ãªã„ã§ã—ょã†ã‹ã€‚

GitLab

CI/CD構築手順

GitLabå´ã®ä½œæ¥­ : GitLabã§ã®ãƒªãƒã‚¸ãƒˆãƒªä½œæˆ

GitLabã«ãƒªãƒã‚¸ãƒˆãƒªã‚’作æˆã™ã‚‹

ã¾ãšã¯ç®¡ç†å¯¾è±¡ã¨ã™ã‚‹ãƒ—ロジェクトを作æˆã—ã¾ã™ã€‚
今回ã¯ã€Œtest-appã€ã¨ã„ã†ãƒ—ロジェクトを作æˆã—ã¾ã—ãŸã€‚

GitLabã«ã¦ãƒ—ロジェクトを作æˆ

プロジェクトã®ä½œæˆãŒå®Œäº†ã—ã¾ã—ãŸã€‚

GitLabプロジェクト作æˆå®Œäº†

GitLabã«ãƒªã‚½ãƒ¼ã‚¹ã‚’デプロイã™ã‚‹

作æˆã—ãŸç©ºã®ã€Œtest-appã€ãƒ—ロジェクトã«ãƒªã‚½ãƒ¼ã‚¹ã‚’デプロイã—ã¾ã™ã€‚
Gitツールãªã©ã‚’利用ã—ã¦ãƒ‡ãƒ—ロイã—ã¾ã™ã€‚方法ã¯å‰²æ„›ã€‚

今回ã¯Laravelプロジェクトを作æˆã—ã¾ã—ãŸã€‚
ãŠãªã˜ã¿ã®TOPç”»é¢ãŒè¡¨ç¤ºã•れるã¨ã“ã‚ã¾ã§æº–å‚™ãŒã§ããŸã‚‰ãƒ‡ãƒ—ロイを行ã„ã¾ã™ã€‚

Laravelã®TOPç”»é¢

AWSå´ã®ä½œæ¥­ : CodePipelineã®ä½œæˆ

リソースã®ãƒ‡ãƒ—ロイ先サーãƒã‚’準備ã™ã‚‹

CodePipelineã‹ã‚‰ãƒ‡ãƒ—ロイã§ãã‚‹å…ˆã¯é™ã‚‰ã‚Œã‚‹ã®ã§ã€ä»Šå›žã¯ElasticBeanstalkを利用ã—ã¾ã™ã€‚

AWS ElasticBeanstalkã®æº–å‚™

ã“ã®æ®µéšŽã§ã‚¢ãƒ—リケーションコードã«åœ§ç¸®ã—ãŸLaravelプロジェクトã®ãƒ•ァイルをアップロードã—ã¦ãŠãã¨
動作確èªãŒæ—©ãã¦ä¾¿åˆ©ã§ã™ã€‚

AWS CodePipelineã‹ã‚‰GitLabã¸ã®æŽ¥ç¶šã‚’作æˆã™ã‚‹

ソースステージã®è¿½åŠ ç”»é¢ã§ã€ã‚½ãƒ¼ã‚¹ãƒ—ロãƒã‚¤ãƒ€ã‹ã‚‰ã€ŒGitLabã€ãŒé¸æŠžã§ãるよã†ã«ãªã£ãŸã“ã¨ãŒ
今回ã®ã‚¢ãƒƒãƒ—デートã§ã™ã€‚

GitLabã‚’é¸æŠžã™ã‚‹ã¨ã€ŒGitLabã«æŽ¥ç¶šã™ã‚‹ã€ãƒœã‚¿ãƒ³ãŒæŠ¼ä¸‹ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚
ã™ã§ã«è¨­å®šæ¸ˆã¿ã§ã‚れã°ã€ŒæŽ¥ç¶šã€ã®ãƒ—ルダウンã‹ã‚‰é¸æŠžã§ãã¾ã™ã€‚

CodePipelineソースステージã®ä½œæˆ

「GitLabã«æŽ¥ç¶šã™ã‚‹ã€ãƒœã‚¿ãƒ³ã‚’押下ã™ã‚‹ã¨ã“ã¡ã‚‰ã®ç”»é¢ãŒè¡¨ç¤ºã•れã¾ã™ã€‚

接続åã¯AWS内ã§ã®ç®¡ç†åç§°ãªã®ã§ã‚ã‹ã‚Šã‚„ã™ã„åå‰ã‚’付ã‘ã¦ãŠãã¾ã—ょã†ã€‚

GitLabã¸ã®æŽ¥ç¶šç”»é¢

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

ログインãŒå®Œäº†ã™ã‚‹ã¨AWS CodePipelineã®ç”»é¢ã«æˆ»ã£ã¦ãã¾ã™ã€‚

GitLabã¸ã®ãƒ­ã‚°ã‚¤ãƒ³ç”»é¢

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

GitLabã¸ã®æŽ¥ç¶šå®Œäº†

デプロイ先を指定ã™ã‚‹

ソースã®å–å¾—å…ƒãŒè¨­å®šã§ããŸã‚‰ã€æ¬¡ã¯ãƒ‡ãƒ—ロイ先を指定ã—ã¾ã™ã€‚
ã“ã“ã«ã¯å…ˆã»ã©ä½œæˆã—㟠ElasticBeanstalk を設定ã—ã¾ã™ã€‚

CodePipelineデプロイステージã®è¨­å®š

レビューã¾ã§ã‚¹ã‚­ãƒƒãƒ—ã—ã¦è¨­å®šã‚’完了ã™ã‚‹ã¨ã€ã™ãã«CodePipelineãŒå‹•ã出ã—ã¾ã™ã€‚

å•題ãªãæˆåŠŸã™ã‚Œã°ã€ã“ã®ã‚ˆã†ã«ç·‘色ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã§ã€ŒæˆåŠŸã€ã¨è¡¨ç¤ºã•れã¾ã™ã€‚

CodePipelineã®ä½œæˆå®Œäº†

「ソースã€ã€Œãƒ‡ãƒ—ロイã€ãれãžã‚Œã®æ¨ªã«ã‚‚æˆåŠŸã—ã¾ã—ãŸã¨ã„ã†è¨˜è¿°ãŒã‚りã¾ã™ã€‚エラーãŒã‚ã‚‹ã¨ã“ã¡ã‚‰ã«èµ¤å­—ã§è¡¨ç¤ºã•れã¾ã™ã€‚
ã“れ㧠CodePipeline ã®è¨­å®šãŒå®Œäº†ã—ã¾ã—ãŸã€‚

追加 CodeBuild ã§ã‚µãƒ¼ãƒã®åˆæœŸè¨­å®šã‚’行ã†

Laravelã®ç’°å¢ƒã‚’æ•´å‚™ã™ã‚‹ã«ã¯ã€ã‚µãƒ¼ãƒä¸Šã§ã„ãã¤ã‹ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã­ã€‚

コマンドã¯CodeBuildを使ã£ã¦å®Ÿè¡Œã™ã‚‹ã‚ˆã†ã«è¨­å®šã‚’追加ã—ã¾ã™ã€‚

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 ã®ãƒ‰ãƒ¡ã‚¤ãƒ³ã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã¿ã¾ã™ã€‚

GirLabã§ã®CI/CDテスト

å®Ÿé¨“çµæžœ

GirLabã§ã®CI/CDテスト確èªå®Œäº†

分ã‹ã‚Šã¥ã‚‰ãã¦ç”³ã—訳ãªã„ã®ã§ã™ãŒã€ã¡ã‚ƒã‚“ã¨æ›´æ–°ã•れã¦ã„ã¾ã™ã€‚

ã¤ã¾ã¥ããƒã‚¤ãƒ³ãƒˆ

ElasticBeanstalk : No Default VPC

ä»Šå›žã®æœ¬é¡Œã¨ã¯é•ã†ã¨ã“ã‚ã§ä¸€ç•ªèº“ã„ãŸ
デフォルトVPCを削除ã—ãŸçŠ¶æ…‹ã ã¨ã€Œ-ã€ã‚’é¸æŠžã—ãŸéš›ã«EB環境構築エラーã«ãªã‚‹ã®ã§æ³¨æ„

GitLab接続時 : 䏿˜Žãªã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ

åŽŸå› ä¸æ˜Žã€‚ã—ã°ã‚‰ãã™ã‚‹ã¨è¡¨ç¤ºã•ã‚Œã¦æŽ¥ç¶šå…ˆã¨ã—ã¦é¸æŠžã§ãるよã†ã«ãªã‚‹ã€‚
ãŠèŒ¶ã§ã‚‚飲んã§å°‘ã—å¾…ã¡ã¾ã—ょã†ã€‚

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ã¯é¸æŠžã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ä»Šå¾Œã®æ©Ÿèƒ½æ‹¡å¼µã«æœŸå¾…ã§ã™ã€‚

コメントを残ã™