Skip to content

Commit fa6675e

Browse files
authored
Helm chart improvements (#2207)
* add helm deps * configurablecli tag for setup commands * enabled -> deploy * extraEnv -> extraEnvVars * update docs * minio -> s3 * improve persistence config * set cli tag to v4-beta * chart and image bump * fix tests * lock chart * workflow hotfix * quote for niels * make probes configurable * fix webapp and supervisor templates * bump chart
1 parent 8a86e7b commit fa6675e

31 files changed

+835
-900
lines changed

.github/workflows/release-helm.yml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,14 @@ jobs:
2929
with:
3030
version: "3.18.3"
3131

32+
- name: Build dependencies
33+
run: helm dependency build ./hosting/k8s/helm/
34+
35+
- name: Extract dependency charts
36+
run: |
37+
cd ./hosting/k8s/helm/
38+
for file in ./charts/*.tgz; do echo "Extracting $file"; tar -xzf "$file" -C ./charts; done
39+
3240
- name: Lint Helm Chart
3341
run: |
3442
helm lint ./hosting/k8s/helm/
@@ -60,6 +68,14 @@ jobs:
6068
with:
6169
version: "3.18.3"
6270

71+
- name: Build dependencies
72+
run: helm dependency build ./hosting/k8s/helm/
73+
74+
- name: Extract dependency charts
75+
run: |
76+
cd ./hosting/k8s/helm/
77+
for file in ./charts/*.tgz; do echo "Extracting $file"; tar -xzf "$file" -C ./charts; done
78+
6379
- name: Log in to Container Registry
6480
uses: docker/login-action@v3
6581
with:
@@ -115,7 +131,7 @@ jobs:
115131
```bash
116132
helm upgrade --install trigger \
117133
oci://${{ env.REGISTRY }}/${{ github.repository_owner }}/charts/${{ env.CHART_NAME }} \
118-
--version ${{ steps.version.outputs.version }}
134+
--version "${{ steps.version.outputs.version }}"
119135
```
120136
121137
### Changes

apps/webapp/app/components/SetupCommands.tsx

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { createContext, useContext, useState } from "react";
22
import { useAppOrigin } from "~/hooks/useAppOrigin";
33
import { useProject } from "~/hooks/useProject";
4+
import { useTriggerCliTag } from "~/hooks/useTriggerCliTag";
45
import {
56
ClientTabs,
67
ClientTabsContent,
@@ -35,8 +36,6 @@ function usePackageManager() {
3536
return context;
3637
}
3738

38-
const v3PackageTag = "latest";
39-
4039
function getApiUrlArg() {
4140
const appOrigin = useAppOrigin();
4241

@@ -69,8 +68,9 @@ export function InitCommandV3({ title }: TabsProps) {
6968
const project = useProject();
7069
const projectRef = project.externalRef;
7170
const apiUrlArg = getApiUrlArg();
71+
const triggerCliTag = useTriggerCliTag();
7272

73-
const initCommandParts = [`trigger.dev@${v3PackageTag}`, "init", `-p ${projectRef}`, apiUrlArg];
73+
const initCommandParts = [`trigger.dev@${triggerCliTag}`, "init", `-p ${projectRef}`, apiUrlArg];
7474
const initCommand = initCommandParts.filter(Boolean).join(" ");
7575

7676
const { activePackageManager, setActivePackageManager } = usePackageManager();
@@ -118,6 +118,7 @@ export function InitCommandV3({ title }: TabsProps) {
118118
}
119119

120120
export function TriggerDevStepV3({ title }: TabsProps) {
121+
const triggerCliTag = useTriggerCliTag();
121122
const { activePackageManager, setActivePackageManager } = usePackageManager();
122123

123124
return (
@@ -139,30 +140,31 @@ export function TriggerDevStepV3({ title }: TabsProps) {
139140
variant="secondary/medium"
140141
iconButton
141142
className="mb-4"
142-
value={`npx trigger.dev@${v3PackageTag} dev`}
143+
value={`npx trigger.dev@${triggerCliTag} dev`}
143144
/>
144145
</ClientTabsContent>
145146
<ClientTabsContent value={"pnpm"}>
146147
<ClipboardField
147148
variant="secondary/medium"
148149
iconButton
149150
className="mb-4"
150-
value={`pnpm dlx trigger.dev@${v3PackageTag} dev`}
151+
value={`pnpm dlx trigger.dev@${triggerCliTag} dev`}
151152
/>
152153
</ClientTabsContent>
153154
<ClientTabsContent value={"yarn"}>
154155
<ClipboardField
155156
variant="secondary/medium"
156157
iconButton
157158
className="mb-4"
158-
value={`yarn dlx trigger.dev@${v3PackageTag} dev`}
159+
value={`yarn dlx trigger.dev@${triggerCliTag} dev`}
159160
/>
160161
</ClientTabsContent>
161162
</ClientTabs>
162163
);
163164
}
164165

165166
export function TriggerLoginStepV3({ title }: TabsProps) {
167+
const triggerCliTag = useTriggerCliTag();
166168
const { activePackageManager, setActivePackageManager } = usePackageManager();
167169

168170
return (
@@ -184,23 +186,23 @@ export function TriggerLoginStepV3({ title }: TabsProps) {
184186
variant="secondary/medium"
185187
iconButton
186188
className="mb-4"
187-
value={`npx trigger.dev@${v3PackageTag} login`}
189+
value={`npx trigger.dev@${triggerCliTag} login`}
188190
/>
189191
</ClientTabsContent>
190192
<ClientTabsContent value={"pnpm"}>
191193
<ClipboardField
192194
variant="secondary/medium"
193195
iconButton
194196
className="mb-4"
195-
value={`pnpm dlx trigger.dev@${v3PackageTag} login`}
197+
value={`pnpm dlx trigger.dev@${triggerCliTag} login`}
196198
/>
197199
</ClientTabsContent>
198200
<ClientTabsContent value={"yarn"}>
199201
<ClipboardField
200202
variant="secondary/medium"
201203
iconButton
202204
className="mb-4"
203-
value={`yarn dlx trigger.dev@${v3PackageTag} login`}
205+
value={`yarn dlx trigger.dev@${triggerCliTag} login`}
204206
/>
205207
</ClientTabsContent>
206208
</ClientTabs>

apps/webapp/app/env.server.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -856,6 +856,9 @@ const EnvironmentSchema = z.object({
856856

857857
// Machine presets
858858
MACHINE_PRESETS_OVERRIDE_PATH: z.string().optional(),
859+
860+
// CLI package tag (e.g. "latest", "v4-beta", "4.0.0") - used for setup commands
861+
TRIGGER_CLI_TAG: z.string().default("latest"),
859862
});
860863

861864
export type Environment = z.infer<typeof EnvironmentSchema>;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { useTypedRouteLoaderData } from "remix-typedjson";
2+
import { type loader } from "~/root";
3+
4+
export function useTriggerCliTag() {
5+
const routeMatch = useTypedRouteLoaderData<typeof loader>("root");
6+
7+
return routeMatch!.triggerCliTag;
8+
}

apps/webapp/app/root.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ export const loader = async ({ request }: LoaderFunctionArgs) => {
5656
features,
5757
appEnv: env.APP_ENV,
5858
appOrigin: env.APP_ORIGIN,
59+
triggerCliTag: env.TRIGGER_CLI_TAG,
5960
kapa,
6061
},
6162
{ headers: { "Set-Cookie": await commitSession(session) } }

docs/self-hosting/kubernetes.mdx

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ You can set extra environment variables on all services. For example:
181181

182182
```yaml
183183
webapp:
184-
extraEnv:
184+
extraEnvVars:
185185
- name: EXTRA_ENV_VAR
186186
value: "extra-value"
187187
```
@@ -202,9 +202,8 @@ You can disable the built-in services and use external services instead. For exa
202202
203203
```yaml
204204
postgres:
205-
enabled: false
206-
external: true
207-
externalConnection:
205+
deploy: false
206+
external:
208207
host: "my-postgres.example.com"
209208
port: 5432
210209
database: "my-database"
@@ -262,10 +261,10 @@ See the [Docker registry setup](/self-hosting/docker#registry-setup) for concept
262261
```yaml
263262
# Use external registry (recommended)
264263
registry:
265-
external: true
264+
deploy: false
266265
# Part of deployment image ref, for example: your-registry.example.com/your-company/proj_123:20250625.1.prod
267266
repositoryNamespace: "your-company"
268-
externalConnection:
267+
external:
269268
host: "your-registry.example.com"
270269
port: 5000
271270
auth:
@@ -285,9 +284,8 @@ See the [Docker object storage setup](/self-hosting/docker#object-storage) for c
285284
```yaml
286285
# Use external S3-compatible storage
287286
minio:
288-
enabled: false
289-
external: true
290-
externalConnection:
287+
deploy: false
288+
external:
291289
url: "https://s3.amazonaws.com"
292290
# or: "https://your-minio.com:9000"
293291
@@ -305,7 +303,7 @@ Authentication options are identical to the [Docker-based installation](/self-ho
305303
**GitHub OAuth:**
306304
```yaml
307305
webapp:
308-
extraEnv:
306+
extraEnvVars:
309307
- name: AUTH_GITHUB_CLIENT_ID
310308
value: "your-github-client-id"
311309
- name: AUTH_GITHUB_CLIENT_SECRET
@@ -315,7 +313,7 @@ webapp:
315313
**Email authentication (Resend):**
316314
```yaml
317315
webapp:
318-
extraEnv:
316+
extraEnvVars:
319317
- name: EMAIL_TRANSPORT
320318
value: "resend"
321319
- name: FROM_EMAIL
@@ -329,7 +327,7 @@ webapp:
329327
**Restricting access:**
330328
```yaml
331329
webapp:
332-
extraEnv:
330+
extraEnvVars:
333331
- name: WHITELISTED_EMAILS
334332
value: "user1@company\\.com|user2@company\\.com"
335333
```

hosting/k8s/helm/.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
values-*.yaml
22
!values-production-example.yaml
3-
*.tgz
3+
*.tgz
4+
/charts

hosting/k8s/helm/Chart.lock

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
dependencies:
2+
- name: postgresql
3+
repository: oci://registry-1.docker.io/bitnamicharts
4+
version: 16.7.14
5+
- name: redis
6+
repository: oci://registry-1.docker.io/bitnamicharts
7+
version: 21.2.6
8+
- name: clickhouse
9+
repository: oci://registry-1.docker.io/bitnamicharts
10+
version: 9.3.7
11+
- name: minio
12+
repository: oci://registry-1.docker.io/bitnamicharts
13+
version: 17.0.9
14+
digest: sha256:b6cef61abc0b8bcdf4e6d7d86bd8dd7999dd07543f5532f3d94797ffdf0ad30b
15+
generated: "2025-06-27T19:27:24.075488134+01:00"

hosting/k8s/helm/Chart.yaml

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ apiVersion: v2
22
name: trigger
33
description: The official Trigger.dev Helm chart
44
type: application
5-
version: 4.0.0-beta.5
6-
appVersion: v4.0.0-v4-beta.21
5+
version: 4.0.0-beta.7
6+
appVersion: trigger-helm-rc.0
77
home: https://trigger.dev
88
sources:
99
- https://github.com/triggerdotdev/trigger.dev
@@ -16,3 +16,22 @@ keywords:
1616
- automation
1717
annotations:
1818
category: Development
19+
dependencies:
20+
- name: postgresql
21+
version: "16.7.14"
22+
repository: "oci://registry-1.docker.io/bitnamicharts"
23+
condition: postgres.deploy
24+
alias: postgres
25+
- name: redis
26+
version: "21.2.6"
27+
repository: "oci://registry-1.docker.io/bitnamicharts"
28+
condition: redis.deploy
29+
- name: clickhouse
30+
version: "9.3.7"
31+
repository: "oci://registry-1.docker.io/bitnamicharts"
32+
condition: clickhouse.deploy
33+
- name: minio
34+
version: "17.0.9"
35+
repository: "oci://registry-1.docker.io/bitnamicharts"
36+
condition: s3.deploy
37+
alias: s3

0 commit comments

Comments
 (0)