mirror of
https://github.com/lukaszraczylo/ghtracker.git
synced 2026-10-12 00:45:38 +00:00
ghtracker authenticates as a GitHub App and scans a configured list of repositories on a schedule. It serves a dashboard, a JSON state endpoint, a health probe and Prometheus metrics. The dashboard lists only items that need attention: failing workflows, pull requests that wait too long or fail their checks, stale issues and projects that failed to scan. It has search, dynamic filters and a button that rescans on demand. The Vue app is embedded in the Go binary. The client protects the GitHub rate limit with conditional requests, a request reserve and Retry-After handling.
23 lines
611 B
Docker
23 lines
611 B
Docker
FROM node:22-alpine AS ui
|
|
WORKDIR /app
|
|
RUN corepack enable
|
|
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./
|
|
RUN pnpm install --frozen-lockfile
|
|
COPY index.html vite.config.ts tsconfig.json ./
|
|
COPY scripts ./scripts
|
|
COPY src ./src
|
|
RUN pnpm build
|
|
|
|
FROM golang:1.27 AS build
|
|
WORKDIR /src
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
COPY . .
|
|
COPY --from=ui /app/dist ./dist
|
|
RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /ghtracker .
|
|
|
|
FROM gcr.io/distroless/static-debian12:nonroot
|
|
COPY --from=build /ghtracker /ghtracker
|
|
EXPOSE 8080
|
|
ENTRYPOINT ["/ghtracker", "-config", "/config/config.yaml"]
|