5 Commits
Author SHA1 Message Date
rock 5dd76f3b49 Merge pull request 'fix(s3): correct MinIO service port and allow egress' (#14) from fix/s3-adapter-port into main
CI / CI (push) Successful in 3m16s
2026-09-08 17:03:52 +00:00
Admin Bot c87463c850 fix(s3): correct MinIO service port and allow egress
CI / CI (pull_request) Successful in 3m16s
MinIO ClusterIP service listens on port 80 (targetPort 9000).
Config had port 9000 which caused 30s timeout then 502 — gateway
connected to service port 9000 which doesn't exist on the ClusterIP.

Changes:
- configmap.yaml: S3 upstream :9000 → :80
- gateway-config-secret.enc.yaml: same
- network-policy.yaml: add port 80 egress to storage namespace

Verified: S3 adapter now reaches MinIO (403 AccessDenied = auth issue,
not connectivity).
2026-09-08 09:58:36 -07:00
rockandAdmin Bot 1cd8e711dd ci: unified workflow - single job, DOCKER_HOST, build+push on all events (#4)
CI / CI (push) Successful in 3m23s
- Single job (no split test/build-push)
- DOCKER_HOST=tcp://localhost:2375 for dind
- Build + push on PRs too (verify before merge)
- workflow_dispatch for manual trigger

---------

Co-authored-by: Admin Bot <[email protected]>
Reviewed-on: rock/homelab-frontend#4
2026-09-07 21:01:02 +00:00
Admin Bot 7e78519499 ci: unified workflow - single job, DOCKER_HOST, build+push on all events
CI / CI (pull_request) Successful in 4m0s
2026-09-07 13:47:14 -07:00
rockandAdmin Bot 736c0d7724 fix: use env vars for docker registry credentials (#2)
CI / Test (push) Successful in 1m51s
CI / Build & Push Image (push) Failing after 1m6s
Fix registry login by passing FORGEJO_REGISTRY_USER and FORGEJO_REGISTRY_TOKEN via environment variables instead of direct secret interpolation.

Uses the proven pattern from riotpiao.com reference commit.

This prevents credentials from being exposed in logs or shell history while keeping the standard docker login approach.

After merge + org-level secrets configured:
- All repos inherit FORGEJO_REGISTRY_USER and FORGEJO_REGISTRY_TOKEN
- CI validates credentials exist before docker login
- Image pushed to registry on main push

---------

Co-authored-by: Admin Bot <[email protected]>
Reviewed-on: rock/homelab-frontend#2
2026-09-07 06:50:48 +00:00
4 changed files with 31 additions and 48 deletions
+25 -46
View File
@@ -1,5 +1,3 @@
# Single pipeline: verify → build → push.
# One workflow per push, one concurrency group per branch.
name: CI
on:
@@ -7,75 +5,56 @@ on:
branches: [main]
pull_request:
branches: [main]
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
workflow_dispatch:
env:
REGISTRY: forgejo.riotpiao.com
IMAGE: forgejo.riotpiao.com/rock/api-gateway
DOCKER_HOST: tcp://localhost:2375
jobs:
verify:
name: Vet, test, build
ci:
name: CI
runs-on: golang
steps:
- name: Install Node.js for actions runtime
run: apt-get update && apt-get install -y nodejs
- uses: actions/checkout@v4
- name: go vet
run: go vet ./...
- name: go test -race
run: go test ./... -race
- name: Static build (smoke)
run: CGO_ENABLED=0 go build -trimpath -o gateway ./cmd/gateway
push:
name: Build and push image
needs: verify
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
runs-on: golang
steps:
- name: Install Docker CLI and Node.js
- name: Install Node.js and Docker
run: |
apt-get update
apt-get install -y --no-install-recommends docker.io nodejs git
rm -rf /var/lib/apt/lists/*
apt-get install -y nodejs docker.io
- uses: actions/checkout@v4
- name: Checkout code
uses: actions/checkout@v4
- name: Go vet
run: go vet ./...
- name: Go test
run: go test ./...
- name: Get short SHA
id: sha
run: |
SHORT_SHA=$(git rev-parse --short HEAD)
echo "short_sha=${SHORT_SHA}" >> $GITHUB_OUTPUT
run: echo "short_sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
- name: Registry login
run: |
echo "${REGISTRY_PAT}" | docker login "${REGISTRY}" \
--username rock --password-stdin
echo "${REGISTRY_TOKEN}" | docker login "${REGISTRY}" \
--username "${REGISTRY_USER}" --password-stdin
env:
REGISTRY_PAT: ${{ secrets.REGISTRY_PAT }}
REGISTRY_USER: ${{ secrets.FORGEJO_REGISTRY_USER }}
REGISTRY_TOKEN: ${{ secrets.FORGEJO_REGISTRY_TOKEN }}
- name: Build image
- name: Build Docker image
run: |
docker build \
--build-arg "VERSION=${{ steps.sha.outputs.short_sha }}" \
docker build --no-cache \
-t "${IMAGE}:${{ steps.sha.outputs.short_sha }}" \
-t "${IMAGE}:latest" \
.
-f Dockerfile .
- name: Push image
- name: Push Docker image
run: |
docker push "${IMAGE}:${{ steps.sha.outputs.short_sha }}"
docker push "${IMAGE}:latest"
echo "✓ Image pushed: ${IMAGE}:${{ steps.sha.outputs.short_sha }}"
echo "✓ Pushed: ${IMAGE}:${{ steps.sha.outputs.short_sha }}"
- name: Prune unused images
run: |
docker image prune -a --force 2>&1 | tail -3 || true
run: docker image prune -a --force 2>&1 | tail -3 || true
+1 -1
View File
@@ -113,7 +113,7 @@ data:
- serviceName: s3
upstream:
url: http://minio.storage.svc.cluster.local:9000
url: http://minio.storage.svc.cluster.local:80
timeoutSeconds: 30
auth:
required: false
+1 -1
View File
@@ -91,7 +91,7 @@ stringData:
upstreamPath: /memory/skills
- serviceName: s3
upstream:
url: http://minio.storage.svc.cluster.local:9000
url: http://minio.storage.svc.cluster.local:80
timeoutSeconds: 30
auth:
required: false
+4
View File
@@ -123,10 +123,14 @@ spec:
- protocol: TCP
port: 8080
# Allow to MinIO (S3-compatible storage)
# Service `minio` listens on port 80 (targetPort 9000).
# Headless `minio-cluster-hl` is 9000. Allow both.
- to:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: storage
ports:
- protocol: TCP
port: 80
- protocol: TCP
port: 9000