Unify workflows and fix package directory creation issue #34
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: Deploy to AWS CloudFormation | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - deploy | |
| env: | |
| AWS_REGION: ap-northeast-1 | |
| PROJECT_NAME: LambdaFramework | |
| permissions: | |
| id-token: write | |
| contents: read | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: '3.10' | |
| - name: Build Amazon Linux 2 compatible package | |
| run: | | |
| python -m pip install --upgrade pip | |
| # Amazon Linux 2コンテナで依存関係をビルド | |
| docker run --rm -v $(pwd):/var/task amazonlinux:2 \ | |
| bash -c " | |
| cd /var/task | |
| yum update -y | |
| yum install -y python3 python3-pip | |
| python3 -m pip install --upgrade pip | |
| mkdir -p package | |
| python3 -m pip install -r requirements.txt -t ./package | |
| echo 'Dependencies installed for Amazon Linux 2' | |
| ls -la ./package | |
| du -sh ./package | |
| " | |
| - name: Create deployment package | |
| run: | | |
| # パッケージディレクトリを作成 | |
| mkdir -p deployment-package | |
| # Lambda関数のコードをコピー | |
| cp -r LambdaFramework/* deployment-package/ | |
| # 依存関係をコピー | |
| cp -r package/* deployment-package/ | |
| # パッケージを圧縮 | |
| cd deployment-package | |
| zip -r ../lambda-deployment-package.zip . | |
| cd .. | |
| echo "Deployment package created: lambda-deployment-package.zip" | |
| ls -la lambda-deployment-package.zip | |
| - name: Debug AWS Role ARN | |
| run: | | |
| echo "Current branch: ${{ github.ref }}" | |
| echo "Branch condition: ${{ github.ref == 'refs/heads/main' }}" | |
| echo "Using role ARN: ${{ github.ref == 'refs/heads/main' && secrets.AWS_ROLE_ARN_PROD || secrets.AWS_ROLE_ARN_DEV }}" | |
| echo "AWS_ROLE_ARN_DEV exists: ${{ secrets.AWS_ROLE_ARN_DEV != '' }}" | |
| echo "AWS_ROLE_ARN_PROD exists: ${{ secrets.AWS_ROLE_ARN_PROD != '' }}" | |
| echo "AWS_ROLE_ARN_DEV length: ${{ secrets.AWS_ROLE_ARN_DEV != '' && 'non-empty' || 'empty' }}" | |
| echo "AWS_ROLE_ARN_PROD length: ${{ secrets.AWS_ROLE_ARN_PROD != '' && 'non-empty' || 'empty' }}" | |
| - name: Configure AWS credentials | |
| uses: aws-actions/configure-aws-credentials@v4 | |
| with: | |
| role-to-assume: ${{ github.ref == 'refs/heads/main' && secrets.AWS_ROLE_ARN_PROD || secrets.AWS_ROLE_ARN_DEV }} | |
| aws-region: ${{ env.AWS_REGION }} | |
| - name: Validate SAM template | |
| run: | | |
| # AWS認証情報の確認 | |
| aws sts get-caller-identity | |
| echo "AWS Region: $AWS_REGION" | |
| sam validate | |
| env: | |
| AWS_REGION: ${{ env.AWS_REGION }} | |
| - name: Deploy with SAM | |
| run: | | |
| STACK_NAME="LambdaFramework" | |
| # ブランチに基づいて環境設定を決定 | |
| if [ "${{ github.ref }}" = "refs/heads/main" ]; then | |
| ENVIRONMENT="production" | |
| S3_BUCKET="${{ vars.S3_BUCKET_PROD }}" | |
| else | |
| ENVIRONMENT="development" | |
| S3_BUCKET="${{ vars.S3_BUCKET_DEV }}" | |
| fi | |
| echo "Deploying to environment: $ENVIRONMENT" | |
| echo "Stack name: $STACK_NAME" | |
| echo "AWS Region: $AWS_REGION" | |
| echo "S3 Bucket: $S3_BUCKET" | |
| # カスタムパッケージを使用してビルド | |
| sam build --use-container | |
| sam deploy --no-confirm-changeset --no-fail-on-empty-changeset \ | |
| --stack-name $STACK_NAME \ | |
| --s3-bucket $S3_BUCKET \ | |
| --parameter-overrides ProjectName=${{ env.PROJECT_NAME }} Environment=$ENVIRONMENT | |
| env: | |
| AWS_REGION: ${{ env.AWS_REGION }} | |
| SAM_CLI_TELEMETRY: 0 | |
| - name: Deploy status | |
| if: always() | |
| run: | | |
| # ブランチに基づいて環境設定を決定 | |
| if [ "${{ github.ref }}" = "refs/heads/main" ]; then | |
| STACK_NAME="lambda-framework-prod" | |
| ENVIRONMENT="production" | |
| else | |
| STACK_NAME="lambda-framework-dev" | |
| ENVIRONMENT="development" | |
| fi | |
| echo "Amazon Linux 2 deployment completed for branch: ${{ github.ref }}" | |
| echo "Stack name: $STACK_NAME" | |
| echo "Environment: $ENVIRONMENT" | |
| echo "Commit: ${{ github.sha }}" |