-
Notifications
You must be signed in to change notification settings - Fork 1
142 lines (134 loc) · 5.42 KB
/
ui.yml
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
131
132
133
134
135
136
137
138
139
140
141
142
name: UI
on:
push:
paths:
- .github/workflows/ui.yml
- package/cloud/**
- package/ui/**
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 18
registry-url: https://registry.npmjs.org/
- uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- run: npm ci
- run: npm test -w @kogen/kogen-ui
build:
runs-on: ubuntu-latest
strategy:
matrix:
environment:
# - "dev"
- "prod"
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 18
registry-url: https://registry.npmjs.org/
- uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install Pulumi CLI
uses: pulumi/setup-pulumi@v2
- name: Get Pulumi stack output properties
run: |
pulumi login
pulumi stack select kogen-${{ matrix.environment }}
echo "webapp_url=$(pulumi stack output webapp | jq -r '.url')" >> $GITHUB_ENV
echo "alchemy_pubkey=$(pulumi config get --path alchemy:pubkey)" >> $GITHUB_ENV
echo "VITE_CONTRACT_PUT_INJECTIVE_TESTNET=$(pulumi config get --path kogen:VITE_CONTRACT_PUT_INJECTIVE_TESTNET)" >> $GITHUB_ENV
echo "VITE_CONTRACT_FACTORY_INJECTIVE_TESTNET=$(pulumi config get --path kogen:VITE_CONTRACT_FACTORY_INJECTIVE_TESTNET)" >> $GITHUB_ENV
echo "VITE_CONTRACT_INJECTIVE_TESTNET=$(pulumi config get --path kogen:VITE_CONTRACT_INJECTIVE_TESTNET)" >> $GITHUB_ENV
echo "VITE_CONTRACT_NEUTRON_TESTNET=$(pulumi config get --path kogen:VITE_CONTRACT_NEUTRON_TESTNET)" >> $GITHUB_ENV
echo "VITE_CONTRACT_ARCHWAY_TESTNET=$(pulumi config get --path kogen:VITE_CONTRACT_ARCHWAY_TESTNET)" >> $GITHUB_ENV
working-directory: package/cloud
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: us-east-1
PULUMI_CONFIG_PASSPHRASE: ${{ secrets.PULUMI_CONFIG_PASSPHRASE }}
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
- run: npm ci
- run: npm run -w @kogen/kogen-ui build:${{ matrix.environment }}
env:
NODE_OPTIONS: "--max_old_space_size=8192"
VITE_FRONTEND_URL: ${{ env.webapp_url }}
VITE_BACKEND_URL: ${{ env.webapp_url }}
VITE_ALCHEMY_PUBKEY: ${{ env.alchemy_pubkey }}
VITE_CONTRACT_PUT_INJECTIVE_TESTNET: ${{ env.VITE_CONTRACT_PUT_INJECTIVE_TESTNET }}
VITE_CONTRACT_INJECTIVE_TESTNET: ${{ env.VITE_CONTRACT_INJECTIVE_TESTNET }}
VITE_CONTRACT_NEUTRON_TESTNET: ${{ env.VITE_CONTRACT_NEUTRON_TESTNET }}
VITE_CONTRACT_ARCHWAY_TESTNET: ${{ env.VITE_CONTRACT_ARCHWAY_TESTNET }}
VITE_CLIENT_ROLLBAR_ACCESS_TOKEN: ${{ secrets.CLIENT_ROLLBAR_ACCESS_TOKEN }}
- name: Install serve
run: npm install -g serve
- name: Start server
run: npx serve package/ui/dist &
- name: Install Puppeteer
run: npm install puppeteer
- name: Check for errors
run: |
node check_errors.js > error_output.txt
if grep -q "RELOAD THE PAGE" error_output.txt; then
echo "Errors found:"
cat error_output.txt
exit 1
else
echo "No errors found"
fi
- uses: actions/upload-artifact@v4
if: github.ref == 'refs/heads/main'
with:
name: website-kogen-${{ matrix.environment }}
path: ./package/ui/dist
retention-days: 1
deploy-prod:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
needs: ["test", "build"]
steps:
- uses: actions/checkout@v4
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- uses: actions/download-artifact@v4
with:
name: website-kogen-prod
path: ./package/ui/dist
- name: Install Pulumi CLI
uses: pulumi/setup-pulumi@v2
- name: Get Pulumi stack output properties
run: |
pulumi login
pulumi stack select Julio75012/kogen-prod
echo "s3_bucket=$(pulumi stack output webapp | jq -r '.bucketUri')" >> $GITHUB_ENV
echo "cloudfront_id=$(pulumi stack output webapp | jq -r '.cloudFrontId')" >> $GITHUB_ENV
working-directory: package/cloud
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: us-east-1
PULUMI_CONFIG_PASSPHRASE: ${{ secrets.PULUMI_CONFIG_PASSPHRASE }}
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
- run: |
aws s3 sync ./package/ui/dist ${{ env.s3_bucket }} --delete
- run: |
aws cloudfront create-invalidation \
--distribution-id ${{ env.cloudfront_id}} \
--paths "/*"