-
Notifications
You must be signed in to change notification settings - Fork 179
130 lines (118 loc) · 4.43 KB
/
pd-test-build-deploy.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# Run tests, build PD, and deploy it to sandbox
name: 'PD test, build, and deploy'
on:
pull_request:
paths:
- 'protocol-designer/**'
- 'step-generation/**'
- 'shared-data/**'
- 'components/**'
- 'package.json'
- '.github/workflows/pd-test-build-deploy.yaml'
- '.github/actions/js/setup/action.yml'
- '.github/actions/git/resolve-tag/action.yml'
- '.github/actions/environment/complex-variables/action.yml'
push:
paths:
- 'protocol-designer/**'
- 'step-generation/**'
- 'shared-data/**'
- 'components/**'
- 'package.json'
- '.github/workflows/pd-test-build-deploy.yaml'
- '.github/actions/js/setup/action.yml'
- '.github/actions/git/resolve-tag/action.yml'
- '.github/actions/environment/complex-variables/action.yml'
branches:
- '**'
tags:
- 'protocol-designer*'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}-${{ github.ref_name != 'edge' || github.run_id}}-${{ github.ref_type != 'tag' || github.run_id }}
cancel-in-progress: true
defaults:
run:
shell: bash
env:
CI: true
jobs:
unit-test:
name: 'protocol designer unit tests'
runs-on: 'ubuntu-24.04'
timeout-minutes: 20
steps:
- name: 'Checkout Repository'
uses: actions/checkout@v4
- uses: ./.github/actions/js/setup
- name: 'run unit tests'
run: make -C protocol-designer test-cov
- name: 'Upload coverage report'
uses: codecov/codecov-action@v5
with:
flags: protocol-designer
token: ${{ secrets.CODECOV_TOKEN }}
e2e-test:
name: 'protocol designer e2e tests'
runs-on: 'ubuntu-24.04'
timeout-minutes: 20
steps:
- name: 'Checkout Repository'
uses: actions/checkout@v4
- uses: ./.github/actions/js/setup
- name: 'run test-e2e'
run: make -C protocol-designer test-e2e
build-pd:
timeout-minutes: 20
name: 'build protocol designer'
needs: ['unit-test', 'e2e-test']
runs-on: 'ubuntu-24.04'
if: github.event_name != 'pull_request'
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/js/setup
- name: 'build PD'
env:
OT_PD_MIXPANEL_ID: ${{ secrets.OT_PD_MIXPANEL_ID }}
OT_PD_MIXPANEL_DEV_ID: ${{ secrets.OT_PD_MIXPANEL_DEV_ID }}
run: |
make -C protocol-designer NODE_ENV=development
- name: 'upload github artifact'
uses: actions/upload-artifact@v4
with:
name: 'pd-artifact'
path: protocol-designer/dist
deploy-pd:
timeout-minutes: 10
name: 'deploy protocol designer'
needs: ['build-pd']
runs-on: 'ubuntu-24.04'
if: github.event_name != 'pull_request'
steps:
- name: 'Checkout Repository'
uses: actions/checkout@v4
- uses: ./.github/actions/git/resolve-tag
- uses: ./.github/actions/environment/complex-variables
- name: 'download PD build'
uses: 'actions/download-artifact@v4'
with:
name: pd-artifact
path: ./dist
- name: 'configure ot3 s3 deploy creds and deploy'
shell: bash
env:
AWS_ACCESS_KEY_ID: ${{ secrets.PD_S3_SANDBOX_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.PD_S3_SANDBOX_SECRET }}
AWS_DEFAULT_REGION: us-east-1
run: |
aws configure set aws_access_key_id ${{ secrets.PD_S3_SANDBOX_KEY_ID }} --profile identity
aws configure set aws_secret_access_key ${{ secrets.PD_S3_SANDBOX_SECRET }} --profile identity
aws configure set region us-east-2 --profile identity
aws configure set output json --profile identity
aws configure set region us-east-2 --profile deploy
aws configure set role_arn ${{ secrets.OT_PD_DEPLOY_ROLE }} --profile deploy
aws configure set source_profile identity --profile deploy
aws s3 sync ./dist s3://sandbox.designer.opentrons.com/${{ env.OT_BRANCH }} --acl=public-read --profile=deploy
# invalidate both sandbox.opentrons.com and www.sandbox.opentrons.com cloudfront caches
aws cloudfront create-invalidation --distribution-id ${{ secrets.PD_CLOUDFRONT_SANDBOX_DISTRIBUTION_ID }} --paths "/*" --profile deploy
aws cloudfront create-invalidation --distribution-id ${{ secrets.PD_CLOUDFRONT_SANDBOX_WWW_DISTRIBUTION_ID }} --paths "/*" --profile deploy