-
Notifications
You must be signed in to change notification settings - Fork 1
148 lines (120 loc) · 3.48 KB
/
release.yml
File metadata and controls
148 lines (120 loc) · 3.48 KB
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
name: Release and Deploy
on:
push:
branches:
- main
permissions:
contents: write
issues: write
pull-requests: write
pages: write
id-token: write
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-desktop:
name: Build Desktop on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-latest]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Rust cache
uses: swatinem/rust-cache@v2
with:
workspaces: './apps/desktop/src-tauri -> target'
- name: Install dependencies
run: npm ci
- name: Install Linux dependencies
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
- name: Build Tauri desktop app
uses: tauri-apps/tauri-action@v0
with:
projectPath: apps/desktop
tauriScript: npm run tauri --workspace=gitcontext-desktop
- name: Upload desktop installer artifacts
uses: actions/upload-artifact@v4
with:
name: dist-${{ matrix.os }}
path: apps/desktop/src-tauri/target/release/bundle/
retention-days: 1
release:
name: Create GitHub Release
needs: build-desktop
runs-on: ubuntu-latest
outputs:
version: ${{ steps.get_version.outputs.version }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GH_TOKEN }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Download all desktop build artifacts
uses: actions/download-artifact@v4
with:
path: dist-all
- name: Display downloaded artifacts structure
run: ls -R dist-all
- name: Run semantic-release
run: npx semantic-release
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
HUSKY: 0
- name: Get the new version number
id: get_version
run: |
NEW_VERSION=$(node -p "require('./package.json').version")
echo "version=$NEW_VERSION" >> $GITHUB_OUTPUT
deploy-pages:
name: Deploy to GitHub Pages
needs: release
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Checkout main branch
uses: actions/checkout@v4
with:
ref: main
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- name: Install dependencies
run: npm ci
- name: Build web application
run: npm --workspace apps/web run build
- name: Configure Pages
uses: actions/configure-pages@v5
- name: Upload web artifact for deployment
uses: actions/upload-pages-artifact@v3
with:
path: apps/web/dist
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4