Code AI platform with Code Search & Cody
Go to file
Jean-Hadrien Chabran 58da6780d7
Switch to OCI/Wolfi based image (#52693)
This PR ships our freshly rewritten container images built with
rules_oci and Wolfi, which for now will only be used on S2.

*What is this about*

This work is the conjunction of [hardening container
images](https://github.com/orgs/sourcegraph/projects/302?pane=issue&itemId=25019223)
and fully building our container images with Bazel.

* All base images are now distroless, based on Wolfi, meaning we fully
control every little package version and we won't be subject anymore to
Alpine maintainers dropping a postgres version for example.

* Container images are now built with `rules_oci`, meaning we don't have
Dockerfile anymore, but instead created through [Bazel
rules](https://sourcegraph.sourcegraph.com/github.com/sourcegraph/sourcegraph@bzl/oci_wolfi/-/blob/enterprise/cmd/gitserver/BUILD.bazel).
Don't be scared, while this will look a bit strange to you at first,
it's much saner and simpler to do than our Dockerfiles and their muddy
shell scripts calling themselves in cascade.


:spiral_note_pad:  *Plan*:

*1/ (NOW) We merge our branch on `main` today, here is what it does
change for you 👇:skin-tone-3::*

* On `main`: 
* It will introduce a new job on `main` _Bazel Push_, which will push
those new images on our registries with all tags prefixed by `bazel-`.
    * These new images will be picked up by S2 and S2 only. 
* The existing jobs building docker images and pushing them will stay in
place until we have QA'ed them enough and are confident to roll them out
on Dotcom.
* Because we'll be building both images, there will be more jobs running
on `main`, but this should not affect the wall clock time.
* On all branches (so your PRs and `main`)
* The _Bazel Test_ job will now run: Backend Integration Tests, E2E
Tests and CodeIntel QA
* This will increase the duration of your test jobs in PRs, but as we
haven't removed yet the `sg lint` step, it should not affect too much
the wall clock time of your PRs.
* But it will also increase your confidence toward your changes, as the
coverage will vastly increased compared to before.
* If you have ongoing branches which are affecting the docker images
(like adding a new binary, like the recent `scip-tags`, reach us out on
#job-fair-bazel so we can help you to port your changes. It's much much
simpler than before, but it's going to be unfamiliar to you).

* If something goes awfully wrong, we'll rollback and update this
thread.

*2/ (EOW / Early next week) Once we're confident enough with what we saw
on S2, we'll roll the new images on Dotcom.*

* After the first successful deploy and a few sanity checks, we will
drop the old images building jobs.
* At this point, we'll reach out to all TLs asking for their help to
exercise all features of our product to ensure we catch any potential
breakage.



## Test plan

<!-- All pull requests REQUIRE a test plan:
https://docs.sourcegraph.com/dev/background-information/testing_principles
-->


* We tested our new images on `scale-testing` and it worked.
* The new container building rules comes with _container tests_ which
ensures that produced images are containing and configured with what
should be in there:
[example](https://sourcegraph.sourcegraph.com/github.com/sourcegraph/sourcegraph@bzl/oci_wolfi/-/blob/enterprise/cmd/gitserver/image_test.yaml)
.

---------

Co-authored-by: Dave Try <davetry@gmail.com>
Co-authored-by: Will Dollman <will.dollman@sourcegraph.com>
2023-06-02 12:12:52 +02:00
.aspect Switch to OCI/Wolfi based image (#52693) 2023-06-02 12:12:52 +02:00
.buildkite app: add step for intel mac builds (#52540) 2023-05-29 20:21:06 +02:00
.github JetBrains plugin: merge Sourcegraph and Cody (#52706) 2023-06-01 12:43:11 +02:00
.vscode app: Add system tray (#51213) 2023-04-28 11:59:27 +01:00
client Switch to OCI/Wolfi based image (#52693) 2023-06-02 12:12:52 +02:00
cmd Switch to OCI/Wolfi based image (#52693) 2023-06-02 12:12:52 +02:00
dev Switch to OCI/Wolfi based image (#52693) 2023-06-02 12:12:52 +02:00
doc Switch to OCI/Wolfi based image (#52693) 2023-06-02 12:12:52 +02:00
docker-images Switch to OCI/Wolfi based image (#52693) 2023-06-02 12:12:52 +02:00
enterprise Switch to OCI/Wolfi based image (#52693) 2023-06-02 12:12:52 +02:00
internal Switch to OCI/Wolfi based image (#52693) 2023-06-02 12:12:52 +02:00
lib batches: add fork attribute to changeset template (#51572) 2023-05-31 13:19:07 -04:00
migrations [license-checks] add new fields to product_licenses table (#52761) 2023-06-02 09:16:55 +02:00
monitoring Switch to OCI/Wolfi based image (#52693) 2023-06-02 12:12:52 +02:00
schema cody-gateway: remove support for use of 'llmproxy' as provider (#52803) 2023-06-01 17:59:56 -07:00
src-tauri App: Improve log messages when backend terminates (#52779) 2023-06-01 17:30:17 -04:00
testing Switch to OCI/Wolfi based image (#52693) 2023-06-02 12:12:52 +02:00
third_party ci: enable bazel builds for docker images (#51241) 2023-04-28 10:41:13 +02:00
third-party-licenses chore: update third-party licenses (#51023) 2023-04-24 07:11:24 +02:00
tmp Switch to OCI/Wolfi based image (#52693) 2023-06-02 12:12:52 +02:00
ui/assets bazel: Bazel build browser extension + code-intel-extensions (#51135) 2023-05-02 03:33:52 -07:00
wolfi-images Switch to OCI/Wolfi based image (#52693) 2023-06-02 12:12:52 +02:00
wolfi-packages Update p4-fusion to install at p4-fusion-binary (#52762) 2023-06-01 12:03:06 +00:00
.bazel_fix_commands.json bazel: add command sets that uses bazel under the hood (#48460) 2023-03-02 11:31:51 +01:00
.bazelignore bazel: disable build-ts and build client/cody with Bazel (#51404) 2023-05-05 03:57:10 -07:00
.bazeliskrc chore: update to Aspect CLI 5.4.11 (#52533) 2023-05-27 08:40:03 +02:00
.bazelrc Switch to OCI/Wolfi based image (#52693) 2023-06-02 12:12:52 +02:00
.bazelversion Update bazel to 6.1.1 (#50472) 2023-04-11 10:51:21 +02:00
.browserslistrc web: migrate from yarn to pnpm (#46143) 2023-01-11 19:50:09 -08:00
.dockerignore web: migrate from yarn to pnpm (#46143) 2023-01-11 19:50:09 -08:00
.editorconfig chore: Add .lua to editorconfig. (#44267) 2022-11-11 15:25:32 +08:00
.eslintignore bazel: implement custom ESLint Bazel rule (#52062) 2023-05-22 04:05:45 -07:00
.eslintrc.js bazel: implement custom ESLint Bazel rule (#52062) 2023-05-22 04:05:45 -07:00
.gitattributes bazel: Build syntax-highlighter (#48703) 2023-03-08 19:08:09 +08:00
.gitignore nix: reorganizing (#52273) 2023-05-31 16:20:32 +01:00
.graphqlrc.yml
.hadolint.yaml bump comby version to 1.7.1 (#35830) 2022-05-20 20:12:01 -07:00
.mailmap mailmap: add entries for Eric and Renovate (#50966) 2023-04-25 09:42:22 +02:00
.mocharc.js build: still need BAZEL_BINDIR for webpack_bundle custom rule (#48796) 2023-03-07 20:02:11 -08:00
.npmrc pnpm: remove update notifier message (#51630) 2023-05-10 08:53:39 +02:00
.percy.yml Update browser extention installation detection logic on web (#32449) 2022-03-14 23:29:39 +06:00
.prettierignore bazel: decouple web application bundle from integration tests modules (#51560) 2023-05-10 06:47:56 +00:00
.stylelintignore rework plugin structure and implement frontside blogpost (#46883) 2023-02-15 11:49:51 +02:00
.stylelintrc.json web: drop bootstrap depenedency (#41401) 2022-09-07 03:11:26 -07:00
.tool-versions ci: improve pnpm dedupe CI check (#52741) 2023-06-01 06:02:20 +00:00
.trivyignore ci: ignore benign CVE-2021-43816 in prometheus (#31069) 2022-02-11 16:49:10 +00:00
babel.config.jest.js bazel: fix the web application bundle in Bazel (#50383) 2023-04-10 21:16:12 -07:00
babel.config.js bazel: fix the web application bundle in Bazel (#50383) 2023-04-10 21:16:12 -07:00
BUILD.bazel Switch to OCI/Wolfi based image (#52693) 2023-06-02 12:12:52 +02:00
CHANGELOG.app.md Add v2023.5.30 (#52785) 2023-06-01 15:09:18 -06:00
CHANGELOG.md update CHANGELOG for 5.0.5 (#52751) 2023-06-01 11:46:26 +00:00
CODENOTIFY nix: update pnpm hash (#51512) 2023-05-05 12:51:59 +00:00
CONTRIBUTING.md Docs: Fix docs page link in main CONTRIBUTING.md (#45160) 2022-12-05 14:57:45 +01:00
deps.bzl Worker: use string ID instead of int for job tracking (#52454) 2023-05-26 16:26:42 +02:00
doc.go
eslint-relative-formatter.js bazel: implement custom ESLint Bazel rule (#52062) 2023-05-22 04:05:45 -07:00
flake.lock nix: reorganizing (#52273) 2023-05-31 16:20:32 +01:00
flake.nix nix: reorganizing (#52273) 2023-05-31 16:20:32 +01:00
gen.go chore: Update go-mockgen (#44305) 2022-11-11 19:24:00 +00:00
go.mod ranking: Add cron expression for ranking job (#52738) 2023-06-01 15:38:01 -05:00
go.sum ranking: Add cron expression for ranking job (#52738) 2023-06-01 15:38:01 -05:00
graphql-schema-linter.config.js
gulpfile.js web: drop legacy GraphQL schema generator (#45945) 2022-12-25 18:10:20 -08:00
jest.config.base.js bazel: wildcard jest tests (#49282) 2023-03-17 03:38:49 -07:00
jest.config.js tests: use glob for jest projects field (#29681) 2022-01-13 01:11:52 -08:00
jest.snapshot-resolver.js bazel: wildcard jest tests (#49282) 2023-03-17 03:38:49 -07:00
LICENSE update licensing language (#25620) 2021-10-04 15:40:59 +01:00
LICENSE.apache
LICENSE.enterprise
lighthouserc.js web: migrate from yarn to pnpm (#46143) 2023-01-11 19:50:09 -08:00
linter_deps.bzl bazel: add unparam nogo linter (#50730) 2023-04-18 10:03:35 +00:00
mockgen.temp.yaml f:has.owners supports assigned owners (#52219) 2023-05-23 07:39:29 +02:00
mockgen.test.yaml debt: extract a buncha stuff from cmd/frontend that was used outside of frontend (#52570) 2023-06-01 14:20:11 +01:00
mockgen.yaml mocks: Reorganize mock definitions into multiple files (#36967) 2022-06-27 20:59:16 +00:00
nogo_config.json bazel: add depguard as a nogo linter (#50585) 2023-04-13 14:19:45 +02:00
package.json ci: improve pnpm dedupe CI check (#52741) 2023-06-01 06:02:20 +00:00
pnpm-lock.yaml ci: improve pnpm dedupe CI check (#52741) 2023-06-01 06:02:20 +00:00
pnpm-workspace.yaml cody: development branch (#49761) 2023-03-23 20:41:11 +01:00
postcss.config.js extensibility: add featured extensions to registry (#21665) 2021-06-10 13:55:20 -04:00
prettier.config.js clean up Cody CSS to increase shareability and improve display in web app (#50279) 2023-04-03 12:29:05 -07:00
README.md update readme and docs index for 5.0 (#49988) 2023-03-24 21:48:46 -06:00
renovate.json chore: add test plans to bot and release tool PRs (#31351) 2022-02-22 07:53:25 -08:00
SECURITY.md
service-catalog.yaml lib/servicecatalog: init to distribute catalog (#46999) 2023-01-26 17:22:27 -08:00
sg.config.yaml executors: Easier K8s Local Development (#52731) 2023-06-01 16:28:13 +00:00
shell.nix nix: reorganizing (#52273) 2023-05-31 16:20:32 +01:00
stamp_tags.bzl Switch to OCI/Wolfi based image (#52693) 2023-06-02 12:12:52 +02:00
svgo.config.js Performance: Optimize static SVG assets with SVGO (#26285) 2021-10-27 15:27:36 +01:00
tsconfig.all.json Cody: Add E2E test setup based on Playwright (#52071) 2023-05-19 19:11:52 +02:00
tsconfig.base.json web: fix pnpm-lock issue (#47478) 2023-02-09 22:04:31 -08:00
tsconfig.eslint.json web: fix pnpm-lock issue (#47478) 2023-02-09 22:04:31 -08:00
WORKSPACE Switch to OCI/Wolfi based image (#52693) 2023-06-02 12:12:52 +02:00

DocsContributingTwitterDiscord

Build status Scorecard Latest release Discord Contributors


Sourcegraph makes it easy to read, write, and fix code—even in big, complex codebases.

  • Code search: Search all of your repositories across all branches and all code hosts.
  • Code intelligence: Navigate code, find references, see code owners, trace history, and more.
  • Fix and refactor: Roll out large-scale changes to many repositories at once and track big migrations.

Getting started



Development

Refer to the Developing Sourcegraph guide to get started.

Documentation

The doc directory has additional documentation for developing and understanding Sourcegraph:

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.