Merge pull request #3 from Yulikepython/feature/init-プロジェクトの立ち上げ #6
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI/CD for Backend | |
| on: | |
| # -------------------------- | |
| # pull_request: | |
| # => PRが作られたとき → テストのみ | |
| # -------------------------- | |
| pull_request: | |
| branches: [develop, main] | |
| # -------------------------- | |
| # push: | |
| # => develop, main に push | |
| # → デプロイ (stageを切り替え) | |
| # -------------------------- | |
| push: | |
| branches: [develop, main] | |
| jobs: | |
| deploy-backend: | |
| runs-on: ubuntu-latest | |
| steps: | |
| # (1) コード取得 | |
| - name: Check out code | |
| uses: actions/checkout@v3 | |
| # (2) Node セットアップ | |
| - name: Setup Node | |
| uses: actions/setup-node@v3 | |
| with: | |
| node-version: 18 | |
| # (3) 依存関係インストール | |
| - name: Install dependencies | |
| run: | | |
| cd backend | |
| npm ci | |
| # (4) テスト実行 | |
| # → pull_request / push 両方で実行 | |
| - name: Run tests | |
| run: | | |
| cd backend | |
| npm run test | |
| # (5) AWS認証 (push時のみ) | |
| - name: Configure AWS Credentials | |
| if: ${{ github.event_name == 'push' }} | |
| uses: aws-actions/configure-aws-credentials@v2 | |
| with: | |
| aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
| aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
| aws-region: ${{ secrets.AWS_REGION }} | |
| # (6) デプロイ (develop→dev, main→prod) | |
| - name: Deploy | |
| if: ${{ github.event_name == 'push' }} | |
| env: | |
| SERVERLESS_ACCESS_KEY: ${{ secrets.SERVERLESS_ACCESS_KEY }} | |
| run: | | |
| cd backend | |
| # Secrets から必要な変数を export | |
| export BUCKET_NAME="${{ secrets.BUCKET_NAME }}" | |
| export AWS_REGION="${{ secrets.AWS_REGION }}" | |
| if [ "${{ github.ref_name }}" = "develop" ]; then | |
| echo "Deploying to dev stage..." | |
| export ALLOWED_REFERER="${{ secrets.ALLOWED_REFERER_DEV }}" | |
| npm run deploy:dev # 例) package.json: "deploy:dev": "serverless deploy --stage dev" | |
| elif [ "${{ github.ref_name }}" = "main" ]; then | |
| echo "Deploying to prod stage..." | |
| export ALLOWED_REFERER="${{ secrets.ALLOWED_REFERER_PROD }}" | |
| npm run deploy:prod # 例) package.json: "deploy:prod": "serverless deploy --stage prod" | |
| else | |
| echo "Not on develop or main => Skip" | |
| fi |