The migration to gRPC will take a significant amount of time, and until we are fully migrated and are able to remove the non-gRPC codepaths, we need to be confident that both codepaths work correctly. Our options here include: 1) duplicating every test to run with and without gRPC 2) adding a `TestMain` to every test package that reruns the suite with and without gRPC 3) manually adding tests for all the codepaths that are interesting to gRPC 4) always running both the HTTP and gRPC codepaths in parallel 5) mirror the test steps in CI to run both with and without gRPC None of the options are good, but a solution here is necessary avoid introducing regressions during the migration. This PR implements option 5 because it is the least bad option that is also the easiest to rip out when it is no longer needed. This PR updates our CI pipeline generator to duplicate most of our go tests (everything except database tests) as well as our backend integration tests. It does this by adding the environment variable `SG_FEATURE_FLAG_GRPC`, which is respected when clients are deciding whether to use gRPC or HTTP. Co-authored-by: Geoffrey Gilmore <me@ggilmore.net> |
||
|---|---|---|
| .aspect | ||
| .buildkite | ||
| .github | ||
| .vscode | ||
| client | ||
| cmd | ||
| dev | ||
| doc | ||
| docker-images | ||
| enterprise | ||
| internal | ||
| lib | ||
| migrations | ||
| monitoring | ||
| schema | ||
| third_party | ||
| third-party-licenses | ||
| ui/assets | ||
| wolfi-images | ||
| wolfi-packages | ||
| .bazelignore | ||
| .bazelrc | ||
| .bazelversion | ||
| .browserslistrc | ||
| .dockerignore | ||
| .editorconfig | ||
| .eslintignore | ||
| .eslintrc.js | ||
| .gitattributes | ||
| .gitignore | ||
| .golangci-warn.yml | ||
| .golangci.yml | ||
| .graphqlrc.yml | ||
| .hadolint.yaml | ||
| .mailmap | ||
| .mocharc.js | ||
| .npmrc | ||
| .percy.yml | ||
| .prettierignore | ||
| .stylelintignore | ||
| .stylelintrc.json | ||
| .tool-versions | ||
| .trivyignore | ||
| babel.config.js | ||
| BUILD.bazel | ||
| CHANGELOG.md | ||
| CONTRIBUTING.md | ||
| deps.bzl | ||
| doc.go | ||
| flake.lock | ||
| flake.nix | ||
| gen.go | ||
| go.mod | ||
| go.sum | ||
| graphql-schema-linter.config.js | ||
| gulpfile.js | ||
| jest.config.base.js | ||
| jest.config.js | ||
| LICENSE | ||
| LICENSE.apache | ||
| LICENSE.enterprise | ||
| lighthouserc.js | ||
| mockgen.temp.yaml | ||
| mockgen.test.yaml | ||
| mockgen.yaml | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| postcss.config.js | ||
| prettier.config.js | ||
| README.md | ||
| renovate.json | ||
| SECURITY.md | ||
| service-catalog.yaml | ||
| sg.config.yaml | ||
| shell.nix | ||
| svgo.config.js | ||
| tsconfig.all.json | ||
| tsconfig.base.json | ||
| tsconfig.bazel.json | ||
| tsconfig.eslint.json | ||
| WORKSPACE | ||
Docs •
Contributing •
Twitter
Understand, fix, and automate across your codebase with Sourcegraph's code intelligence platform
4.0 Features
🧠 Code intelligence: uplevel your code search
- Understand usage and search structure with high-level aggregations of search results
- A faster, simpler search experience
- Configure precise code navigation for 9 languages (Ruby, Rust, Go, Java, Scala, Kotlin, Python, TypeScript, JavaScript) in a matter of minutes with auto-indexing
- Your favorite extensions are now available by default
- Quickly access answers within your codebase with a revamped reference panel
🏗️ High-leverage ways to improve your entire codebase
- Make changes across all of your codebase at enterprise scale with server-side Batch Changes (beta)
- Run large-scale or resource-intensive batch changes without clogging your local machine
- Run large batch changes quickly by distributing them across an autoscaled pool of compute instances
- Get a better debugging experience with the streaming of logs directly into Sourcegraph.
☁️ Dedicated Sourcegraph Cloud instances for enterprise
- Sourcegraph Cloud now offers dedicated, single-tenant instances of Sourcegraph
📈 Advanced admin capabilities
- Save time upgrading to Sourcegraph 4.0 with multi-version upgrades
- View usage and measure the value of our platform with new and enhanced in-product analytics
- Uncover developer time saved using Browser and IDE extensions
- Easily export traces using OpenTelemetry
- Quickly see the status on your repository and permissions syncing
- Measure precise code navigation coverage with an enhanced analytics dashboard
Deploy Sourcegraph
Recommended
- Sourcegraph Cloud: create a single-tenant instance managed by Sourcegraph
Self-hosted
Local machine
Development
Refer to the Developing Sourcegraph guide to get started.
Documentation
The doc directory has additional documentation for developing and understanding Sourcegraph:
- Project FAQ
- Architecture: high-level architecture
- Database setup: database best practices
- Go style guide
- Documentation style guide
- GraphQL API: useful tips when modifying the GraphQL API
- Contributing
License
This repository contains both OSS-licensed and non-OSS-licensed files. We maintain one repository rather than two separate repositories mainly for development convenience.
All files in the enterprise and client/web/src/enterprise fall under LICENSE.enterprise.
The remaining files fall under the Apache 2 license. Sourcegraph OSS is built only from the Apache-licensed files in this repository.