Compare commits

...
Sign in to create a new pull request.

12 commits

Author SHA1 Message Date
0c8eb2ae88 ci: workflows and registry at https://git.holtlabs.xyz (Plan 14)
All checks were successful
/ checks (push) Successful in 39s
/ deploy (push) Successful in 44s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-11 13:50:32 -06:00
50554a84c4 chore: pipeline check on git.lab.holtlabs.xyz after Plan 12 cleanup
All checks were successful
/ checks (push) Successful in 40s
/ deploy (push) Successful in 7s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 12:23:25 -06:00
e718ac2312 ci: use https://git.lab.holtlabs.xyz for workflows and registry (Plan 12)
All checks were successful
/ checks (push) Successful in 40s
/ deploy (push) Successful in 6s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 11:55:06 -06:00
a719126650 chore: untrack accidentally committed session notes
All checks were successful
/ checks (push) Successful in 36s
/ deploy (push) Successful in 43s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-05 12:17:10 -06:00
7d4045844a ci: pin nholtware/workflows composite actions to @v1
Some checks failed
/ checks (push) Has been cancelled
/ deploy (push) Has been cancelled
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-05 12:16:51 -06:00
025c3a8714 fix: run dist/bin/server.js in the container
All checks were successful
/ checks (push) Successful in 36s
/ deploy (push) Successful in 6s
dist/index.js only exports the Express app since the refactor, so the
container exited 0 without listening.
2026-11-05 01:16:54 -06:00
b0c3f695a8 ci: retrigger deploy after gitops branch protection change
All checks were successful
/ checks (push) Successful in 36s
/ deploy (push) Successful in 6s
2026-11-05 01:15:15 -06:00
7d4aee53ef Merge pull request 'style: format .github/workflows/pr.yml with prettier' (#5) from fix/prettier-gh-workflow into main
Some checks failed
/ checks (push) Successful in 36s
/ deploy (push) Failing after 1m24s
Reviewed-on: http://forgejo.local:3000/nholtware/demo-app/pulls/5
2026-11-05 01:11:14 -06:00
19176a6bb0 style: format .github/workflows/pr.yml with prettier
All checks were successful
/ checks (pull_request) Successful in 34s
2026-11-05 01:09:58 -06:00
99ce69ec12 Merge pull request 'fix: install production dependencies in runtime image' (#4) from fix/runtime-deps into main
Some checks failed
/ checks (push) Failing after 35s
/ deploy (push) Has been skipped
Reviewed-on: http://forgejo.local:3000/nholtware/demo-app/pulls/4
2026-11-05 01:07:45 -06:00
6f9b112378 Merge pull request 'feat/sequelize-utc-time' (#2) from feat/sequelize-utc-time into main
Some checks failed
/ checks (push) Failing after 33s
/ deploy (push) Has been skipped
Reviewed-on: http://forgejo.local:3000/nholtware/demo-app/pulls/2
2026-11-05 01:05:36 -06:00
f6a971b194 fix: install production dependencies in runtime image
All checks were successful
/ checks (pull_request) Successful in 36s
Express was added in 1365bd7 but the runtime stage still assumed zero
runtime deps, so the image crashed with ERR_MODULE_NOT_FOUND: express.
2026-11-05 00:56:45 -06:00
6 changed files with 16 additions and 14 deletions

View file

@ -10,20 +10,20 @@ jobs:
runs-on: docker runs-on: docker
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: http://192.168.1.230:3000/nholtware/workflows/node-checks@main - uses: https://git.holtlabs.xyz/nholtware/workflows/node-checks@v1
- uses: http://192.168.1.230:3000/nholtware/workflows/lint-checks@main - uses: https://git.holtlabs.xyz/nholtware/workflows/lint-checks@v1
deploy: deploy:
needs: checks needs: checks
runs-on: host runs-on: host
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: http://192.168.1.230:3000/nholtware/workflows/build-push@main - uses: https://git.holtlabs.xyz/nholtware/workflows/build-push@v1
with: with:
app-name: demo-app app-name: demo-app
registry-user: ${{ secrets.REGISTRY_USER }} registry-user: ${{ secrets.REGISTRY_USER }}
registry-token: ${{ secrets.REGISTRY_TOKEN }} registry-token: ${{ secrets.REGISTRY_TOKEN }}
- uses: http://192.168.1.230:3000/nholtware/workflows/gitops-bump@main - uses: https://git.holtlabs.xyz/nholtware/workflows/gitops-bump@v1
with: with:
app-name: demo-app app-name: demo-app
gitops-token: ${{ secrets.GITOPS_TOKEN }} gitops-token: ${{ secrets.GITOPS_TOKEN }}

View file

@ -8,5 +8,5 @@ jobs:
runs-on: docker runs-on: docker
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: http://192.168.1.230:3000/nholtware/workflows/node-checks@main - uses: https://git.holtlabs.xyz/nholtware/workflows/node-checks@v1
- uses: http://192.168.1.230:3000/nholtware/workflows/lint-checks@main - uses: https://git.holtlabs.xyz/nholtware/workflows/lint-checks@v1

View file

@ -7,12 +7,12 @@ on:
- synchronize - synchronize
- reopened - reopened
branches: branches:
- '**' - "**"
push: push:
branches: branches:
- '**' - "**"
- '!main' - "!main"
- '!master' - "!master"
jobs: jobs:
test: test:

1
.gitignore vendored
View file

@ -1,2 +1,3 @@
node_modules/ node_modules/
dist/ dist/
session-*.md

View file

@ -7,14 +7,15 @@ COPY tsconfig.json ./
COPY src ./src COPY src ./src
RUN npm run build RUN npm run build
# Runtime stage: no dev deps (this service has zero runtime deps) # Runtime stage: production deps only
FROM node:22-slim FROM node:22-slim
WORKDIR /app WORKDIR /app
ENV NODE_ENV=production ENV NODE_ENV=production
ARG GIT_SHA=dev ARG GIT_SHA=dev
ENV GIT_SHA=${GIT_SHA} ENV GIT_SHA=${GIT_SHA}
COPY package.json package-lock.json ./
RUN npm ci --omit=dev
COPY --from=build /app/dist ./dist COPY --from=build /app/dist ./dist
COPY package.json ./
USER node USER node
EXPOSE 3000 EXPOSE 3000
CMD ["node", "dist/index.js"] CMD ["node", "dist/bin/server.js"]

View file

@ -6,7 +6,7 @@ Minimal TypeScript microservice proving out the homelab CI/CD pipeline:
push to main push to main
-> Forgejo Actions (nholtware/workflows composite actions) -> Forgejo Actions (nholtware/workflows composite actions)
checks: npm ci + lint + test (docker label) checks: npm ci + lint + test (docker label)
build: docker build + push -> 192.168.1.230:3000/nholtware/demo-app:<sha> build: docker build + push -> git.holtlabs.xyz/nholtware/demo-app:<sha>
deploy: kustomize edit set image -> commit to nholtware/gitops deploy: kustomize edit set image -> commit to nholtware/gitops
-> ArgoCD syncs gitops -> k3s -> ArgoCD syncs gitops -> k3s
-> served by Traefik at Host: demo-app.k3s.local -> served by Traefik at Host: demo-app.k3s.local