Commit Graph

33 Commits

Author SHA1 Message Date
Michal Kuratczyk e796b61f49
Simplified OCI builds
* use the official erlang image as the base
  (no more openssl and erlang recompilation)
* by default, build with OTP27 for x86 only but make it
  easy to request any other OTP version and an ARM64 image
* better docker layer caching
* simplify the workflow and the Dockerfile
2025-01-27 13:54:49 +01:00
Michal Kuratczyk 9b828c08b7
Remove HiPE 2024-08-28 09:18:28 +02:00
Michael Klishin 40903581ef Bump version to 4.0 in a few places 2024-07-19 01:21:30 -04:00
Michal Kuratczyk 71dc1f123f
OCI: openssl 3.1.5 -> 3.3.1 (#11626) 2024-07-05 14:11:33 +02:00
Rin Kuryloski 6c97eaef61 Use the latest OTP in the dev OCIs 2024-05-16 20:17:35 +02:00
Rin Kuryloski 4e720d7fe1
Use make for OCI workflow (#11042)
* Use make instead of bazel for the OCI workflow
2024-04-19 20:05:24 +02:00
Rin Kuryloski 09f2190606 Always use GHCR when building the docker image
when splitting the image, depending on the platform, docker buildx
cannot always see the imported image. So, we'll just push to GHCR
always. Members of the rabbitmq github org can log into GHCR, and be
able to perform local builds of the image
2024-04-08 18:12:00 +02:00
Rin Kuryloski 9b4486ac0f
Split the docker image to improve caching (#10924)
* Split the docker image to improve caching
2024-04-08 16:01:28 +02:00
Rin Kuryloski c9ab302e79
Remove rules_docker in favor of rules_oci (#10869)
Local builds of images are extremely slow, but buildbuddy runners
don't have the emulator available
2024-04-02 19:04:38 +02:00
Michal Kuratczyk cb3db5d93e
Restore a deleted file. Seems to be used by other workflows 2023-12-01 14:36:15 +01:00
Michal Kuratczyk 4a4285a25e
OCI updates: bump OpenSSL, remove outdated/unused Dockerfile (#9898)
* Remove unused and outdated Dockerfile

check BUILD.bazel for how the image is built

* Update OpenSSL from 3.1.1 to 3.1.4
2023-11-08 12:56:29 +01:00
Rin Kuryloski a5b9c7431f Split the OCI image build into two phases
So that flakiness of debug symbol installation do not block it
2022-07-20 15:53:41 +02:00
Rin Kuryloski 997a2c5655 Remove debug symbol installation from oci workflow
As they seem to be extremely flaky. They may be restored via alternate
approach.
2022-07-20 15:53:41 +02:00
Rin Kuryloski ffb8cae08a Use single = instead of == with `test` in Dockerfile 2022-07-20 15:53:41 +02:00
Philip Kuryloski 178a7fa539 Again try to make Dockerfile more cacheable 2022-06-17 10:58:43 +02:00
Philip Kuryloski 0dcf896677 Attempt to improve the cache hit rate for the oci.yaml workflow 2022-06-14 15:30:55 +02:00
Philip Kuryloski 327f075d57 Make rabbitmq-server work with rules_erlang 3
Also rework elixir dependency handling, so we no longer rely on mix to
fetch the rabbitmq_cli deps

Also:

- Specify ra version with a commit rather than a branch
- Fixup compilation options for erlang 23
- Add missing ra reference in MODULE.bazel
- Add missing flag in oci.yaml
- Reduce bazel rbe jobs to try to save memory
- Use bazel built erlang for erlang git master tests
- Use the same cache for all the workflows but windows
- Avoid using `mix local.hex --force` in elixir rules
  - Fetching seems blocked in CI, and this should reduce hex api usage in
    all builds, which is always nice
- Remove xref and dialyze tags since rules_erlang 3 includes them in
  the defaults
2022-06-08 14:04:53 +02:00
Michal Kuratczyk 128cbcce32 Revert "Update otp-max to OTP 25, Elixir 1.13.4; OpenSSL to 1.1.1o"
This reverts commit 91e7f1be63.
2022-05-18 14:09:47 +02:00
Michal Kuratczyk 91e7f1be63 Update otp-max to OTP 25, Elixir 1.13.4; OpenSSL to 1.1.1o 2022-05-18 11:47:57 +02:00
Philip Kuryloski a8cbf7e483 Add OTP RCs to the OCI github actions workflow 2022-04-25 12:19:34 +02:00
Gerhard Lazu 37ea496273
Add debug utilities to Docker image
We need these to debug various rabbitmq-related issues. Ephemeral debug
containers are not enabled on GKE Autopilot (not sure if GKE enables
this alpha feature at all), so we are doing this instead.

    error: ephemeral containers are disabled for this cluster (error from server: "the server could not find the requested resource").

Backport to v3.9.x & v3.8.x if build passes

Pair @Gsantomaggio

Signed-off-by: Gerhard Lazu <gerhard@lazu.co.uk>
2021-09-07 16:29:40 +01:00
Philip Kuryloski 81ad77e120 Apply the same default config as docker-library/rabbitmq 2021-07-26 15:45:04 +02:00
Gerhard Lazu 76c9712d30
Enable all plugins & ports in development container images (OCIs)
This is the best way of ensuring that everything works. RabbitMQ is not
just the core components, it's all the plugins that ship with it.  While
we don't expect anyone to enable all plugins at the same time (for
example enabling all peer discovery plugins at the same time doesn't
make sense), we need to be minimally confident that everything works.
As we work on & QA various features in dev, this is the quickest way of
doing just that.

For example, today we were testing some Stream features with
@GSantomaggio and discovered that we needed to use a different image for
it, pivotalrabbitmq/rabbitmq-stream, because in the dev image we don't
enable the stream plugin by default. There is no reason why we would
need a different container image to test a core feature, that ships part
of RabbitMQ as a Tier 1 plugin. To be honest, I strongly believe that
everyone be looking at these specific images (otp-max & otp-max-1) which
bundle the majority of the RabbitMQ experience in a single artefact,
including OpenSSL & Erlang.

While I would normally push this straight into the main branch, I'm
doing it as a PR so that the following notice, and have the opportunity
to comment on this standalone:
- @michaelklishin
- @GSantomaggio
- @Zerpet
- @MirahImage
- @ansd

As next steps, after all checks pass, can someone from the above list
action the following please:
- merge into our main branch
- backport to v3.9.x
- deploy to lre-3-9

🙌

Signed-off-by: Gerhard Lazu <gerhard@lazu.co.uk>
2021-07-02 09:36:50 +01:00
David Ansari 91a598ed2c Bump to Erlang 24 and enable JIT compilation
See https://github.com/docker-library/rabbitmq/pull/492

Co-authored-by: Michal Kuratczyk <mkuratczyk@vmware.com>

Ensure compilation and runtime Erlang are in sync

Bump to Ubuntu 20.04

docker-library/rabbitmq also uses Ubuntu 20.04
2021-06-21 18:05:30 +02:00
Philip Kuryloski 54666a6231 Skip pgp verification for openssl archive in OCI images
The flake rate is too high for every CI run
2021-06-21 10:40:03 +02:00
Gerhard Lazu 0befef897c
Build & push container image on every commit
Before this, someone would need to run the package-generic-unix and
docker-image make targets in order to produce a container image. This
wouldn't always work: more than one archive in the PACKAGES dir, VERSION
& RABBITMQ_VERSION had to be specified, + characters in VERSION. It also
required me to have Docker running, which I am reluctant to leave
running on macOS because it uses CPU even when idle, and starting it
every time that I wanted an ad-hoc container image implied waiting a few
minutes, and then waiting another 15 minutes for the container image to
be produced and published to hub.docker.com.

This commit delegates all the above to GitHub Actions. The best part is
that it happens asynchronously - every commit triggers it - and a
container image for that commit will appear on hub.docker.com within ~15
minutes. In other words, anyone can test any commit in their container
runtime within 20 minutes, without needing to lift a finger.  No Docker,
no make targets, just reference the new tag (matches the git sha) and
off you go. It's the beginning of something better, for sure.

Did some cleanup in the Dockerfile part of this. Dropped
RABBITMQ_VERSION build arg, env & commented steps. This is cruft that we
no longer need or even use.

Also fixed VERSION in push target and broken the dependency on dist so
that they can be run independently.

Signed-off-by: Gerhard Lazu <gerhard@lazu.co.uk>
2021-04-01 12:00:55 +01:00
Loïc Hoguin 314eb3f4d7
erl_interface is required in OTP-24+ 2021-03-16 12:01:30 +01:00
Philip Kuryloski e76f0e0bb4 Fix the docker image for use with uncompressed plugins
Historically the docker image build extracts the rabbitmqadmin cli from the
management .ez. This step is now conditional.
2021-02-23 12:40:55 +01:00
Gerhard Lazu a937c6c7c7 Fix OPENSSL_PGP_KEY_IDS ENV in Dockerfile
I copied the pre-templating version from the official Dockerfile

Signed-off-by: Gerhard Lazu <gerhard@lazu.co.uk>
2021-02-23 11:26:29 +01:00
Gerhard Lazu aacec68c34 Use same docker config as the official rabbitmq image
Signed-off-by: Gerhard Lazu <gerhard@lazu.co.uk>
2021-02-23 11:26:29 +01:00
Philip Kuryloski d041315336 Revert "Remove the packaging directory"
This reverts commit 2067a68735.
2021-02-23 11:26:29 +01:00
Philip Kuryloski 2067a68735 Remove the packaging directory
It has been extracted to https://github.com/rabbitmq/rabbitmq-packaging
2021-01-04 14:42:43 +01:00
Jean-Sébastien Pédron 4568ab0fb9
packaging/docker-image: Move Docker files to their own directory
Like other packaging files, they should not be part of RabbitMQ itself.
One day, they will probably be moved to a dedicated repository, like
other packaging files.
2020-11-16 12:18:39 +01:00