@hed-hog/cli 0.0.93 → 0.0.94
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.json +1 -1
- package/dist/src/modules/developer/developer.service.js +6 -7
- package/dist/src/modules/developer/developer.service.js.map +1 -1
- package/dist/src/templates/deployment/DEPLOYMENT.md.ejs +0 -9
- package/dist/src/templates/deployment/k8s.deployment.yaml.ejs +0 -20
- package/dist/src/templates/deployment/workflow.deploy.yml.ejs +22 -47
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -142,22 +142,13 @@ kubectl rollout status deployment/<%= config.appName %>-api -n <%= config.namesp
|
|
|
142
142
|
|
|
143
143
|
<% } %><% if (config.apps.includes('admin')) { %>docker build -t <%= config.containerRegistry %>/<%= config.appName %>-admin:latest \
|
|
144
144
|
--build-arg NEXT_PUBLIC_API_BASE_URL=<%= config.apiDomain || '' %> \
|
|
145
|
-
--build-arg NEXT_PUBLIC_API_URL=<%= config.apiDomain || '' %> \
|
|
146
145
|
--build-arg INTERNAL_API_URL=http://<%= config.appName %>-api:<%= config.appPorts?.api || 3000 %> \
|
|
147
|
-
--build-arg ADMIN_API_BASE_URL=<%= config.apiDomain || '' %> \
|
|
148
|
-
--build-arg ADMIN_API_URL=<%= config.apiDomain || '' %> \
|
|
149
|
-
--build-arg ADMIN_INTERNAL_API_URL=http://<%= config.appName %>-api:<%= config.appPorts?.api || 3000 %> \
|
|
150
146
|
-f apps/admin/Dockerfile .
|
|
151
147
|
docker push <%= config.containerRegistry %>/<%= config.appName %>-admin:latest
|
|
152
148
|
kubectl create configmap <%= config.appName %>-admin-config \
|
|
153
149
|
-n <%= config.namespace %> \
|
|
154
|
-
--from-literal=ADMIN_API_BASE_URL='<%= config.apiDomain || '' %>' \
|
|
155
|
-
--from-literal=ADMIN_API_URL='<%= config.apiDomain || '' %>' \
|
|
156
|
-
--from-literal=ADMIN_INTERNAL_API_URL='http://<%= config.appName %>-api:<%= config.appPorts?.api || 3000 %>' \
|
|
157
150
|
--from-literal=NEXT_PUBLIC_API_BASE_URL='<%= config.apiDomain || '' %>' \
|
|
158
|
-
--from-literal=NEXT_PUBLIC_API_URL='<%= config.apiDomain || '' %>' \
|
|
159
151
|
--from-literal=INTERNAL_API_URL='http://<%= config.appName %>-api:<%= config.appPorts?.api || 3000 %>' \
|
|
160
|
-
--from-literal=FRONTEND_URLS='<%= config.frontendUrls || (config.domain ? `https://${config.domain}` : '') %>' \
|
|
161
152
|
--dry-run=client -o yaml | kubectl apply -f -
|
|
162
153
|
kubectl set image deployment/<%= config.appName %>-admin <%= config.appName %>-admin=<%= config.containerRegistry %>/<%= config.appName %>-admin:latest -n <%= config.namespace %>
|
|
163
154
|
kubectl rollout status deployment/<%= config.appName %>-admin -n <%= config.namespace %>
|
|
@@ -24,21 +24,6 @@ spec:
|
|
|
24
24
|
- name: NODE_ENV
|
|
25
25
|
value: production
|
|
26
26
|
<% if (app === 'admin') { %>
|
|
27
|
-
- name: ADMIN_INTERNAL_API_URL
|
|
28
|
-
valueFrom:
|
|
29
|
-
configMapKeyRef:
|
|
30
|
-
name: <%= config.appName %>-<%= app %>-config
|
|
31
|
-
key: ADMIN_INTERNAL_API_URL
|
|
32
|
-
- name: ADMIN_API_BASE_URL
|
|
33
|
-
valueFrom:
|
|
34
|
-
configMapKeyRef:
|
|
35
|
-
name: <%= config.appName %>-<%= app %>-config
|
|
36
|
-
key: ADMIN_API_BASE_URL
|
|
37
|
-
- name: ADMIN_API_URL
|
|
38
|
-
valueFrom:
|
|
39
|
-
configMapKeyRef:
|
|
40
|
-
name: <%= config.appName %>-<%= app %>-config
|
|
41
|
-
key: ADMIN_API_URL
|
|
42
27
|
- name: INTERNAL_API_URL
|
|
43
28
|
valueFrom:
|
|
44
29
|
configMapKeyRef:
|
|
@@ -49,11 +34,6 @@ spec:
|
|
|
49
34
|
configMapKeyRef:
|
|
50
35
|
name: <%= config.appName %>-<%= app %>-config
|
|
51
36
|
key: NEXT_PUBLIC_API_BASE_URL
|
|
52
|
-
- name: NEXT_PUBLIC_API_URL
|
|
53
|
-
valueFrom:
|
|
54
|
-
configMapKeyRef:
|
|
55
|
-
name: <%= config.appName %>-<%= app %>-config
|
|
56
|
-
key: NEXT_PUBLIC_API_URL
|
|
57
37
|
<% } else { %>
|
|
58
38
|
<%
|
|
59
39
|
const secretEnvKeys = new Set(['DATABASE_URL', 'ENCRYPTION_SECRET', 'JWT_SECRET', 'PEPPER']);
|
|
@@ -10,16 +10,13 @@ env:
|
|
|
10
10
|
K8S_CLUSTER_ID: <%= config.k8sClusterId || config.clusterName %>
|
|
11
11
|
<% if ((config.apps || []).includes('api')) { %>
|
|
12
12
|
# API environment
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
FRONTEND_URL: <%= config.frontendUrls || (config.domain ? 'https://' + config.domain : '' ) %>
|
|
14
|
+
JWT_EXPIRES_IN: <%= config.jwtExpiresIn || '7d' %>
|
|
15
15
|
<% } %>
|
|
16
16
|
<% if ((config.apps || []).includes('admin')) { %>
|
|
17
|
-
# Admin environment
|
|
18
|
-
|
|
19
|
-
ADMIN_API_URL: <%= config.apiDomain || '' %>
|
|
20
|
-
ADMIN_INTERNAL_API_URL: <%= config.apiDomain || '' %>
|
|
17
|
+
# Admin environment
|
|
18
|
+
NEXT_PUBLIC_API_BASE_URL: <%= config.apiDomain || '' %>
|
|
21
19
|
INTERNAL_API_URL: <%= config.apiDomain || '' %>
|
|
22
|
-
FRONTEND_URLS: <%= config.frontendUrls || (config.domain ? 'https://' + config.domain : '') %>
|
|
23
20
|
<% } %>
|
|
24
21
|
jobs:
|
|
25
22
|
apply-cluster-config:
|
|
@@ -64,8 +61,8 @@ jobs:
|
|
|
64
61
|
# - DIGITALOCEAN_ACCESS_TOKEN: DigitalOcean API token
|
|
65
62
|
#
|
|
66
63
|
# Auto-configured (via env vars in this workflow):
|
|
67
|
-
# - JWT_EXPIRES_IN: JWT expiration (currently: ${{ env.
|
|
68
|
-
# - FRONTEND_URL: Frontend URL (currently: ${{ env.
|
|
64
|
+
# - JWT_EXPIRES_IN: JWT expiration (currently: ${{ env.JWT_EXPIRES_IN }})
|
|
65
|
+
# - FRONTEND_URL: Frontend URL (currently: ${{ env.FRONTEND_URL }})
|
|
69
66
|
steps:
|
|
70
67
|
- name: Checkout code
|
|
71
68
|
uses: actions/checkout@v6
|
|
@@ -177,8 +174,8 @@ jobs:
|
|
|
177
174
|
run: |
|
|
178
175
|
kubectl create configmap <%= config.appName %>-api-config \
|
|
179
176
|
-n ${{ env.NAMESPACE }} \
|
|
180
|
-
--from-literal=FRONTEND_URL='${{ env.
|
|
181
|
-
--from-literal=JWT_EXPIRES_IN='${{ env.
|
|
177
|
+
--from-literal=FRONTEND_URL='${{ env.FRONTEND_URL }}' \
|
|
178
|
+
--from-literal=JWT_EXPIRES_IN='${{ env.JWT_EXPIRES_IN }}' \
|
|
182
179
|
--dry-run=client -o yaml | kubectl apply -f -
|
|
183
180
|
- name: Ensure API secrets exist
|
|
184
181
|
run: |
|
|
@@ -400,57 +397,40 @@ jobs:
|
|
|
400
397
|
docker pull hello-world
|
|
401
398
|
docker tag hello-world ${{ env.REGISTRY }}/ci-auth-probe-admin:${{ github.run_id }}
|
|
402
399
|
docker push ${{ env.REGISTRY }}/ci-auth-probe-admin:${{ github.run_id }}
|
|
403
|
-
- name: Validate admin API
|
|
400
|
+
- name: Validate admin API environment
|
|
404
401
|
run: |
|
|
405
402
|
set -eu
|
|
406
403
|
|
|
407
|
-
if [ -z "${{ env.
|
|
408
|
-
echo "::error::
|
|
404
|
+
if [ -z "${{ env.NEXT_PUBLIC_API_BASE_URL }}" ]; then
|
|
405
|
+
echo "::error::NEXT_PUBLIC_API_BASE_URL is empty. Set it in workflow env before building the admin image."
|
|
409
406
|
exit 1
|
|
410
407
|
fi
|
|
411
408
|
|
|
412
|
-
if [ -z "${{ env.
|
|
413
|
-
echo "::error::
|
|
409
|
+
if [ -z "${{ env.INTERNAL_API_URL }}" ]; then
|
|
410
|
+
echo "::error::INTERNAL_API_URL is empty. Set it in workflow env before building the admin image."
|
|
414
411
|
exit 1
|
|
415
412
|
fi
|
|
416
413
|
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
exit 1
|
|
420
|
-
fi
|
|
421
|
-
|
|
422
|
-
case "${{ env.ADMIN_API_URL }}" in
|
|
423
|
-
http://*|https://*) ;;
|
|
424
|
-
*)
|
|
425
|
-
echo "::error::ADMIN_API_URL must be an absolute URL (http/https). Current value: ${{ env.ADMIN_API_URL }}"
|
|
426
|
-
exit 1
|
|
427
|
-
;;
|
|
428
|
-
esac
|
|
429
|
-
|
|
430
|
-
case "${{ env.ADMIN_API_BASE_URL }}" in
|
|
431
|
-
http://*|https://*) ;;
|
|
414
|
+
case "${{ env.NEXT_PUBLIC_API_BASE_URL }}" in
|
|
415
|
+
http://*|https://*|/*) ;;
|
|
432
416
|
*)
|
|
433
|
-
echo "::error::
|
|
417
|
+
echo "::error::NEXT_PUBLIC_API_BASE_URL must be an absolute URL (http/https) or a root-relative path like /api. Current value: ${{ env.NEXT_PUBLIC_API_BASE_URL }}"
|
|
434
418
|
exit 1
|
|
435
419
|
;;
|
|
436
420
|
esac
|
|
437
421
|
|
|
438
|
-
case "${{ env.
|
|
422
|
+
case "${{ env.INTERNAL_API_URL }}" in
|
|
439
423
|
http://*|https://*) ;;
|
|
440
424
|
*)
|
|
441
|
-
echo "::error::
|
|
425
|
+
echo "::error::INTERNAL_API_URL must be an absolute URL (http/https). Current value: ${{ env.INTERNAL_API_URL }}"
|
|
442
426
|
exit 1
|
|
443
427
|
;;
|
|
444
428
|
esac
|
|
445
429
|
- name: Build Docker image
|
|
446
430
|
run: |
|
|
447
431
|
docker build -t ${{ env.REGISTRY }}/<%= config.appName %>-admin:${{ github.sha }} \
|
|
448
|
-
--build-arg NEXT_PUBLIC_API_BASE_URL=${{ env.
|
|
449
|
-
--build-arg
|
|
450
|
-
--build-arg INTERNAL_API_URL=${{ env.ADMIN_INTERNAL_API_URL }} \
|
|
451
|
-
--build-arg ADMIN_API_BASE_URL=${{ env.ADMIN_API_BASE_URL }} \
|
|
452
|
-
--build-arg ADMIN_API_URL=${{ env.ADMIN_API_URL }} \
|
|
453
|
-
--build-arg ADMIN_INTERNAL_API_URL=${{ env.ADMIN_INTERNAL_API_URL }} \
|
|
432
|
+
--build-arg NEXT_PUBLIC_API_BASE_URL=${{ env.NEXT_PUBLIC_API_BASE_URL }} \
|
|
433
|
+
--build-arg INTERNAL_API_URL=${{ env.INTERNAL_API_URL }} \
|
|
454
434
|
-f apps/admin/Dockerfile .
|
|
455
435
|
- name: Push Docker image (sha)
|
|
456
436
|
run: |
|
|
@@ -466,13 +446,8 @@ jobs:
|
|
|
466
446
|
run: |
|
|
467
447
|
kubectl create configmap <%= config.appName %>-admin-config \
|
|
468
448
|
-n ${{ env.NAMESPACE }} \
|
|
469
|
-
--from-literal=
|
|
470
|
-
--from-literal=
|
|
471
|
-
--from-literal=ADMIN_INTERNAL_API_URL='${{ env.ADMIN_INTERNAL_API_URL }}' \
|
|
472
|
-
--from-literal=NEXT_PUBLIC_API_BASE_URL='${{ env.ADMIN_API_BASE_URL }}' \
|
|
473
|
-
--from-literal=NEXT_PUBLIC_API_URL='${{ env.ADMIN_API_URL }}' \
|
|
474
|
-
--from-literal=INTERNAL_API_URL='${{ env.ADMIN_INTERNAL_API_URL }}' \
|
|
475
|
-
--from-literal=FRONTEND_URLS='${{ env.FRONTEND_URLS }}' \
|
|
449
|
+
--from-literal=NEXT_PUBLIC_API_BASE_URL='${{ env.NEXT_PUBLIC_API_BASE_URL }}' \
|
|
450
|
+
--from-literal=INTERNAL_API_URL='${{ env.INTERNAL_API_URL }}' \
|
|
476
451
|
--dry-run=client -o yaml | kubectl apply -f -
|
|
477
452
|
- name: Deploy to Kubernetes
|
|
478
453
|
run: |
|