-
Notifications
You must be signed in to change notification settings - Fork 111
171 lines (149 loc) · 4.71 KB
/
ci.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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
name: Continuous integration
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
inputs:
deploy_prod:
description: "Deploy v2 prod"
required: true
type: boolean
jobs:
dependencies:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup_environment
- name: Install latest updates
run: npm ci
- name: Save cache
uses: actions/cache/save@v4
with:
path: |
node_modules
key: node_modules-${{ github.run_id }}
test:
runs-on: ubuntu-latest
needs: dependencies
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup_environment
- run: npm run test
format:
runs-on: ubuntu-latest
needs: dependencies
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup_environment
- run: npm run format:check
archlint:
runs-on: ubuntu-latest
needs: dependencies
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup_environment
- run: npm run archlint
build-prod:
if: inputs.deploy_prod == true
runs-on: ubuntu-latest
needs: [ test, format, archlint ]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup_environment
- run: npm run build-prod
- name: Cache build
uses: actions/cache/save@v4
with:
path: |
dist_build
key: build-${{ github.sha }}-${{ github.run_id }}
upload-artifact:
if: inputs.deploy_prod == true
runs-on: ubuntu-latest
needs: [ build-prod ]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup_environment
- name: Load build cache
uses: actions/cache/restore@v4
with:
path: |
dist_build
key: build-${{ github.sha }}-${{ github.run_id }}
- run: npm run zip
- uses: actions/upload-artifact@v4
with:
name: domain-story-modeler
path: |
dist/*.zip
README.md
if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn`
deploy-website-latest:
if: inputs.deploy_prod == false
runs-on: ubuntu-latest
needs: [ test, format, archlint ]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup_environment
- run: |
npm run build
CLONE_DIR=$(mktemp -d)
git config --global user.email "[email protected]"
git config --global user.name "Egon.io Bot"
git clone --single-branch --branch main "https://x-access-token:${{ secrets.EGON_IO_DEPLOYMENT_PAT }}@github.com/WPS/egon.io-website.git" "${CLONE_DIR}"
rm -r "${CLONE_DIR}/app-latest-build"
mkdir "${CLONE_DIR}/app-latest-build"
cp -r dist_build/egon/* "${CLONE_DIR}/app-latest-build"
cd "${CLONE_DIR}"
git add .
git commit -m "Deploy latest build" || true
git push || true
deploy-website-prod:
if: inputs.deploy_prod == true
runs-on: ubuntu-latest
needs: [ test, format, archlint ]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup_environment
- run: |
npm run build-prod
CLONE_DIR=$(mktemp -d)
git config --global user.email "[email protected]"
git config --global user.name "Egon.io Bot"
git clone --single-branch --branch main "https://x-access-token:${{ secrets.EGON_IO_DEPLOYMENT_PAT }}@github.com/WPS/egon.io-website.git" "${CLONE_DIR}"
rm -r "${CLONE_DIR}/app-v2"
mkdir "${CLONE_DIR}/app-v2"
cp -r dist_build/egon/* "${CLONE_DIR}/app-v2"
cd "${CLONE_DIR}"
git add .
git commit -m "Deploy production build" || true
git push || true
publish-image:
if: inputs.deploy_prod == true
runs-on: ubuntu-latest
needs: [ build-prod ]
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup_environment
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ghcr.io/wps/egon.io:latest