Commit Graph

162 Commits (aaec1c7828139e47296665c84aeea4c974026118)

Author SHA1 Message Date
Carol (Nichols || Goulding) b28aa22039
fix: Check hakari even if a hakari commit is already present; fail the build if so 2022-03-04 10:24:42 -05:00
Carol (Nichols || Goulding) b57632fb6c
fix: Fail the build if hakari changes need to be committed before merge 2022-03-04 10:17:17 -05:00
Carol (Nichols || Goulding) c3acf79307
fix: Only make potentially one cargo hakari commit per branch
So that we don't have to skip running tests when cargo hakari makes a
change, but we won't have infinite cargo hakari commits if there's some
sort of problem.
2022-03-03 15:32:31 -05:00
Carol (Nichols || Goulding) 33bbbd9950
fix: Cargo hakari commits have to use semantic commits too 2022-03-03 14:50:36 -05:00
Carol (Nichols || Goulding) 7f8dcf1ed0
chore: Add ssh key to CircleCI hakari job so it can push commits 2022-03-03 14:43:37 -05:00
Carol (Nichols || Goulding) 5018d1bf66
fix: Have auto hakari commits come from a CircleCI bot, not dependabot 2022-03-03 14:43:37 -05:00
Carol (Nichols || Goulding) 26b9ad812e
feat: Auto commit cargo hakari generate changes 2022-03-03 14:43:37 -05:00
Raphael Taylor-Davies 63bea75ee1
feat: split release build and deploy (#3879)
* feat: split release build and deploy

* fix: only build_release on main

* chore: fix build_perf CI

* fix: deploy_release checkout

* fix: update deploy_release image

* fix: deploy_release credentials

* fix: add COMMIT_SHA to env

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2022-03-01 16:35:39 +00:00
Marko Mikulicic 4a56fcdcab
fix: Use bigger executor for test job (#3885)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2022-03-01 14:42:55 +00:00
Dom Dwyer 4f0bd29a5b build: run "catalog setup" in CI
Ensures the "catalog setup" command executes successfully by executing
it in CI.
2022-02-21 11:58:57 +00:00
jaymebrd 4a35547af4
chore: The k8s-iox promotion is no longer used and can be removed (#3749) 2022-02-15 17:20:27 +00:00
Luke Bond 54890525da
feat: gitops adapter ci build (#3692)
* chore: remove references to perf_image in CI

* chore: adding gitops adapter image build in CI

* chore: gitops adapter bin now same as dir & package so docker build works

* fix: circle config package change after renaming gitops adapter package
2022-02-10 11:23:06 +00:00
Luke Bond 092268fc87
chore: remove references to perf_image in CI (#3673)
* chore: remove references to perf_image in CI

* chore: typos in circle config comments

* chore: restored ability to build branch using parameter; documented it

* chore: fixed indentation faux-pas in circle config

* docs: clarified build-triggering instructions in circle config comments

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2022-02-09 16:51:23 +00:00
Jacob Marble a9fe3362bd
chore: add semantic commit check as GH action (#3638)
* chore: add semantic commit check as GH action

* chore: remove spaces

* chore: indentation

* chore: yamllint config compatible with GH actions 'on' key

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2022-02-08 15:44:09 +00:00
Marco Neumann 50cff27b01
chore: remove rdkafka dependency (#3625)
All features are now covered by rskafka. This also removes the need to
specify a server ID for write buffer consumers. This was only used for
rdkafka since there we needed to specify a consumer group, even though
we did not use any transactions.
2022-02-03 13:33:56 +00:00
Marko Mikulicic c2bd9945de
fix: Use recommended ubuntu mirror (#3612)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2022-02-02 15:27:07 +00:00
Marko Mikulicic 7b2b5b7ebd
chore: Use ubuntu mirror in test_perf (#3609) 2022-02-02 12:37:44 +00:00
Marco Neumann 74c251febb
feat: allow IOx catalog to setup itself (no SQLx CLI required) (#3584)
* feat: allow IOx catalog to setup itself (no SQLx CLI required)

* refactor: use SQLx macro instead of hand-rolled build script
2022-01-31 15:07:38 +00:00
Paul Dix 3215928d2f chore: fix CI sqlx migrate command 2022-01-17 09:56:20 -05:00
Paul Dix 5877374d0d chore: fix ci postgres env 2022-01-17 09:56:20 -05:00
Paul Dix c373e7a397 chore: update circle CI for postgres 2022-01-17 09:56:20 -05:00
Paul Dix 4e48aea55c chore: add Postgres and migrations to CI 2022-01-17 09:56:20 -05:00
Marco Neumann 328286029f ci: use CLI-driven SSH for cargo
Workaround for <https://github.com/rust-lang/cargo/issues/10280>.
2022-01-11 11:38:02 +01:00
Raphael Taylor-Davies 5b71306423
chore: lint markdown docs and use relative code references in docs (#3420)
* chore: lint markdown docs

docs: relative source file references in markdown docs

* chore: review feedback
2022-01-04 09:50:13 +00:00
Marco Neumann 9f2694bf1b test: `objest_store` azure support via Azurite 2021-12-17 09:30:21 +01:00
Raphael Taylor-Davies 2f3e25922a
refactor: use redpanda docker image (#3390)
* refactor: use redpanda docker image

* chore: remove unused gpg key
2021-12-16 11:59:10 +00:00
Marco Neumann 36ba011653 docs: explain CI docker images 2021-12-16 12:31:55 +01:00
Marco Neumann f02d846389 test: `object_store` aws test using localstack
This removes 3 "nonexisting region" tests that where testing very
specific error behavior that no local emulator (minio and localstack)
replicate and that don't add much value. It's better to test our AWS
code at all than being to picky.
2021-12-16 10:10:06 +01:00
Marko Mikulicic b0c6713bd7 fix: Don't swallow exit code when hakari test fails 2021-12-14 14:49:14 +01:00
Marco Neumann 6153e3df0b chore: build docker image for data generator
Closes #3322.
2021-12-14 12:44:41 +01:00
Marco Neumann 9c0fd4360d ci: use lld to speedup linking 2021-12-14 12:44:08 +01:00
Carol (Nichols || Goulding) beede9bd4e
feat: Test and build releases with the Kafka feature enabled 2021-12-09 08:49:34 -05:00
Marco Neumann 43569c11c2 ci: improve perf image build time by pre-fetching correct rust version
This avoids that we have to pull rustc and friends twice (once via
image, once when actually executing it).
2021-12-07 09:26:05 +01:00
Marco Neumann c77637e552 ci: improve buildx output 2021-12-06 17:42:21 +01:00
Marco Neumann 5c9fb4699b ci: allow to trigger perf image build via CircleCI API 2021-12-06 17:37:02 +01:00
Marco Neumann 1706bc94a0 chore: provide a single way to build prod IOx images
Closes #3310.
2021-12-06 15:20:28 +01:00
Marco Neumann 0ff165045c ci: increase "no output" timeout for prod builds 2021-12-06 09:49:07 +01:00
Raphael Taylor-Davies b6ecec4d76
chore: tweak redpanda CI configuration (#3294) 2021-12-03 20:57:37 +00:00
Marco Neumann f1e9ac9ef2 ci: run shellcheck 2021-11-29 15:11:15 +01:00
Marco Neumann 86772a6d20 ci: run yamllint 2021-11-29 15:11:15 +01:00
Carol (Nichols || Goulding) 0ca02ea4d7
feat: Print cargo hakari commands to fix failing checks if they fail 2021-11-22 11:14:24 -05:00
Carol (Nichols || Goulding) 93d6c2becd
feat: Add CI jobs and documentation for the workspace-hack crate 2021-11-19 11:05:34 -05:00
Marco Neumann fef6cafa24 ci: explain some circle decisions 2021-11-18 10:55:36 +01:00
Marco Neumann c9168a2c13 ci: update CI image builder to use newer docker
This is a precondition to build ARM64 CI images.
2021-11-17 14:17:27 +01:00
Marco Neumann 640cd88df3 ci: update CI images from docker buster to bullseye
This will break `perf_image` until the new CI image is built due to the
newly required `--all-tags` parameter to `docker push` that isn't
available for the docker version we run on buster.
2021-11-17 10:00:31 +01:00
kodiakhq[bot] 49cfa046bb
Merge branch 'main' into crepererum/smaller_binaries 2021-11-12 11:17:09 +00:00
Marco Neumann f0136e9791 ci: run clippy for all features
This indeed fixes some issues in our object store implementation.

Closes #537.
2021-11-11 10:48:21 +01:00
Raphael Taylor-Davies f650962221
refactor: merge CI integration tests (#3049)
* refactor: merge CI integration tests

* chore: update docs
2021-11-10 16:48:16 +00:00
Marco Neumann 16fc610433 chore: faster and smaller IOx binaries
Use `codegen-units = 1`, thin-LTO and debug section compression to make our binary smaller (which is good for deploy and
test times) and faster.

# Summary

The binary size of `influxdb_iox` after building with:

```console
$ cargo build --release --no-default-features --features="aws,gcp,azure,jemalloc_replacing_malloc"
```

The profile was:

```toml
[profile.release]
debug = true
```

The commit was:

```text
89ece8b493
```

The size results are:

| Method                                     | Size  |
| ------------------------------------------ | ----- |
| baseline                                   | 833MB |
| baseline + dbg compression                 | 222MB |
| baseline + strip                           |  49MB |
| codegen-units                              | 520MB |
| codegen-units + strip                      |  40MB |
| codegen-units + dbg compression            | 143MB |
| thin LTO                                   | 715MB |
| thin LTO + strip                           |  49MB |
| thin LTO + dbg compression                 | 199MB |
| codegen-units + thin LTO                   | 449MB |
| codegen-units + thin LTO + strip           |  40MB |
| codegen-units + thin LTO + dbg compression | 130MB |

For the methods that were successfully measured I couldn't really see any compile time differences on my laptop.

# Methods

## Strip
Remove debug symbols. We don't really want this, so this is just to get an idea of the size

```console
$ strip baseline
```

## Debug Sections compression
Debug sections make a large amount of our binary size (a stripped executable is 49MB instead of 833MB). Since we like to
have debug symbols we cannot just strip them. However these symbols are only used for:

- backtrace generation (something went wrong, not BAU)
- profiling
- debugging

So in normal operation and most test scenarios, we're just wasting memory. So we could compress them:

```console
$ objcopy --compress-debug-sections baseline baseline-dbg_compressed
```

There is also elfutils:

```console
$ eu-elfcompress test
```

Elfutils nearly ends up with the same size (220MB instead of 222MB that objcopy achieves), but takes more time and is
probably not worth it.

Note that compressed debug sections exist since many years. The Rust ecosystem supports reading them since over a year,
see:

- <https://github.com/gimli-rs/gimli/issues/195>
- <https://github.com/rust-lang/backtrace-rs/issues/342>

## Codegen Units
The rust compiler parallelizes codegen work. This split into units however means that optimizations are somewhat
limited. This can be change by:

```toml
[profile.release]
...
codegen-units = 1
```

As a nice side effect this should also make our code faster.

## Thin LTO
Get LLVM to run "thin" Link Time Optimization:

```toml
[profile.release]
...
lto = "thin"
```

As a nice side effect this should also make our code faster.

## Fat LTO
Get LLVM to run "fat" Link Time Optimization:

```toml
[profile.release]
...
lto = "fat"
```

There are no results for this because this took a massive amount of memory and CPU time and did not finish on my system.
2021-11-10 15:49:19 +01:00
Marco Neumann 89ece8b493 ci: fix usage of old docker version
`--all-tags` as introduced for version 20.10 but appearently we're
running an older version.
2021-11-10 10:27:16 +01:00