-
Notifications
You must be signed in to change notification settings - Fork 22
144 lines (142 loc) · 4.18 KB
/
build.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
143
144
name: "Build & Test"
on:
push:
pull_request:
schedule:
- cron: 0 0 * * 0
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
- uses: oven-sh/setup-bun@v1
- name: Install node dependencies
working-directory: app
run: bun install
- name: Lint
working-directory: app
run: |
bun run typecheck
bun run lint
- name: Build
working-directory: app
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
run: |
bun run build
tar cfJ micropad.tar.xz build/*
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: micropad
path: 'app/micropad.tar.xz'
test:
name: Test
runs-on: ubuntu-latest
needs: [build]
steps:
- name: Checkout repository
uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
- uses: oven-sh/setup-bun@v1
- uses: actions/download-artifact@v3
with:
name: micropad
- name: Install node dependencies
working-directory: app
run: |
bun install
bun run playwright install
- name: Run Micropad in background for testing
run: |
mkdir micropad
tar xf micropad.tar.xz -C micropad
cd micropad/build
python3 -m http.server 3000 &
- name: Test
working-directory: app
run: bun run test
deploy:
name: Deploy
runs-on: ubuntu-latest
environment:
name: production
url: "https://web.getmicropad.com"
needs: [build, test]
if: github.ref == 'refs/heads/master' && github.repository == 'micropad/Micropad-Core'
steps:
- uses: actions/download-artifact@v3
with:
name: micropad
- run: |
mkdir app
tar xf micropad.tar.xz -C app
- name: Upload files
uses: oracle-actions/[email protected]
env:
OCI_CLI_USER: ${{ secrets.OCI_CLI_USER }}
OCI_CLI_TENANCY: ${{ secrets.OCI_CLI_TENANCY }}
OCI_CLI_FINGERPRINT: ${{ secrets.OCI_CLI_FINGERPRINT }}
OCI_CLI_KEY_CONTENT: ${{ secrets.OCI_CLI_KEY_CONTENT }}
OCI_CLI_REGION: ${{ secrets.OCI_CLI_REGION }}
with:
command: os object sync -bn micropad-js --content-type auto --src-dir app/build
canary-deploy:
name: Canary Deploy
runs-on: ubuntu-latest
environment:
name: next
url: "https://next.getmicropad.com"
needs: [build, test]
if: github.ref == 'refs/heads/next-dev' && github.repository == 'micropad/Micropad-Core'
steps:
- uses: actions/download-artifact@v3
with:
name: micropad
- run: |
mkdir app
tar xf micropad.tar.xz -C app
- name: Upload files
uses: oracle-actions/[email protected]
env:
OCI_CLI_USER: ${{ secrets.OCI_CLI_USER }}
OCI_CLI_TENANCY: ${{ secrets.OCI_CLI_TENANCY }}
OCI_CLI_FINGERPRINT: ${{ secrets.OCI_CLI_FINGERPRINT }}
OCI_CLI_KEY_CONTENT: ${{ secrets.OCI_CLI_KEY_CONTENT }}
OCI_CLI_REGION: ${{ secrets.OCI_CLI_REGION }}
with:
command: os object sync -bn micropad-js-next --content-type auto --src-dir app/build
release:
name: Publish Release on GitHub
runs-on: ubuntu-latest
needs: [build, test]
if: github.ref == 'refs/heads/master' && github.event_name != 'schedule'
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Get micropad version
id: micropad-version
working-directory: app
run: echo "version=v$(npm pkg get version | sed 's/"//g')" >> $GITHUB_OUTPUT
- uses: actions/download-artifact@v3
with:
name: micropad
- uses: dev-drprasad/[email protected]
with:
delete_release: true
tag_name: ${{ steps.micropad-version.outputs.version }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Release
uses: softprops/action-gh-release@v1
with:
files: micropad.tar.xz
tag_name: ${{ steps.micropad-version.outputs.version }}
target_commitish: master