Go LSIF indexing
You can automate data indexing in LSIF for Go codebases or index data manually.
Automated indexing
Sourcegraph provides the Docker images sourcegraph/lsif-go
and sourcegraph/src-cli
so that you can easily automate indexing in your favorite CI framework. Note that the lsif-go
image bundles src-cli
, so the second image may not be necessary.
The following examples show you how to set up automated indexing in a few popular frameworks. You'll need to substitute the indexer and upload commands with what works for your project locally. If you implement automated indexing in a different framework, feel free to edit this page with instructions!
GitHub Actions
on: - push jobs: lsif-go: # this line will prevent forks of this repo from uploading lsif indexes if: github.repository == '<insert your repo name>' runs-on: ubuntu-latest container: sourcegraph/lsif-go:latest steps: - uses: actions/checkout@v1 - name: Generate LSIF data run: lsif-go - name: Upload LSIF data # this will upload to Sourcegraph.com, you may need to substitute a different command. # by default, we ignore failures to avoid disrupting CI pipelines with non-critical errors. run: src code-intel upload -github-token=${{ secrets.GITHUB_TOKEN }} -ignore-upload-failure
The following projects have example GitHub Actions workflows to generate and upload LSIF indexes:
CircleCI
version: 2.1 jobs: lsif-go: docker: - image: sourcegraph/lsif-go:latest steps: - checkout - run: lsif-go # this will upload to Sourcegraph.com, you may need to substitute a different command. # by default, we ignore failures to avoid disrupting CI pipelines with non-critical errors. - run: src code-intel upload -github-token=<<parameters.github-token>> -ignore-upload-failure workflows: scip-typescript: jobs: - scip-typescript
The following projects have example CircleCI configurations to generate and upload LSIF indexes.
Travis CI
services: - docker jobs: include: - stage: lsif-go # this will upload to Sourcegraph.com, you may need to substitute a different command. # by default, we ignore failures to avoid disrupting CI pipelines with non-critical errors. script: - | docker run --rm -v $(pwd):/src -w /src sourcegraph/lsif-go:latest /bin/sh -c \ "lsif-go; src code-intel upload -github-token=$GITHUB_TOKEN -ignore-upload-failure"
The following projects have example Travis CI configurations to generate and upload LSIF indexes.
Manual indexing
-
Install the Go LSIF indexer.
-
Install the Sourcegraph CLI with the following command:
curl -L https://sourcegraph.com/.api/src-cli/src_linux_amd64 -o /usr/local/bin/src chmod +x /usr/local/bin/src
- macOS: Replace
linux
withdarwin
in the URL and choose the appropriate architecture: M1/M2 chips -arm64
, Intel chips -amd64
. - Windows: Visit the CLI repo for further instructions.
- macOS: Replace
-
cd
into your Go project's root (where thego.mod
file lives, if you have one) and run:lsif-go # generates a file named dump.lsif
-
Upload the data to a Sourcegraph instance with:
# for private instances src -endpoint=<your sourcegraph endpoint> lsif upload # for public instances src code-intel upload -github-token=<your github token>
The upload command will provide a URL you can visit to see the upload status. When the upload is complete, you can visit the repo and check out the difference in code navigation quality!