|
1 | 1 | name: Deploy to AWS S3 |
2 | 2 |
|
3 | 3 | concurrency: |
4 | | - group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} |
| 4 | + group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}-${{ github.event.inputs.WORKFLOW_PHASE || 'dev' }} |
5 | 5 | cancel-in-progress: true |
6 | 6 |
|
7 | 7 | on: |
|
15 | 15 | options: |
16 | 16 | - dev |
17 | 17 | - prod |
18 | | - APPLICATION: |
19 | | - description: "Application to deploy" |
20 | | - required: true |
21 | | - default: pyconkr |
22 | | - type: choice |
23 | | - options: |
24 | | - - pyconkr-frontend |
25 | | - - pyconkr-admin |
26 | 18 | push: |
27 | 19 | branches: |
28 | 20 | - "main" |
|
42 | 34 | AWS_S3_PYCONKR_ADMIN_BUCKET: ${{ (github.event_name == 'workflow_dispatch' && inputs.WORKFLOW_PHASE || 'dev') == 'dev' && secrets.AWS_S3_PYCONKR_ADMIN_BUCKET_DEV || secrets.AWS_S3_PYCONKR_ADMIN_BUCKET_PROD }} |
43 | 35 | AWS_CLOUDFRONT_PYCONKR_FRONTEND_DISTRIBUTION_ID: ${{ (github.event_name == 'workflow_dispatch' && inputs.WORKFLOW_PHASE || 'dev') == 'dev' && secrets.AWS_CLOUDFRONT_PYCONKR_FRONTEND_DISTRIBUTION_ID_DEV || secrets.AWS_CLOUDFRONT_PYCONKR_FRONTEND_DISTRIBUTION_ID_PROD }} |
44 | 36 | AWS_CLOUDFRONT_PYCONKR_ADMIN_DISTRIBUTION_ID: ${{ (github.event_name == 'workflow_dispatch' && inputs.WORKFLOW_PHASE || 'dev') == 'dev' && secrets.AWS_CLOUDFRONT_PYCONKR_ADMIN_DISTRIBUTION_ID_DEV || secrets.AWS_CLOUDFRONT_PYCONKR_ADMIN_DISTRIBUTION_ID_PROD }} |
45 | | - DEPLOY_TARGET_APPLICATION: ${{ (github.event_name == 'workflow_dispatch' && inputs.APPLICATION || 'pyconkr-frontend') == 'pyconkr-frontend' && 'pyconkr' || 'pyconkr-admin' }} |
| 37 | + |
| 38 | + strategy: |
| 39 | + matrix: |
| 40 | + application: [pyconkr, pyconkr-admin] |
| 41 | + include: |
| 42 | + - application: pyconkr |
| 43 | + aws_s3_bucket_key: AWS_S3_PYCONKR_FRONTEND_BUCKET |
| 44 | + aws_cloudfront_distribution_key: AWS_CLOUDFRONT_PYCONKR_FRONTEND_DISTRIBUTION_ID |
| 45 | + - application: pyconkr-admin |
| 46 | + aws_s3_bucket_key: AWS_S3_PYCONKR_ADMIN_BUCKET |
| 47 | + aws_cloudfront_distribution_key: AWS_CLOUDFRONT_PYCONKR_ADMIN_DISTRIBUTION_ID |
46 | 48 |
|
47 | 49 | steps: |
48 | 50 | - uses: actions/checkout@master |
|
66 | 68 |
|
67 | 69 | - run: mkdir -p dist |
68 | 70 |
|
69 | | - - run: pnpm build:@apps/${{ env.DEPLOY_TARGET_APPLICATION }} ${{ env.BUMP_RULE }} && cp -r apps/${{ env.DEPLOY_TARGET_APPLICATION }}/dist/* dist/ |
| 71 | + - run: pnpm build:@apps/${{ matrix.application }} ${{ env.BUMP_RULE }} && cp -r apps/${{ matrix.application }}/dist/* dist/ |
70 | 72 |
|
71 | | - - run: aws s3 cp --recursive ./dist s3://${{ (github.event_name == 'workflow_dispatch' && inputs.APPLICATION || 'pyconkr-frontend') == 'pyconkr-frontend' && env.AWS_S3_PYCONKR_FRONTEND_BUCKET || env.AWS_S3_PYCONKR_ADMIN_BUCKET }}/ |
| 73 | + - run: aws s3 cp --recursive ./dist s3://${{ secrets[matrix.aws_s3_bucket_key] }}/ |
72 | 74 |
|
73 | | - - run: aws cloudfront create-invalidation --distribution-id ${{ (github.event_name == 'workflow_dispatch' && inputs.APPLICATION || 'pyconkr-frontend') == 'pyconkr-frontend' && env.AWS_CLOUDFRONT_PYCONKR_FRONTEND_DISTRIBUTION_ID || env.AWS_CLOUDFRONT_PYCONKR_ADMIN_DISTRIBUTION_ID }} --paths "/*" |
| 75 | + - run: aws cloudfront create-invalidation --distribution-id ${{ secrets[matrix.aws_cloudfront_distribution_key] }} --paths "/*" |
0 commit comments