Age | Commit message (Collapse) | Author |
|
Update the documentation for the module updater to reflect v15
|
|
|
|
|
|
|
|
This commit changes the package name from v14 to v15 in go and proto
files in the internal, auth, client, cmd packages.
|
|
Update the gitaly package name in the Makefile. Also update
gitaly-git2go-v14 -> gitaly-git2go-v15. We need to keep
gitaly-git2go-v14 for a release however, for zero downtime upgrades.
This pulls directly from a sha that is v14.
|
|
|
|
doc: Update Protobuf verification docs
See merge request gitlab-org/gitaly!4551
|
|
The 'Contributing' section of the Protobuf doc still references the old
`gitaly-proto` project and incorrectly suggests that the source files
generated by `protoc` may vary with Go version.
This removes the outdated and incorrect information and adds a new
section with details on the `make` targets for linting and validating
protos.
|
|
Revert "Merge branch 'pks-makefile-workaround-build-id-rebuilding' into 'master'"
See merge request gitlab-org/gitaly!4550
|
|
'master'"
This reverts commit 94a955f7bac56cb8f524f43a7773038e6e341585, reversing
changes made to 708408a8ad99f942c9cfd40f43ec11b961d31846.
|
|
downgrade json gem to match gitlab version
See merge request gitlab-org/gitaly!4547
|
|
Makefile: Fix rebuilding Go binaries in place to add GNU build ID
See merge request gitlab-org/gitaly!4544
|
|
Fix Default templates
See merge request gitlab-org/gitaly!4545
|
|
We have roughly three sections in our Makefile:
1. The section declaring all variables and build options.
2. The section declaring phony targets like `build` and `install`.
3. The section declaring actual recipes to generate the artifacts.
While we mostly abide by these sections, the recipes to build our Go
binaries are intermixed into the phony-targets-section.
Move them down so that they're together with all the other recipes.
|
|
Back when we added support for GNU build IDs to our binaries we started
building our Go binaries twice: the first time we do it so that we can
derive a deterministic GNU build ID from the Go build ID, and the second
time to embed that derived GNU build ID into the final binary. This has
two problems:
1. We build the binary twice, and even though Go caches most of the
build process this still significantly slows down incremental
builds of our binaries.
2. We're rebuilding the binary in-place by overwriting the binary
with no GNU build ID with the one that contains the GNU build ID.
While I'm not a 100% sure, this seems to leads to issues from
time to time where the resulting Go binary may be invalid when
the build got cancelled at the wrong point in time. This then
broke subsequent rebuilds of the binary.
Ideally, we wouldn't have to care about generating a deterministic GNU
build ID at all. But unfortunately, the only part of Go's build infra
that supports them is `go build`, so we have no easy way to avoid the
rebuild.
Instead, we can use a very ugly workaround though: when building the
binary, we embed a fixed GNU build ID with a known string and put this
binary into an intermediate location. We now derive the GNU build ID
from that intermediate binary, but instead of rebuilding it we simply
replace the known GNU build ID with the derived GNU build ID. Like this
we don't have to rebuild the binary but still get the same end result as
before.
This is implemented via a new naive Go tool that does this replacement
for us. Note that we cannot use e.g. sed(1) for this, and we don't want
to start depending on new tools like xxd(1). The tool is simple enough
though and allows us to have some additional safeguards to verify that
we are unlikely to wreak havoc on the binary.
|
|
The quoting we're using to pass both `GO_LDFLAGS` as well as our GNU
build ID to `-ldflags` is kind of awkward. Simplify it to instead just
quote both parts.
|
|
We're implicitly relying on the `GOBIN` environment variable to install
our Go binaries into the correct location. Convert this to instead use
`go build -o`, which is a more direct way of doing this.
|
|
We're using a phony `GITALY_EXECUTABLES` target to rebuild Gitaly
executables. This usage pattern is quite hard to read given that this
single target builds all binaries while not using any patterns at all.
Convert the target to instead use pattern rules, which are easier to
understand. Furthermore, instead of making these rules phony, let's
instead use a `.FORCE` dependency to force rebuilding them every time.
|
|
Use LabKit for FIPS mode check
See merge request gitlab-org/gitaly!4535
|
|
proto: Update documentation and modernize our style guide
See merge request gitlab-org/gitaly!4539
|
|
- See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86061#note_942017961
|
|
|
|
Disable deletions by default in background verifier
Closes #4211
See merge request gitlab-org/gitaly!4527
|
|
Since the dependencies were updated, `make notice` needed to be run.
|
|
https://gitlab.com/gitlab-org/labkit/-/merge_requests/158 abstracted
the common pattern of checking for FIPS, so let's use that now.
The `boringcrypto` build tag is enabled by the golang-fips compiler,
but LabKit needs the `fips` build tag.
Changelog: changed
|
|
Add Default templates
See merge request gitlab-org/gitaly!4542
|
|
|
|
Log routing decisions in Praefect
See merge request gitlab-org/gitaly!4540
|
|
CONTRIBUTING.md: Add Will Chandler as maintainer
See merge request gitlab-org/gitaly!4543
|
|
Use git2go merge for squashing
Closes gitlab#352581
See merge request gitlab-org/gitaly!4514
|
|
limithandler: Fix flaky TestStreamLimitHandler
Closes #4195
See merge request gitlab-org/gitaly!4541
|
|
Will Chandler has recently joined the Gitaly team. Update our list of
maintainers to reflect that.
|
|
docs: Cgroups per git process
See merge request gitlab-org/gitaly!4461
|
|
The TestStreamLimitHandler test was relying on a hardcoded timeout. This
caused flakiness in CI. We don't need to rely on a timeout however,
since we have a concurrency queue limiter, we can utilize that to make
this test synchronous.
|
|
Praefect currently doesn't log the routing decisions it makes. This
commit adds logging for the routing decisions as they can be helpful
in debugging various scenarios.
Changelog: added
|
|
limithandler: Do not wrap errors from limithandler
See merge request gitlab-org/gitaly!4537
|
|
Update grpc-go and protobuf
See merge request gitlab-org/gitaly!4536
|
|
Modernize our Protobuf documentation to clearly document our current
architecture and changed style guidelines.
|
|
In ancient times, Gitaly's Protobuf definitions had been living in a
separate project. This is still mentioned in some of our documentation,
even though it doesn't really play much of a role nowadays anymore.
Stop mentioning this old project: it's a thing of the past, and I'd be
surprised if anybody still needs information about it.
|
|
The Protobuf-related docs are currently hosted in the `proto/` directory
due to historic reasons when `gitaly-proto` still had its own separate
repository. Let's modernize this a bit:
- `README.md` is moved into `doc/protobuf.md`.
- `CONTRIBUTING.md` is removed. We already have such a file in the
root directory.
- `DEPRECATION.md` is merged into `doc/PROCESS.md`.
This should hopefully help discoverability of this documentation.
|
|
We don't enforce any line limits in our project, but we still set up
some reasonable recommendations via our EditorConfig. Let's also
recommend a line length of 100 characters for Protobuf definitions,
which matches the line length we have specified for Go files.
|
|
The excluded `FILE_HAS_COMMENT` has an out-of-date explanation that
still extends to all the other comment-linting-rules we had disabled.
Update the comment to only explain why we don't enforce file comments.
|
|
Our enumerations do not currently have any strict design guidelines.
This brings two issues with it:
1. Enumeration values are scoped per-service. Consequentially, if
two enumerations want to declare a value with the same name, the
declarations will clash.
2. It is not possible to discern the case where a caller hasn't set
the value of an enumeration at all versus the case where the
field was explicitly set to its zero-value.
The official Protobuf style guide thus says that enum values should
always be prefixed with the name of the enum itself, and that the zero
value should be called `UNSPECIFIED`. Let's enforce this style via
protolint so that any new enumerations will follow this recommendation.
|
|
In the limithandlers, we are returning structured errors so upstream
clients can interpret that a request limit took place. However, we are
currently swallowing these details by wrapping it in another gRPC error.
Instead, just return this error without wrapping it, since the
structured error already provides enough context as to why the error
happened.
Changelog: changed
|
|
proto: Enforce that definitions must have comments
See merge request gitlab-org/gitaly!4517
|
|
Makefile: Upgrade bundled Git to v2.36.1
See merge request gitlab-org/gitaly!4538
|
|
Enforce that message fields must have a comment and add a placeholder
for all instances where such a comment is missing.
|
|
Enforce that enum fields must have a comment and add a placeholder for
all instances where such a comment is missing.
|
|
Enforce that enum definitions must have a comment and add a placeholder
for all instances where such a comment is missing.
|