Skip to content

Commit 8f713bf

Browse files
aanogueiraclaude
andcommitted
Initial public release
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Andre Nogueira <aanogueira@protonmail.com>
0 parents  commit 8f713bf

354 files changed

Lines changed: 90716 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.local.example

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Server
2+
SERVER_ADDR=:8080
3+
4+
# Database
5+
DATABASE_URL=postgres://codesearch:codesearch@localhost:5432/codesearch?sslmode=disable
6+
7+
# Redis
8+
REDIS_ADDR=localhost:6379
9+
REDIS_PASSWORD=
10+
11+
# Zoekt
12+
ZOEKT_URL=http://localhost:6070
13+
INDEX_PATH=./data/index
14+
15+
# Repos storage
16+
REPOS_PATH=./data/repos
17+
18+
# Code host tokens (optional)
19+
GITHUB_TOKEN=
20+
GITLAB_URL=https://gitlab.com
21+
GITLAB_TOKEN=

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
website/public/demo.mp4 filter=lfs diff=lfs merge=lfs -text

.github/dependabot.yml

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "github-actions"
4+
directory: "/"
5+
schedule:
6+
interval: "weekly"
7+
day: "monday"
8+
labels:
9+
- "dependencies"
10+
groups:
11+
github-actions:
12+
patterns:
13+
- "*"
14+
15+
- package-ecosystem: "gomod"
16+
directory: "/"
17+
schedule:
18+
interval: "weekly"
19+
day: "monday"
20+
labels:
21+
- "dependencies"
22+
groups:
23+
go-deps:
24+
patterns:
25+
- "*"
26+
27+
- package-ecosystem: "npm"
28+
directory: "/web"
29+
schedule:
30+
interval: "weekly"
31+
day: "monday"
32+
labels:
33+
- "dependencies"
34+
groups:
35+
web-deps:
36+
patterns:
37+
- "*"
38+
39+
- package-ecosystem: "npm"
40+
directory: "/website"
41+
schedule:
42+
interval: "weekly"
43+
day: "monday"
44+
labels:
45+
- "dependencies"
46+
groups:
47+
website-deps:
48+
patterns:
49+
- "*"
50+
51+
- package-ecosystem: "docker"
52+
directory: "/docker"
53+
schedule:
54+
interval: "weekly"
55+
day: "monday"
56+
labels:
57+
- "dependencies"
58+
groups:
59+
docker-images:
60+
patterns:
61+
- "*"

.github/workflows/ci.yml

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
permissions:
10+
contents: read
11+
pull-requests: read
12+
13+
jobs:
14+
changes:
15+
runs-on: ubuntu-latest
16+
outputs:
17+
go: ${{ steps.filter.outputs.go }}
18+
web: ${{ steps.filter.outputs.web }}
19+
website: ${{ steps.filter.outputs.website }}
20+
docker: ${{ steps.filter.outputs.docker }}
21+
steps:
22+
- uses: actions/checkout@v6
23+
- uses: dorny/paths-filter@v3
24+
id: filter
25+
with:
26+
filters: |
27+
go:
28+
- '**/*.go'
29+
- 'go.mod'
30+
- 'go.sum'
31+
- 'Makefile'
32+
web:
33+
- 'web/**'
34+
website:
35+
- 'website/**'
36+
docker:
37+
- 'docker/**'
38+
- '**/*.go'
39+
- 'go.mod'
40+
- 'go.sum'
41+
- 'web/**'
42+
- 'website/**'
43+
44+
go-checks:
45+
needs: changes
46+
if: needs.changes.outputs.go == 'true'
47+
runs-on: ubuntu-latest
48+
services:
49+
postgres:
50+
image: postgres:16
51+
env:
52+
POSTGRES_USER: codesearch
53+
POSTGRES_PASSWORD: codesearch
54+
POSTGRES_DB: codesearch
55+
ports:
56+
- 5432:5432
57+
options: >-
58+
--health-cmd "pg_isready -U codesearch"
59+
--health-interval 10s
60+
--health-timeout 5s
61+
--health-retries 5
62+
redis:
63+
image: redis:7
64+
ports:
65+
- 6379:6379
66+
options: >-
67+
--health-cmd "redis-cli ping"
68+
--health-interval 10s
69+
--health-timeout 5s
70+
--health-retries 5
71+
steps:
72+
- uses: actions/checkout@v6
73+
- uses: actions/setup-go@v6
74+
with:
75+
go-version-file: go.mod
76+
- name: Install golangci-lint
77+
uses: golangci/golangci-lint-action@v9
78+
with:
79+
args: ./...
80+
- name: Run go vet
81+
run: make vet
82+
- name: Run tests
83+
env:
84+
CS_DATABASE_URL: postgres://codesearch:codesearch@localhost:5432/codesearch?sslmode=disable
85+
CS_REDIS_ADDR: localhost:6379
86+
run: make test
87+
88+
web-checks:
89+
needs: changes
90+
if: needs.changes.outputs.web == 'true'
91+
runs-on: ubuntu-latest
92+
steps:
93+
- uses: actions/checkout@v6
94+
- uses: oven-sh/setup-bun@v2
95+
- name: Install dependencies
96+
run: cd web && bun install
97+
- name: Lint
98+
run: cd web && bun lint
99+
- name: Test
100+
run: cd web && bun run test:run
101+
102+
website-checks:
103+
needs: changes
104+
if: needs.changes.outputs.website == 'true'
105+
runs-on: ubuntu-latest
106+
steps:
107+
- uses: actions/checkout@v6
108+
- uses: oven-sh/setup-bun@v2
109+
- name: Install dependencies
110+
run: cd website && bun install
111+
- name: Build
112+
run: cd website && bun run build
113+
114+
docker-build:
115+
needs: changes
116+
if: needs.changes.outputs.docker == 'true'
117+
runs-on: ubuntu-latest
118+
strategy:
119+
fail-fast: false
120+
matrix:
121+
include:
122+
- dockerfile: docker/api.Dockerfile
123+
image: code-search-api
124+
- dockerfile: docker/indexer.Dockerfile
125+
image: code-search-indexer
126+
- dockerfile: docker/web.Dockerfile
127+
image: code-search-web
128+
- dockerfile: docker/zoekt.Dockerfile
129+
image: code-search-zoekt
130+
- dockerfile: docker/zoekt-refresh.Dockerfile
131+
image: code-search-zoekt-refresh
132+
- dockerfile: docker/indexer-scip.Dockerfile
133+
image: code-search-indexer-scip
134+
- dockerfile: docker/website.Dockerfile
135+
image: code-search-website
136+
steps:
137+
- uses: actions/checkout@v6
138+
with:
139+
lfs: ${{ matrix.image == 'code-search-website' }}
140+
- uses: docker/setup-buildx-action@v4
141+
- name: Build ${{ matrix.image }}
142+
uses: docker/build-push-action@v7
143+
with:
144+
context: .
145+
file: ${{ matrix.dockerfile }}
146+
push: false
147+
cache-from: type=gha
148+
cache-to: type=gha,mode=max

.github/workflows/release-brew.yml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- "oss-cli/*"
7+
8+
permissions:
9+
contents: write
10+
11+
jobs:
12+
release:
13+
name: Create Release
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Checkout code
17+
env:
18+
GIT_LFS_SKIP_SMUDGE: 1
19+
uses: actions/checkout@v6
20+
with:
21+
fetch-depth: 0
22+
- name: Mark LFS files as unchanged
23+
run: git update-index --assume-unchanged website/public/demo.mp4
24+
25+
- name: Extract version from tag
26+
id: version
27+
run: |
28+
TAG="${GITHUB_REF#refs/tags/oss-cli/}"
29+
# Ensure semver v prefix
30+
[[ "$TAG" == v* ]] || TAG="v${TAG}"
31+
echo "tag=${TAG}" >> "$GITHUB_OUTPUT"
32+
git tag "$TAG" 2>/dev/null || true
33+
34+
- name: Set up Go
35+
uses: actions/setup-go@v6
36+
with:
37+
go-version-file: go.mod
38+
39+
- name: Run tests
40+
run: go test -v -race ./...
41+
42+
- name: Run GoReleaser
43+
uses: goreleaser/goreleaser-action@v7
44+
with:
45+
distribution: goreleaser
46+
version: v2
47+
args: release --clean
48+
env:
49+
GORELEASER_CURRENT_TAG: ${{ steps.version.outputs.tag }}
50+
HOMEBREW_TOKEN: ${{ secrets.HOMEBREW_TOKEN }}
51+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
name: Release Docker Images
2+
3+
on:
4+
push:
5+
tags:
6+
- 'oss-api/*'
7+
- 'oss-indexer/*'
8+
- 'oss-web/*'
9+
- 'oss-zoekt/*'
10+
- 'website/*'
11+
12+
permissions:
13+
contents: read
14+
packages: write
15+
16+
env:
17+
REGISTRY: ghcr.io
18+
REGISTRY_PREFIX: ghcr.io/techquestsdev
19+
20+
jobs:
21+
resolve:
22+
runs-on: ubuntu-latest
23+
outputs:
24+
version: ${{ steps.parse.outputs.version }}
25+
matrix: ${{ steps.parse.outputs.matrix }}
26+
steps:
27+
- name: Parse tag
28+
id: parse
29+
run: |
30+
TAG="${GITHUB_REF#refs/tags/}"
31+
COMPONENT="${TAG%/*}"
32+
VERSION="${TAG#*/}"
33+
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
34+
35+
case "$COMPONENT" in
36+
oss-api)
37+
MATRIX='[{"dockerfile":"docker/api.Dockerfile","image":"code-search-api"}]'
38+
;;
39+
oss-indexer)
40+
MATRIX='[{"dockerfile":"docker/indexer.Dockerfile","image":"code-search-indexer"},{"dockerfile":"docker/indexer-scip.Dockerfile","image":"code-search-indexer-scip"}]'
41+
;;
42+
oss-web)
43+
MATRIX='[{"dockerfile":"docker/web.Dockerfile","image":"code-search-web"}]'
44+
;;
45+
oss-zoekt)
46+
MATRIX='[{"dockerfile":"docker/zoekt.Dockerfile","image":"code-search-zoekt"},{"dockerfile":"docker/zoekt-refresh.Dockerfile","image":"code-search-zoekt-refresh"}]'
47+
;;
48+
website)
49+
MATRIX='[{"dockerfile":"docker/website.Dockerfile","image":"code-search-website"}]'
50+
;;
51+
*)
52+
echo "Unknown component: $COMPONENT"
53+
exit 1
54+
;;
55+
esac
56+
57+
echo "matrix=${MATRIX}" >> "$GITHUB_OUTPUT"
58+
59+
build-and-push:
60+
needs: resolve
61+
runs-on: ubuntu-latest
62+
strategy:
63+
matrix:
64+
include: ${{ fromJson(needs.resolve.outputs.matrix) }}
65+
steps:
66+
- uses: actions/checkout@v6
67+
with:
68+
lfs: ${{ matrix.image == 'code-search-website' }}
69+
- uses: docker/setup-buildx-action@v4
70+
- name: Login to GitHub Container Registry
71+
uses: docker/login-action@v4
72+
with:
73+
registry: ${{ env.REGISTRY }}
74+
username: ${{ github.actor }}
75+
password: ${{ secrets.GITHUB_TOKEN }}
76+
- name: Build and push ${{ matrix.image }}
77+
uses: docker/build-push-action@v7
78+
with:
79+
context: .
80+
file: ${{ matrix.dockerfile }}
81+
push: true
82+
tags: |
83+
${{ env.REGISTRY_PREFIX }}/${{ matrix.image }}:${{ needs.resolve.outputs.version }}
84+
${{ env.REGISTRY_PREFIX }}/${{ matrix.image }}:latest
85+
cache-from: type=gha
86+
cache-to: type=gha,mode=max
87+
labels: |
88+
org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}
89+
org.opencontainers.image.revision=${{ github.sha }}
90+
org.opencontainers.image.version=${{ needs.resolve.outputs.version }}

0 commit comments

Comments
 (0)