@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.
@@ -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
- API_FRONTEND_URL: <%= config.domain ? 'https://' + config.domain : '' %>
14
- API_JWT_EXPIRES_IN: <%= config.jwtExpiresIn || '7d' %>
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 (used in image build args and mirrored to runtime ConfigMap)
18
- ADMIN_API_BASE_URL: <%= config.apiDomain || '' %>
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.API_JWT_EXPIRES_IN }})
68
- # - FRONTEND_URL: Frontend URL (currently: ${{ env.API_FRONTEND_URL }})
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.API_FRONTEND_URL }}' \
181
- --from-literal=JWT_EXPIRES_IN='${{ env.API_JWT_EXPIRES_IN }}' \
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 URLs
400
+ - name: Validate admin API environment
404
401
  run: |
405
402
  set -eu
406
403
 
407
- if [ -z "${{ env.ADMIN_API_URL }}" ]; then
408
- echo "::error::ADMIN_API_URL is empty. Set it in workflow env before building admin image."
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.ADMIN_API_BASE_URL }}" ]; then
413
- echo "::error::ADMIN_API_BASE_URL is empty. Set it in workflow env before building admin image."
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
- if [ -z "${{ env.ADMIN_INTERNAL_API_URL }}" ]; then
418
- echo "::error::ADMIN_INTERNAL_API_URL is empty. Set it in workflow env before building admin image."
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::ADMIN_API_BASE_URL must be an absolute URL (http/https). Current value: ${{ env.ADMIN_API_BASE_URL }}"
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.ADMIN_INTERNAL_API_URL }}" in
422
+ case "${{ env.INTERNAL_API_URL }}" in
439
423
  http://*|https://*) ;;
440
424
  *)
441
- echo "::error::ADMIN_INTERNAL_API_URL must be an absolute URL (http/https). Current value: ${{ env.ADMIN_INTERNAL_API_URL }}"
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.ADMIN_API_BASE_URL }} \
449
- --build-arg NEXT_PUBLIC_API_URL=${{ env.ADMIN_API_URL }} \
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=ADMIN_API_BASE_URL='${{ env.ADMIN_API_BASE_URL }}' \
470
- --from-literal=ADMIN_API_URL='${{ env.ADMIN_API_URL }}' \
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: |