-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
146 lines (121 loc) · 3.82 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
145
name: Build + Publish
on:
push:
branches:
- vega
jobs:
build:
name: Build
runs-on: ubuntu-latest
permissions:
packages: write
steps:
- uses: actions/checkout@v4
- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: 20.x
- name: Enable pnpm
run: |
corepack enable
corepack prepare pnpm@latest --activate
- name: Set Build Variables
run: |
echo "REL_VERSION=3.0.0-alpha.$GITHUB_RUN_NUMBER" >> $GITHUB_ENV
- name: Disable DEV Flag + Set Version
working-directory: server
run: |
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
(echo; echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"') >> /home/runner/.bashrc
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
brew install jq
mv package.json pkg-temp.json
jq --arg vs "$REL_VERSION_STRICT" -r '. + {dev:false, version:$vs}' pkg-temp.json > package.json
rm pkg-temp.json
cat package.json
- name: Fetch Latest Locales
uses: localazy/download@v1
with:
read_key: ${{ secrets.LOCALAZY_KEY_READ }}
- name: Build Assets
working-directory: ux
run: |
pnpm install --frozen-lockfile --shamefully-hoist
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
- name: Build Blocks
working-directory: blocks
run: |
pnpm install --frozen-lockfile
pnpm build
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Build and push Docker images
uses: docker/build-push-action@v4
with:
context: .
file: dev/build/Dockerfile
provenance: true
push: true
# cache-from: type=gha
# cache-to: type=gha,mode=max
platforms: linux/amd64,linux/arm64
tags: |
ghcr.io/requarks/wiki:3.0.0-alpha
ghcr.io/requarks/wiki:${{ env.REL_VERSION }}
- name: Prepare build archive
run: |
mkdir -p _dist
cp -R assets _dist/assets
cp -R server _dist/server
cp LICENSE _dist/LICENSE
cp config.sample.yml _dist/config.sample.yml
cd _dist/server
pnpm install --prod --frozen-lockfile
cd -
find ./_dist/ -printf "%P\n" | tar -czf wiki-js.tar.gz --no-recursion -C ./_dist/ -T -
- name: Upload Build Artifact
uses: actions/upload-artifact@v3
with:
name: build
path: wiki-js.tar.gz
windows:
name: Windows Build
runs-on: windows-latest
needs: [build]
steps:
- name: Setup Node.js environment
uses: actions/setup-node@v3
with:
node-version: 20.x
- name: Enable pnpm
run: |
corepack enable
corepack prepare pnpm@latest --activate
- name: Download Build Artifact
uses: actions/download-artifact@v3
with:
name: build
path: build
- name: Extract Build
run: |
mkdir -p win
tar -xzf $env:GITHUB_WORKSPACE\build\wiki-js.tar.gz -C $env:GITHUB_WORKSPACE\win --exclude=server/node_modules
- name: Install Dependencies
run: pnpm install --prod --frozen-lockfile
working-directory: win\server
- name: Create Bundle
shell: pwsh
run: Compress-Archive -Path $env:GITHUB_WORKSPACE\win\* -DestinationPath wiki-js-windows.zip
- name: Upload Build Artifact
uses: actions/upload-artifact@v3
with:
name: build-win
path: wiki-js-windows.zip