GitHub Actions에서 Laravel 프로젝트 배포

Laravel Sail에서 만든 프로젝트를 Serverless Framework에서 AWS Lambda 및 Aurora Serverless에 배포할 수 있도록 했지만 GitHub Actions를 사용하여 배포할 수 있는지 시도해 보았습니다.

전제



여기 의 리포지토리에 GitHub Actions 워크플로를 추가하는 단계입니다.

절차



리포지토리에 보안 추가



AWS 환경에 배포하려면 AWS 자격 증명 정보가 필요하므로 대상 리포지토리에 다음 보안을 추가합니다.
  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY



  • 배포를 위한 .env 파일 준비



    GitHub Actions 환경에서 Laravel 프로젝트를 배포해야 하므로 배포를 위한 .env 파일을 준비합니다.
    > cp .env.example .env-deploy
    
    # 環境に合わせて編集
    

    GitHub Actions 워크플로 정의



    다음은 워크플로의 정의입니다.
    name: deploy
    
    on:
      push:
        branches:
        - main
    
    jobs:
      deploy:
    
        runs-on: ubuntu-latest
    
        steps:
        - uses: actions/checkout@v2
        - name: cache vendor
          id: cache
          uses: actions/cache@v1
          with:
            path: ./vendor
            key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
            restore-keys: |
              ${{ runner.os }}-composer-
    
        - name: Composer install
          if: steps.cache.outputs.cache-hit != 'true'
          run: composer install -n --prefer-dist
    
        - name: Copy .env
          run: cp .env.deploy .env
        - name: generate key
          run: php artisan key:generate
    
        - name: Setup Node.js
          uses: actions/setup-node@v1
          with:
            node-version: '12.x'
    
        - name: Install Dependencies
          run: |
            npm install serverless -g
            npm install
    
        - name: Configure AWS credentials
          uses: aws-actions/configure-aws-credentials@v1
          with:
            aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
            aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
            aws-region: ap-northeast-1
    
        - name: Deploy to Lambda
          run: sls deploy
    
        - name: Migrate
          run: vendor/bin/bref cli --region=ap-northeast-1 laravel-dev-artisan -- migrate
    
        - name: S3 sync
          run: aws s3 sync public s3://kai-laravel-test/public --delete
    

    고려 사항은 버킷 이름을 S3 sync에 쓰는 점, AWS 자격 증명을 스테이지 (prod, dev)별로 전환하는 방법입니다.

    동작 확인



    실제로 GitHub 리포지토리로 푸시하여 워크 플로가 작동하는지 확인합니다.





    잘 작동했습니다. 배포 환경에 액세스해 봅니다.





    잘 작동했습니다.
    했어.

    불필요해지면



    손에 리포지토리를 복제하고 개발 및 배포 환경이 있으면 명령으로 삭제할 수 있습니다.
    > aws s3 rm --recursive s3://kai-laravel-test/
    > serverless remove
    

    참고



    kai-kou/laravel-sail-sample-projects at feature/deploy-aws-lambda
    htps : // 기주 b. 코 m / 카이 코 / ぁらゔ ぇ l ㅇ ㅇ

    GitHub Actions를 사용하여 AWS Lambda에 자동 배포
    htps : // 이 m/호미네 s22/있어 ms/412d4에81b24804d75205

    GitHub Actions에서 AWS S3에 자동으로 배포(정적 파일 디렉터리를 통째로 업로드) - Qiita
    htps : // 코 m / 치 py / ms / 488 52411 A9 A 5765330f

    좋은 웹페이지 즐겨찾기