From 18e663cb7b10f0d95b0664ca0ede2776e03da1be Mon Sep 17 00:00:00 2001 From: Philip Kuryloski Date: Mon, 29 Mar 2021 11:01:43 +0200 Subject: [PATCH] Add a partial Bazel build (#2938) Adds WORKSPACE.bazel, BUILD.bazel & *.bzl files for partial build & test with Bazel. Introduces a build-time dependency on https://github.com/rabbitmq/bazel-erlang --- .github/workflows/base-images.yaml | 52 - .github/workflows/test-erlang-otp-23.1.yaml | 2430 ----------------- .github/workflows/test-erlang-otp-git.yaml | 2297 ---------------- .github/workflows/test.yaml | 54 + .gitignore | 3 + BAZEL.md | 71 + BUILD.bazel | 124 + BUILD.inet_tcp_proxy | 8 + BUILD.osiris | 23 + BUILD.ra | 33 + WORKSPACE.bazel | 48 + deps/amqp10_client/BUILD.bazel | 117 + deps/amqp10_client/activemq.bzl | 19 + deps/amqp10_common/BUILD.bazel | 74 + deps/amqp_client/BUILD.bazel | 70 + deps/amqp_client/test/system_SUITE.erl | 46 +- deps/rabbit/BUILD.bazel | 1122 ++++++++ .../apps/rabbitmq_prelaunch/BUILD.bazel | 17 + deps/rabbit/src/rabbit.erl | 4 +- deps/rabbit/src/rabbit_access_control.erl | 2 +- deps/rabbit/src/rabbit_amqqueue_sup.erl | 2 +- deps/rabbit/src/rabbit_amqqueue_sup_sup.erl | 2 +- .../src/rabbit_auth_backend_internal.erl | 2 +- .../src/rabbit_auth_mechanism_amqplain.erl | 2 +- .../src/rabbit_auth_mechanism_cr_demo.erl | 2 +- .../src/rabbit_auth_mechanism_plain.erl | 2 +- deps/rabbit/src/rabbit_basic.erl | 4 +- .../rabbit/src/rabbit_channel_interceptor.erl | 4 +- deps/rabbit/src/rabbit_channel_sup.erl | 2 +- deps/rabbit/src/rabbit_channel_sup_sup.erl | 2 +- deps/rabbit/src/rabbit_channel_tracking.erl | 2 +- .../src/rabbit_channel_tracking_handler.erl | 2 +- deps/rabbit/src/rabbit_client_sup.erl | 2 +- .../src/rabbit_connection_helper_sup.erl | 2 +- deps/rabbit/src/rabbit_connection_sup.erl | 2 +- .../rabbit/src/rabbit_connection_tracking.erl | 2 +- .../rabbit_connection_tracking_handler.erl | 2 +- .../src/rabbit_credential_validation.erl | 2 +- .../src/rabbit_credential_validator.erl | 2 +- ...credential_validator_accept_everything.erl | 2 +- ...edential_validator_min_password_length.erl | 2 +- ...t_credential_validator_password_regexp.erl | 2 +- deps/rabbit/src/rabbit_dead_letter.erl | 4 +- deps/rabbit/src/rabbit_direct.erl | 4 +- deps/rabbit/src/rabbit_exchange.erl | 4 +- deps/rabbit/src/rabbit_exchange_decorator.erl | 2 +- .../rabbit/src/rabbit_exchange_parameters.erl | 2 +- .../src/rabbit_exchange_type_direct.erl | 2 +- .../src/rabbit_exchange_type_fanout.erl | 2 +- .../src/rabbit_exchange_type_headers.erl | 4 +- .../src/rabbit_exchange_type_invalid.erl | 2 +- .../rabbit/src/rabbit_exchange_type_topic.erl | 2 +- deps/rabbit/src/rabbit_limiter.erl | 2 +- deps/rabbit/src/rabbit_maintenance.erl | 2 +- .../src/rabbit_mirror_queue_mode_all.erl | 2 +- .../src/rabbit_mirror_queue_mode_exactly.erl | 2 +- .../src/rabbit_mirror_queue_mode_nodes.erl | 2 +- deps/rabbit/src/rabbit_mnesia_rename.erl | 2 +- deps/rabbit/src/rabbit_msg_file.erl | 2 +- deps/rabbit/src/rabbit_msg_record.erl | 4 +- deps/rabbit/src/rabbit_msg_store.erl | 2 +- .../rabbit/src/rabbit_msg_store_ets_index.erl | 2 +- deps/rabbit/src/rabbit_msg_store_gc.erl | 2 +- deps/rabbit/src/rabbit_networking.erl | 4 +- deps/rabbit/src/rabbit_password.erl | 2 +- .../rabbit_peer_discovery_classic_config.erl | 2 +- deps/rabbit/src/rabbit_peer_discovery_dns.erl | 2 +- deps/rabbit/src/rabbit_policies.erl | 2 +- deps/rabbit/src/rabbit_queue_index.erl | 2 +- deps/rabbit/src/rabbit_queue_type_util.erl | 2 +- deps/rabbit/src/rabbit_quorum_queue.erl | 2 +- deps/rabbit/src/rabbit_reader.erl | 4 +- deps/rabbit/src/rabbit_recovery_terms.erl | 2 +- deps/rabbit/src/rabbit_restartable_sup.erl | 2 +- deps/rabbit/src/rabbit_router.erl | 2 +- deps/rabbit/src/rabbit_runtime_parameters.erl | 2 +- deps/rabbit/src/rabbit_sup.erl | 2 +- deps/rabbit/src/rabbit_trace.erl | 4 +- deps/rabbit/src/rabbit_upgrade.erl | 2 +- deps/rabbit/src/rabbit_vhost_limit.erl | 2 +- deps/rabbit/src/rabbit_vhost_msg_store.erl | 2 +- deps/rabbit/src/rabbit_vhost_process.erl | 2 +- deps/rabbit/src/rabbit_vhost_sup.erl | 2 +- deps/rabbit/src/rabbit_vhost_sup_sup.erl | 2 +- deps/rabbit/src/rabbit_vhost_sup_wrapper.erl | 2 +- deps/rabbit/src/term_to_binary_compat.erl | 2 +- .../channel_operation_timeout_test_queue.erl | 4 +- deps/rabbit/test/cluster_SUITE.erl | 2 +- deps/rabbit/test/dummy_event_receiver.erl | 2 +- deps/rabbit/test/feature_flags_SUITE.erl | 15 +- .../my_plugin/BUILD.bazel | 13 + deps/rabbit/test/peer_discovery_dns_SUITE.erl | 8 +- deps/rabbit/test/rabbit_msg_record_SUITE.erl | 4 +- .../test/term_to_binary_compat_prop_SUITE.erl | 2 +- deps/rabbit_common/BUILD.bazel | 277 ++ deps/rabbit_common/mk/rabbitmq-run.mk | 4 + deps/rabbit_common/src/rabbit_env.erl | 2 +- deps/rabbit_common/test/rabbit_env_SUITE.erl | 5 +- deps/rabbitmq_amqp1_0/BUILD.bazel | 186 ++ deps/rabbitmq_auth_backend_cache/BUILD.bazel | 131 + .../src/rabbit_auth_cache_dict.erl | 2 +- .../src/rabbit_auth_cache_ets.erl | 2 +- .../src/rabbit_auth_cache_ets_segmented.erl | 2 +- ...bit_auth_cache_ets_segmented_stateless.erl | 2 +- deps/rabbitmq_auth_backend_http/BUILD.bazel | 121 + deps/rabbitmq_auth_backend_ldap/BUILD.bazel | 164 ++ .../src/rabbit_log_ldap.erl | 2 +- deps/rabbitmq_cli/BUILD.bazel | 42 + deps/rabbitmq_cli/elixir.bzl | 45 + .../lib/rabbitmq/cli/core/command_modules.ex | 2 +- deps/rabbitmq_cli/rabbitmqctl.bzl | 162 ++ deps/rabbitmq_cli/rabbitmqctl_test.bzl | 150 + deps/rabbitmq_codegen/BUILD.bazel | 18 + deps/rabbitmq_federation/BUILD.bazel | 24 + .../src/rabbit_log_federation.erl | 2 +- deps/rabbitmq_management/BUILD.bazel | 40 + deps/rabbitmq_management_agent/BUILD.bazel | 33 + deps/rabbitmq_stomp/BUILD.bazel | 42 + deps/rabbitmq_web_dispatch/BUILD.bazel | 16 + elixir_home.bzl | 13 + rabbitmq.bzl | 101 + rabbitmq_home.bzl | 137 + rabbitmq_run.bzl | 80 + rabbitmqctl.bzl | 32 + scripts/bazel/kill_orphaned_ct_run.sh | 7 + scripts/bazel/rabbitmq-run.sh | 192 ++ workspace_helpers.bzl | 143 + 127 files changed, 4096 insertions(+), 4901 deletions(-) delete mode 100644 .github/workflows/base-images.yaml delete mode 100644 .github/workflows/test-erlang-otp-23.1.yaml delete mode 100644 .github/workflows/test-erlang-otp-git.yaml create mode 100644 .github/workflows/test.yaml create mode 100644 BAZEL.md create mode 100644 BUILD.bazel create mode 100644 BUILD.inet_tcp_proxy create mode 100644 BUILD.osiris create mode 100644 BUILD.ra create mode 100644 WORKSPACE.bazel create mode 100644 deps/amqp10_client/BUILD.bazel create mode 100644 deps/amqp10_client/activemq.bzl create mode 100644 deps/amqp10_common/BUILD.bazel create mode 100644 deps/amqp_client/BUILD.bazel create mode 100644 deps/rabbit/BUILD.bazel create mode 100644 deps/rabbit/apps/rabbitmq_prelaunch/BUILD.bazel create mode 100644 deps/rabbit/test/feature_flags_SUITE_data/my_plugin/BUILD.bazel create mode 100644 deps/rabbit_common/BUILD.bazel create mode 100644 deps/rabbitmq_amqp1_0/BUILD.bazel create mode 100644 deps/rabbitmq_auth_backend_cache/BUILD.bazel create mode 100644 deps/rabbitmq_auth_backend_http/BUILD.bazel create mode 100644 deps/rabbitmq_auth_backend_ldap/BUILD.bazel create mode 100644 deps/rabbitmq_cli/BUILD.bazel create mode 100644 deps/rabbitmq_cli/elixir.bzl create mode 100644 deps/rabbitmq_cli/rabbitmqctl.bzl create mode 100644 deps/rabbitmq_cli/rabbitmqctl_test.bzl create mode 100644 deps/rabbitmq_codegen/BUILD.bazel create mode 100644 deps/rabbitmq_federation/BUILD.bazel create mode 100644 deps/rabbitmq_management/BUILD.bazel create mode 100644 deps/rabbitmq_management_agent/BUILD.bazel create mode 100644 deps/rabbitmq_stomp/BUILD.bazel create mode 100644 deps/rabbitmq_web_dispatch/BUILD.bazel create mode 100644 elixir_home.bzl create mode 100644 rabbitmq.bzl create mode 100644 rabbitmq_home.bzl create mode 100644 rabbitmq_run.bzl create mode 100644 rabbitmqctl.bzl create mode 100755 scripts/bazel/kill_orphaned_ct_run.sh create mode 100644 scripts/bazel/rabbitmq-run.sh create mode 100644 workspace_helpers.bzl diff --git a/.github/workflows/base-images.yaml b/.github/workflows/base-images.yaml deleted file mode 100644 index 721bba4c4d..0000000000 --- a/.github/workflows/base-images.yaml +++ /dev/null @@ -1,52 +0,0 @@ -name: Workflow Base Images -on: -- workflow_dispatch -jobs: - ci-base: - name: ci-base - runs-on: ubuntu-18.04 - strategy: - matrix: - erlang_version: - - "22.3" - - "23.1" - fail-fast: false - steps: - - name: CHECKOUT REPOSITORY - uses: actions/checkout@v2 - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - - name: Cache Docker layers - uses: actions/cache@v2 - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-buildx- - - name: Login to GCR - uses: docker/login-action@v1 - with: - registry: eu.gcr.io - username: _json_key - password: ${{ secrets.GCR_JSON_KEY }} - - name: CREATE ERLANG+ELIXIR IMAGE (${{ matrix.erlang_version }}) - uses: docker/build-push-action@v2 - with: - push: true - file: ci/dockerfiles/${{ matrix.erlang_version }}/erlang_elixir - tags: eu.gcr.io/cf-rabbitmq-core/erlang_elixir:${{ matrix.erlang_version }} - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache - - name: CREATE BASE CI IMAGE (${{ matrix.erlang_version }}) - uses: docker/build-push-action@v2 - with: - push: true - file: ci/dockerfiles/ci-base - build-args: | - ERLANG_VERSION=${{ matrix.erlang_version }} - SECONDARY_UMBRELLA_GITREFS=v3.7.28 v3.8.9 - tags: eu.gcr.io/cf-rabbitmq-core/ci-base:${{ matrix.erlang_version }} - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache diff --git a/.github/workflows/test-erlang-otp-23.1.yaml b/.github/workflows/test-erlang-otp-23.1.yaml deleted file mode 100644 index c773ebce47..0000000000 --- a/.github/workflows/test-erlang-otp-23.1.yaml +++ /dev/null @@ -1,2430 +0,0 @@ -name: Test - Erlang 23.1 -on: push -jobs: - prepare: - name: prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - outputs: - build_start: ${{ steps.buildevents.outputs.build_start }} - branch_or_tag_name: ${{ steps.buildevents.outputs.branch_or_tag_name }} - steps: - - name: RECORD BUILD START - id: buildevents - run: | - echo "::set-output name=build_start::$(date +%s)" - branch_or_tag_name=${GITHUB_REF#refs/*/} - echo "::set-output name=branch_or_tag_name::$branch_or_tag_name" - - name: CHECKOUT REPOSITORY - uses: actions/checkout@v2 - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - - name: Cache Docker layers - uses: actions/cache@v2 - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-buildx- - - name: Login to GCR - uses: docker/login-action@v1 - with: - registry: eu.gcr.io - username: _json_key - password: ${{ secrets.GCR_JSON_KEY }} - - name: PREPARE BUILD IMAGE - uses: docker/build-push-action@v2 - with: - load: true - file: ci/dockerfiles/ci - tags: eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} - build-args: | - ERLANG_VERSION=23.1 - GITHUB_RUN_ID=${{ github.run_id }} - BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} - GITHUB_SHA=${{ github.sha }} - base_rmq_ref=master - current_rmq_ref=${{ steps.buildevents.outputs.branch_or_tag_name }} - RABBITMQ_VERSION=3.9.0 - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: SAVE CI DOCKER IMAGE IN CACHE - run: | - docker save --output ci.tar eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} - - uses: google-github-actions/setup-gcloud@master - with: - service_account_key: ${{ secrets.GCR_JSON_KEY }} - export_default_credentials: true - - name: RECORD STEP FINISH - run: | - docker run \ - --env project=prepare \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.build_start }} \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/collect.sh - xref: - name: xref - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD XREF START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - name: CHECKOUT REPOSITORY - uses: actions/checkout@v2 - - name: Login to GCR - uses: docker/login-action@v1 - with: - registry: eu.gcr.io - username: _json_key - password: ${{ secrets.GCR_JSON_KEY }} - - name: PULL IMAGE - run: | - docker pull eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 - - name: RUN XREF rabbit_common - run: | - docker run \ - --env project=rabbit_common \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbit - run: | - docker run \ - --env project=rabbit \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF amqp_client - run: | - docker run \ - --env project=amqp_client \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF amqp10_client - run: | - docker run \ - --env project=amqp10_client \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF amqp10_common - run: | - docker run \ - --env project=amqp10_common \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_amqp1_0 - run: | - docker run \ - --env project=rabbitmq_amqp1_0 \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_auth_backend_cache - run: | - docker run \ - --env project=rabbitmq_auth_backend_cache \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_auth_backend_http - run: | - docker run \ - --env project=rabbitmq_auth_backend_http \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_auth_backend_ldap - run: | - docker run \ - --env project=rabbitmq_auth_backend_ldap \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_auth_backend_oauth2 - run: | - docker run \ - --env project=rabbitmq_auth_backend_oauth2 \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_auth_mechanism_ssl - run: | - docker run \ - --env project=rabbitmq_auth_mechanism_ssl \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_aws - run: | - docker run \ - --env project=rabbitmq_aws \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_cli - run: | - docker run \ - --env project=rabbitmq_cli \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_consistent_hash_exchange - run: | - docker run \ - --env project=rabbitmq_consistent_hash_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_event_exchange - run: | - docker run \ - --env project=rabbitmq_event_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_federation - run: | - docker run \ - --env project=rabbitmq_federation \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_federation_management - run: | - docker run \ - --env project=rabbitmq_federation_management \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_jms_topic_exchange - run: | - docker run \ - --env project=rabbitmq_jms_topic_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_management - run: | - docker run \ - --env project=rabbitmq_management \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_management_agent - run: | - docker run \ - --env project=rabbitmq_management_agent \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_mqtt - run: | - docker run \ - --env project=rabbitmq_mqtt \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_peer_discovery_common - run: | - docker run \ - --env project=rabbitmq_peer_discovery_common \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_peer_discovery_aws - run: | - docker run \ - --env project=rabbitmq_peer_discovery_aws \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_peer_discovery_k8s - run: | - docker run \ - --env project=rabbitmq_peer_discovery_k8s \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_peer_discovery_consul - run: | - docker run \ - --env project=rabbitmq_peer_discovery_consul \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_peer_discovery_etcd - run: | - docker run \ - --env project=rabbitmq_peer_discovery_etcd \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_prometheus - run: | - docker run \ - --env project=rabbitmq_prometheus \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_random_exchange - run: | - docker run \ - --env project=rabbitmq_random_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_recent_history_exchange - run: | - docker run \ - --env project=rabbitmq_recent_history_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_sharding - run: | - docker run \ - --env project=rabbitmq_sharding \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_shovel - run: | - docker run \ - --env project=rabbitmq_shovel \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_shovel_management - run: | - docker run \ - --env project=rabbitmq_shovel_management \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_stomp - run: | - docker run \ - --env project=rabbitmq_stomp \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_stream - run: | - docker run \ - --env project=rabbitmq_stream \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_stream_management - run: | - docker run \ - --env project=rabbitmq_stream_management \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_stream_prometheus - run: | - docker run \ - --env project=rabbitmq_stream_prometheus \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_top - run: | - docker run \ - --env project=rabbitmq_top \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_tracing - run: | - docker run \ - --env project=rabbitmq_tracing \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_trust_store - run: | - docker run \ - --env project=rabbitmq_trust_store \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_web_dispatch - run: | - docker run \ - --env project=rabbitmq_web_dispatch \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_web_mqtt - run: | - docker run \ - --env project=rabbitmq_web_mqtt \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_web_mqtt_examples - run: | - docker run \ - --env project=rabbitmq_web_mqtt_examples \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_web_stomp - run: | - docker run \ - --env project=rabbitmq_web_stomp \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_web_stomp_examples - run: | - docker run \ - --env project=rabbitmq_web_stomp_examples \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/xref.sh - - name: RECORD STEP FINISH - if: always() - run: | - docker run \ - --env project=xref \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - --volume ${PWD}/ci/scripts:/workspace/rabbitmq/ci/scripts \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/collect.sh - dialyze: - name: dialyze - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD DIALYZE START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - name: CHECKOUT REPOSITORY - uses: actions/checkout@v2 - - name: Login to GCR - uses: docker/login-action@v1 - with: - registry: eu.gcr.io - username: _json_key - password: ${{ secrets.GCR_JSON_KEY }} - - name: PULL IMAGE - run: | - docker pull eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 - - name: RUN DIALYZE rabbit_common - run: | - docker run \ - --env project=rabbit_common \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/dialyze.sh - - name: RUN DIALYZE rabbit - run: | - docker run \ - --env project=rabbit \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/dialyze.sh - - name: RUN DIALYZE amqp10_client - run: | - docker run \ - --env project=amqp10_client \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/dialyze.sh - - name: RUN DIALYZE amqp10_common - run: | - docker run \ - --env project=amqp10_common \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/dialyze.sh - - name: RUN DIALYZE rabbitmq_auth_mechanism_ssl - run: | - docker run \ - --env project=rabbitmq_auth_mechanism_ssl \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/dialyze.sh - - name: RUN DIALYZE rabbitmq_event_exchange - run: | - docker run \ - --env project=rabbitmq_event_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/dialyze.sh - - name: RUN DIALYZE rabbitmq_federation_management - run: | - docker run \ - --env project=rabbitmq_federation_management \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/dialyze.sh - - name: RUN DIALYZE rabbitmq_peer_discovery_common - run: | - docker run \ - --env project=rabbitmq_peer_discovery_common \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/dialyze.sh - - name: RUN DIALYZE rabbitmq_random_exchange - run: | - docker run \ - --env project=rabbitmq_random_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/dialyze.sh - - name: RUN DIALYZE rabbitmq_shovel_management - run: | - docker run \ - --env project=rabbitmq_shovel_management \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/dialyze.sh - - name: RUN DIALYZE rabbitmq_top - run: | - docker run \ - --env project=rabbitmq_top \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/dialyze.sh - - name: RUN DIALYZE rabbitmq_tracing - run: | - docker run \ - --env project=rabbitmq_tracing \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/dialyze.sh - - name: RUN DIALYZE rabbitmq_web_mqtt_examples - run: | - docker run \ - --env project=rabbitmq_web_mqtt_examples \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/dialyze.sh - - name: RUN DIALYZE rabbitmq_web_stomp_examples - run: | - docker run \ - --env project=rabbitmq_web_stomp_examples \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/dialyze.sh - - name: RECORD STEP FINISH - if: always() - run: | - docker run \ - --env project=dialyze \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - --volume ${PWD}/ci/scripts:/workspace/rabbitmq/ci/scripts \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:23.1 \ - ci/scripts/collect.sh - rabbit_common: - name: rabbit_common - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbit_common \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbit_common-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbit: - name: rabbit - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbit \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbit-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - amqp_client: - name: amqp_client - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=amqp_client \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: amqp_client-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - amqp10_client: - name: amqp10_client - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=amqp10_client \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: amqp10_client-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - amqp10_common: - name: amqp10_common - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=amqp10_common \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: amqp10_common-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_amqp1_0: - name: rabbitmq_amqp1_0 - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_amqp1_0 \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_amqp1_0-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_auth_backend_cache: - name: rabbitmq_auth_backend_cache - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_auth_backend_cache \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_auth_backend_cache-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_auth_backend_http: - name: rabbitmq_auth_backend_http - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_auth_backend_http \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_auth_backend_http-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_auth_backend_ldap: - name: rabbitmq_auth_backend_ldap - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_auth_backend_ldap \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_auth_backend_ldap-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_auth_backend_oauth2: - name: rabbitmq_auth_backend_oauth2 - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_auth_backend_oauth2 \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_auth_backend_oauth2-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_auth_mechanism_ssl: - name: rabbitmq_auth_mechanism_ssl - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_auth_mechanism_ssl \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_auth_mechanism_ssl-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_aws: - name: rabbitmq_aws - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_aws \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_aws-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_cli: - name: rabbitmq_cli - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir broker-logs && chmod 777 broker-logs - docker run \ - --env project=rabbitmq_cli \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - --volume ${PWD}/broker-logs:/workspace/broker-logs \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/rabbitmq_cli.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_cli-broker-logs - path: broker-logs/broker-logs.tar.xz - rabbitmq_consistent_hash_exchange: - name: rabbitmq_consistent_hash_exchange - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_consistent_hash_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_consistent_hash_exchange-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_event_exchange: - name: rabbitmq_event_exchange - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_event_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_event_exchange-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_federation: - name: rabbitmq_federation - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_federation \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_federation-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_federation_management: - name: rabbitmq_federation_management - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_federation_management \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_federation_management-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_jms_topic_exchange: - name: rabbitmq_jms_topic_exchange - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_jms_topic_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_jms_topic_exchange-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_management: - name: rabbitmq_management - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_management \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_management-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_management_agent: - name: rabbitmq_management_agent - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_management_agent \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_management_agent-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_mqtt: - name: rabbitmq_mqtt - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_mqtt \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_mqtt-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_peer_discovery_common: - name: rabbitmq_peer_discovery_common - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_peer_discovery_common \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_peer_discovery_common-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_peer_discovery_aws: - name: rabbitmq_peer_discovery_aws - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: PREPARE TERRAFORM SECRETS - run: | - mkdir terraform && chmod 777 terraform - echo "${{ secrets.TERRAFORM_SSH_KEY }}" > terraform/id_rsa_terraform - echo "${{ secrets.TERRAFORM_SSH_KEY_PUB }}" > terraform/id_rsa_terraform.pub - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_peer_discovery_aws \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - --env ERLANG_VERSION=23.1 \ - --env AWS_ACCESS_KEY_ID=${{ secrets.CONCOURSE_AWS_ACCESS_KEY_ID }} \ - --env AWS_SECRET_ACCESS_KEY=${{ secrets.CONCOURSE_AWS_SECRET_ACCESS_KEY }} \ - --env SSH_KEY=/workspace/terraform/id_rsa_terraform \ - --volume ${PWD}/terraform:/workspace/terraform \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_peer_discovery_aws-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_peer_discovery_k8s: - name: rabbitmq_peer_discovery_k8s - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_peer_discovery_k8s \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_peer_discovery_k8s-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_peer_discovery_consul: - name: rabbitmq_peer_discovery_consul - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_peer_discovery_consul \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_peer_discovery_consul-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_peer_discovery_etcd: - name: rabbitmq_peer_discovery_etcd - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_peer_discovery_etcd \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_peer_discovery_etcd-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_prometheus: - name: rabbitmq_prometheus - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_prometheus \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_prometheus-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_random_exchange: - name: rabbitmq_random_exchange - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_random_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_random_exchange-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_recent_history_exchange: - name: rabbitmq_recent_history_exchange - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_recent_history_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_recent_history_exchange-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_sharding: - name: rabbitmq_sharding - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_sharding \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_sharding-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_shovel: - name: rabbitmq_shovel - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_shovel \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_shovel-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_shovel_management: - name: rabbitmq_shovel_management - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_shovel_management \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_shovel_management-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_stomp: - name: rabbitmq_stomp - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_stomp \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_stomp-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_stream: - name: rabbitmq_stream - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_stream \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_stream-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_stream_management: - name: rabbitmq_stream_management - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_stream_management \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_stream_management-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_stream_prometheus: - name: rabbitmq_stream_prometheus - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_stream_prometheus \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_stream_prometheus-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_top: - name: rabbitmq_top - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_top \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_top-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_tracing: - name: rabbitmq_tracing - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_tracing \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_tracing-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_trust_store: - name: rabbitmq_trust_store - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_trust_store \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_trust_store-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_web_dispatch: - name: rabbitmq_web_dispatch - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_web_dispatch \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_web_dispatch-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_web_mqtt: - name: rabbitmq_web_mqtt - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_web_mqtt \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_web_mqtt-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_web_mqtt_examples: - name: rabbitmq_web_mqtt_examples - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_web_mqtt_examples \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_web_mqtt_examples-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_web_stomp: - name: rabbitmq_web_stomp - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_web_stomp \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_web_stomp-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_web_stomp_examples: - name: rabbitmq_web_stomp_examples - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_web_stomp_examples \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_web_stomp_examples-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - finish: - name: finish - needs: - - prepare - - xref - - dialyze - - rabbit_common - - rabbit - - amqp_client - - amqp10_client - - amqp10_common - - rabbitmq_amqp1_0 - - rabbitmq_auth_backend_cache - - rabbitmq_auth_backend_http - - rabbitmq_auth_backend_ldap - - rabbitmq_auth_backend_oauth2 - - rabbitmq_auth_mechanism_ssl - - rabbitmq_aws - - rabbitmq_cli - - rabbitmq_consistent_hash_exchange - - rabbitmq_event_exchange - - rabbitmq_federation - - rabbitmq_federation_management - - rabbitmq_jms_topic_exchange - - rabbitmq_management - - rabbitmq_management_agent - - rabbitmq_mqtt - - rabbitmq_peer_discovery_common - - rabbitmq_peer_discovery_aws - - rabbitmq_peer_discovery_k8s - - rabbitmq_peer_discovery_consul - - rabbitmq_peer_discovery_etcd - - rabbitmq_prometheus - - rabbitmq_random_exchange - - rabbitmq_recent_history_exchange - - rabbitmq_sharding - - rabbitmq_shovel - - rabbitmq_shovel_management - - rabbitmq_stomp - - rabbitmq_stream - - rabbitmq_stream_management - - rabbitmq_stream_prometheus - - rabbitmq_top - - rabbitmq_tracing - - rabbitmq_trust_store - - rabbitmq_web_dispatch - - rabbitmq_web_mqtt - - rabbitmq_web_mqtt_examples - - rabbitmq_web_stomp - - rabbitmq_web_stomp_examples - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'') && (success() || failure())' - steps: - - uses: technote-space/workflow-conclusion-action@v1 - - uses: google-github-actions/setup-gcloud@master - with: - service_account_key: ${{ secrets.GCR_JSON_KEY }} - export_default_credentials: true - - uses: actions/cache@v2 - with: - key: erlang-23.1-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RECORD BUILD FINISH - run: | - echo -n "${{ env.WORKFLOW_CONCLUSION }}" > conclusion - - gsutil cp conclusion \ - 'gs://monorepo_github_actions_conclusions/${{ github.sha }}/${{ github.workflow }}' - - docker run \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env BUILD_START=${{ needs.prepare.outputs.build_start }} \ - --env BUILD_RESULT=${{ env.WORKFLOW_CONCLUSION }} \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-23.1-rabbitmq-${{ github.sha }} \ - ci/scripts/finish.sh diff --git a/.github/workflows/test-erlang-otp-git.yaml b/.github/workflows/test-erlang-otp-git.yaml deleted file mode 100644 index f29c7925a3..0000000000 --- a/.github/workflows/test-erlang-otp-git.yaml +++ /dev/null @@ -1,2297 +0,0 @@ -name: Test - Erlang git master -on: - schedule: - - cron: 0 3 * * * - workflow_dispatch: null -jobs: - prepare: - name: prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - outputs: - build_start: ${{ steps.buildevents.outputs.build_start }} - branch_or_tag_name: ${{ steps.buildevents.outputs.branch_or_tag_name }} - steps: - - name: RECORD BUILD START - id: buildevents - run: | - echo "::set-output name=build_start::$(date +%s)" - branch_or_tag_name=${GITHUB_REF#refs/*/} - echo "::set-output name=branch_or_tag_name::$branch_or_tag_name" - - name: CHECKOUT REPOSITORY - uses: actions/checkout@v2 - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - - name: Cache Docker layers - uses: actions/cache@v2 - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-buildx- - - name: Login to GCR - uses: docker/login-action@v1 - with: - registry: eu.gcr.io - username: _json_key - password: ${{ secrets.GCR_JSON_KEY }} - - name: CHECKOUT ERLANG/OTP MASTER - uses: actions/checkout@v2 - with: - repository: erlang/otp - path: erlang-git-master - - name: DETERMINE ERLANG SHA - id: erlang_sha - run: | - cd erlang-git-master - erlang_sha=$(git rev-parse HEAD) - echo "::set-output name=erlang_sha::$erlang_sha" - - name: CREATE ERLANG+ELIXIR IMAGE (git) - uses: docker/build-push-action@v2 - with: - push: true - file: ci/dockerfiles/git/erlang_elixir - tags: eu.gcr.io/cf-rabbitmq-core/erlang_elixir:git - build-args: | - ERLANG_VERSION=${{ steps.erlang_sha.outputs.erlang_sha }} - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache - - name: CREATE BASE CI IMAGE (git) - uses: docker/build-push-action@v2 - with: - push: true - file: ci/dockerfiles/ci-base - tags: eu.gcr.io/cf-rabbitmq-core/ci-base:git - build-args: | - ERLANG_VERSION=git - SECONDARY_UMBRELLA_GITREFS=v3.7.28 v3.8.9 - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache - - name: CLEANUP ERLANG/OTP MASTER - run: | - rm -rf erlang-git-master - - name: PREPARE BUILD IMAGE - uses: docker/build-push-action@v2 - with: - load: true - file: ci/dockerfiles/ci - tags: eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} - build-args: | - ERLANG_VERSION=git - GITHUB_RUN_ID=${{ github.run_id }} - BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} - GITHUB_SHA=${{ github.sha }} - base_rmq_ref=master - current_rmq_ref=${{ steps.buildevents.outputs.branch_or_tag_name }} - RABBITMQ_VERSION=3.9.0 - cache-from: type=local,src=/tmp/.buildx-cache - cache-to: type=local,dest=/tmp/.buildx-cache - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: SAVE CI DOCKER IMAGE IN CACHE - run: | - docker save --output ci.tar eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} - - uses: google-github-actions/setup-gcloud@master - with: - service_account_key: ${{ secrets.GCR_JSON_KEY }} - export_default_credentials: true - - name: RECORD STEP FINISH - run: | - docker run \ - --env project=prepare \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.build_start }} \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/collect.sh - xref: - name: xref - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD XREF START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - name: CHECKOUT REPOSITORY - uses: actions/checkout@v2 - - name: Login to GCR - uses: docker/login-action@v1 - with: - registry: eu.gcr.io - username: _json_key - password: ${{ secrets.GCR_JSON_KEY }} - - name: PULL IMAGE - run: | - docker pull eu.gcr.io/cf-rabbitmq-core/ci-base:git - - name: RUN XREF rabbit_common - run: | - docker run \ - --env project=rabbit_common \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbit - run: | - docker run \ - --env project=rabbit \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF amqp_client - run: | - docker run \ - --env project=amqp_client \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF amqp10_client - run: | - docker run \ - --env project=amqp10_client \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF amqp10_common - run: | - docker run \ - --env project=amqp10_common \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_amqp1_0 - run: | - docker run \ - --env project=rabbitmq_amqp1_0 \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_auth_backend_cache - run: | - docker run \ - --env project=rabbitmq_auth_backend_cache \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_auth_backend_http - run: | - docker run \ - --env project=rabbitmq_auth_backend_http \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_auth_backend_ldap - run: | - docker run \ - --env project=rabbitmq_auth_backend_ldap \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_auth_backend_oauth2 - run: | - docker run \ - --env project=rabbitmq_auth_backend_oauth2 \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_auth_mechanism_ssl - run: | - docker run \ - --env project=rabbitmq_auth_mechanism_ssl \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_aws - run: | - docker run \ - --env project=rabbitmq_aws \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_cli - run: | - docker run \ - --env project=rabbitmq_cli \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_consistent_hash_exchange - run: | - docker run \ - --env project=rabbitmq_consistent_hash_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_event_exchange - run: | - docker run \ - --env project=rabbitmq_event_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_federation - run: | - docker run \ - --env project=rabbitmq_federation \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_federation_management - run: | - docker run \ - --env project=rabbitmq_federation_management \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_jms_topic_exchange - run: | - docker run \ - --env project=rabbitmq_jms_topic_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_management - run: | - docker run \ - --env project=rabbitmq_management \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_management_agent - run: | - docker run \ - --env project=rabbitmq_management_agent \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_mqtt - run: | - docker run \ - --env project=rabbitmq_mqtt \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_peer_discovery_common - run: | - docker run \ - --env project=rabbitmq_peer_discovery_common \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_peer_discovery_aws - run: | - docker run \ - --env project=rabbitmq_peer_discovery_aws \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_peer_discovery_k8s - run: | - docker run \ - --env project=rabbitmq_peer_discovery_k8s \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_peer_discovery_consul - run: | - docker run \ - --env project=rabbitmq_peer_discovery_consul \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_peer_discovery_etcd - run: | - docker run \ - --env project=rabbitmq_peer_discovery_etcd \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_prometheus - run: | - docker run \ - --env project=rabbitmq_prometheus \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_random_exchange - run: | - docker run \ - --env project=rabbitmq_random_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_recent_history_exchange - run: | - docker run \ - --env project=rabbitmq_recent_history_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_sharding - run: | - docker run \ - --env project=rabbitmq_sharding \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_shovel - run: | - docker run \ - --env project=rabbitmq_shovel \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_shovel_management - run: | - docker run \ - --env project=rabbitmq_shovel_management \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_stomp - run: | - docker run \ - --env project=rabbitmq_stomp \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_stream - run: | - docker run \ - --env project=rabbitmq_stream \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_stream_management - run: | - docker run \ - --env project=rabbitmq_stream_management \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_stream_prometheus - run: | - docker run \ - --env project=rabbitmq_stream_prometheus \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_top - run: | - docker run \ - --env project=rabbitmq_top \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_tracing - run: | - docker run \ - --env project=rabbitmq_tracing \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_trust_store - run: | - docker run \ - --env project=rabbitmq_trust_store \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_web_dispatch - run: | - docker run \ - --env project=rabbitmq_web_dispatch \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_web_mqtt - run: | - docker run \ - --env project=rabbitmq_web_mqtt \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_web_mqtt_examples - run: | - docker run \ - --env project=rabbitmq_web_mqtt_examples \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_web_stomp - run: | - docker run \ - --env project=rabbitmq_web_stomp \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RUN XREF rabbitmq_web_stomp_examples - run: | - docker run \ - --env project=rabbitmq_web_stomp_examples \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --volume ${PWD}:/workspace/rabbitmq \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/xref.sh - - name: RECORD STEP FINISH - if: always() - run: | - docker run \ - --env project=xref \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - --volume ${PWD}/ci/scripts:/workspace/rabbitmq/ci/scripts \ - --workdir /workspace/rabbitmq \ - eu.gcr.io/cf-rabbitmq-core/ci-base:git \ - ci/scripts/collect.sh - rabbit_common: - name: rabbit_common - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbit_common \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbit_common-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbit: - name: rabbit - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbit \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbit-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - amqp_client: - name: amqp_client - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=amqp_client \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: amqp_client-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - amqp10_client: - name: amqp10_client - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=amqp10_client \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: amqp10_client-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - amqp10_common: - name: amqp10_common - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=amqp10_common \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: amqp10_common-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_amqp1_0: - name: rabbitmq_amqp1_0 - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_amqp1_0 \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_amqp1_0-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_auth_backend_cache: - name: rabbitmq_auth_backend_cache - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_auth_backend_cache \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_auth_backend_cache-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_auth_backend_http: - name: rabbitmq_auth_backend_http - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_auth_backend_http \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_auth_backend_http-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_auth_backend_ldap: - name: rabbitmq_auth_backend_ldap - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_auth_backend_ldap \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_auth_backend_ldap-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_auth_backend_oauth2: - name: rabbitmq_auth_backend_oauth2 - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_auth_backend_oauth2 \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_auth_backend_oauth2-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_auth_mechanism_ssl: - name: rabbitmq_auth_mechanism_ssl - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_auth_mechanism_ssl \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_auth_mechanism_ssl-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_aws: - name: rabbitmq_aws - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_aws \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_aws-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_cli: - name: rabbitmq_cli - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir broker-logs && chmod 777 broker-logs - docker run \ - --env project=rabbitmq_cli \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - --volume ${PWD}/broker-logs:/workspace/broker-logs \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/rabbitmq_cli.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_cli-broker-logs - path: broker-logs/broker-logs.tar.xz - rabbitmq_consistent_hash_exchange: - name: rabbitmq_consistent_hash_exchange - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_consistent_hash_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_consistent_hash_exchange-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_event_exchange: - name: rabbitmq_event_exchange - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_event_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_event_exchange-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_federation: - name: rabbitmq_federation - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_federation \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_federation-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_federation_management: - name: rabbitmq_federation_management - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_federation_management \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_federation_management-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_jms_topic_exchange: - name: rabbitmq_jms_topic_exchange - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_jms_topic_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_jms_topic_exchange-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_management: - name: rabbitmq_management - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_management \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_management-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_management_agent: - name: rabbitmq_management_agent - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_management_agent \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_management_agent-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_mqtt: - name: rabbitmq_mqtt - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_mqtt \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_mqtt-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_peer_discovery_common: - name: rabbitmq_peer_discovery_common - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_peer_discovery_common \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_peer_discovery_common-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_peer_discovery_aws: - name: rabbitmq_peer_discovery_aws - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: PREPARE TERRAFORM SECRETS - run: | - mkdir terraform && chmod 777 terraform - echo "${{ secrets.TERRAFORM_SSH_KEY }}" > terraform/id_rsa_terraform - echo "${{ secrets.TERRAFORM_SSH_KEY_PUB }}" > terraform/id_rsa_terraform.pub - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_peer_discovery_aws \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - --env ERLANG_VERSION=git \ - --env AWS_ACCESS_KEY_ID=${{ secrets.CONCOURSE_AWS_ACCESS_KEY_ID }} \ - --env AWS_SECRET_ACCESS_KEY=${{ secrets.CONCOURSE_AWS_SECRET_ACCESS_KEY }} \ - --env SSH_KEY=/workspace/terraform/id_rsa_terraform \ - --volume ${PWD}/terraform:/workspace/terraform \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_peer_discovery_aws-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_peer_discovery_k8s: - name: rabbitmq_peer_discovery_k8s - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_peer_discovery_k8s \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_peer_discovery_k8s-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_peer_discovery_consul: - name: rabbitmq_peer_discovery_consul - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_peer_discovery_consul \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_peer_discovery_consul-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_peer_discovery_etcd: - name: rabbitmq_peer_discovery_etcd - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_peer_discovery_etcd \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_peer_discovery_etcd-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_prometheus: - name: rabbitmq_prometheus - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_prometheus \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_prometheus-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_random_exchange: - name: rabbitmq_random_exchange - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_random_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_random_exchange-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_recent_history_exchange: - name: rabbitmq_recent_history_exchange - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_recent_history_exchange \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_recent_history_exchange-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_sharding: - name: rabbitmq_sharding - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_sharding \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_sharding-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_shovel: - name: rabbitmq_shovel - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_shovel \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_shovel-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_shovel_management: - name: rabbitmq_shovel_management - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_shovel_management \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_shovel_management-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_stomp: - name: rabbitmq_stomp - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_stomp \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_stomp-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_stream: - name: rabbitmq_stream - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_stream \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_stream-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_stream_management: - name: rabbitmq_stream_management - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_stream_management \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_stream_management-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_stream_prometheus: - name: rabbitmq_stream_prometheus - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_stream_prometheus \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_stream_prometheus-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_top: - name: rabbitmq_top - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_top \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_top-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_tracing: - name: rabbitmq_tracing - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_tracing \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_tracing-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_trust_store: - name: rabbitmq_trust_store - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_trust_store \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_trust_store-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_web_dispatch: - name: rabbitmq_web_dispatch - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_web_dispatch \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_web_dispatch-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_web_mqtt: - name: rabbitmq_web_mqtt - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_web_mqtt \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_web_mqtt-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_web_mqtt_examples: - name: rabbitmq_web_mqtt_examples - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_web_mqtt_examples \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_web_mqtt_examples-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_web_stomp: - name: rabbitmq_web_stomp - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_web_stomp \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_web_stomp-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - rabbitmq_web_stomp_examples: - name: rabbitmq_web_stomp_examples - needs: - - prepare - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'')' - steps: - - name: RECORD STEP START - id: buildevents - run: | - echo "::set-output name=step_start::$(date +%s)" - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RUN TESTS - run: | - mkdir ct-logs && chmod 777 ct-logs - docker run \ - --env project=rabbitmq_web_stomp_examples \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env STEP_START=${{ steps.buildevents.outputs.step_start }} \ - \ - --volume ${PWD}/ct-logs:/workspace/ct-logs \ - --oom-kill-disable \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/tests.sh - - name: ON FAILURE UPLOAD TESTS LOGS ARTIFACT - uses: actions/upload-artifact@v2-preview - if: failure() - with: - name: rabbitmq_web_stomp_examples-ct-logs - path: ct-logs/*-ct-logs-*.tar.xz - finish: - name: finish - needs: - - prepare - - xref - - rabbit_common - - rabbit - - amqp_client - - amqp10_client - - amqp10_common - - rabbitmq_amqp1_0 - - rabbitmq_auth_backend_cache - - rabbitmq_auth_backend_http - - rabbitmq_auth_backend_ldap - - rabbitmq_auth_backend_oauth2 - - rabbitmq_auth_mechanism_ssl - - rabbitmq_aws - - rabbitmq_cli - - rabbitmq_consistent_hash_exchange - - rabbitmq_event_exchange - - rabbitmq_federation - - rabbitmq_federation_management - - rabbitmq_jms_topic_exchange - - rabbitmq_management - - rabbitmq_management_agent - - rabbitmq_mqtt - - rabbitmq_peer_discovery_common - - rabbitmq_peer_discovery_aws - - rabbitmq_peer_discovery_k8s - - rabbitmq_peer_discovery_consul - - rabbitmq_peer_discovery_etcd - - rabbitmq_prometheus - - rabbitmq_random_exchange - - rabbitmq_recent_history_exchange - - rabbitmq_sharding - - rabbitmq_shovel - - rabbitmq_shovel_management - - rabbitmq_stomp - - rabbitmq_stream - - rabbitmq_stream_management - - rabbitmq_stream_prometheus - - rabbitmq_top - - rabbitmq_tracing - - rabbitmq_trust_store - - rabbitmq_web_dispatch - - rabbitmq_web_mqtt - - rabbitmq_web_mqtt_examples - - rabbitmq_web_stomp - - rabbitmq_web_stomp_examples - runs-on: ubuntu-18.04 - if: '!contains(github.event.head_commit.message, ''[ci skip]'') && (success() || failure())' - steps: - - uses: technote-space/workflow-conclusion-action@v1 - - uses: google-github-actions/setup-gcloud@master - with: - service_account_key: ${{ secrets.GCR_JSON_KEY }} - export_default_credentials: true - - uses: actions/cache@v2 - with: - key: erlang-git-rabbitmq-${{ github.sha }} - path: ci.tar - - name: LOAD CI DOCKER IMAGE FROM CACHE - run: | - docker load --input ci.tar - - name: RECORD BUILD FINISH - run: | - echo -n "${{ env.WORKFLOW_CONCLUSION }}" > conclusion - - gsutil cp conclusion \ - 'gs://monorepo_github_actions_conclusions/${{ github.sha }}/${{ github.workflow }}' - - docker run \ - --env GITHUB_RUN_ID=${{ github.run_id }} \ - --env BUILDEVENT_APIKEY=${{ secrets.HONEYCOMB_API_KEY }} \ - --env BUILD_START=${{ needs.prepare.outputs.build_start }} \ - --env BUILD_RESULT=${{ env.WORKFLOW_CONCLUSION }} \ - eu.gcr.io/cf-rabbitmq-core/ci:erlang-git-rabbitmq-${{ github.sha }} \ - ci/scripts/finish.sh diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 0000000000..5949696ee7 --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,54 @@ +name: Test +on: push +jobs: + test: + name: test + runs-on: ubuntu-18.04 + strategy: + matrix: + erlang_version: + - "23" + timeout-minutes: 60 + steps: + - name: CHECKOUT REPOSITORY + uses: actions/checkout@v2 + - name: CONFIGURE BAZEL + run: | + echo "${{ secrets.BUILDBUDDY_CERT }}" > buildbuddy-cert.pem + echo "${{ secrets.BUILDBUDDY_KEY }}" > buildbuddy-key.pem + cat << EOF >> .bazelrc + build --remote_executor=grpcs://cloud.buildbuddy.io + build --host_platform=//:erlang_${{ matrix.erlang_version }}_platform + build --platforms=//:erlang_${{ matrix.erlang_version }}_platform + build --extra_execution_platforms=//:erlang_${{ matrix.erlang_version }}_platform + + build --crosstool_top=@buildbuddy_toolchain//:toolchain + build --extra_toolchains=@buildbuddy_toolchain//:cc_toolchain + build --javabase=@buildbuddy_toolchain//:javabase_jdk8 + build --host_javabase=@buildbuddy_toolchain//:javabase_jdk8 + build --java_toolchain=@buildbuddy_toolchain//:toolchain_jdk8 + build --host_java_toolchain=@buildbuddy_toolchain//:toolchain_jdk8 + + build --@bazel-erlang//:erlang_version=${{ matrix.erlang_version }} + build --@bazel-erlang//:erlang_home=/usr/lib/erlang + build --//:elixir_home=/usr/local + + build --bes_results_url=https://app.buildbuddy.io/invocation/ + build --bes_backend=grpcs://cloud.buildbuddy.io + build --remote_cache=grpcs://cloud.buildbuddy.io + build --tls_client_certificate=buildbuddy-cert.pem + build --tls_client_key=buildbuddy-key.pem + build --remote_timeout=1200 + + build --build_metadata=ROLE=CI + build --remote_instance_name=buildbuddy-io/buildbuddy/ci + build --spawn_strategy=remote + build --jobs=50 + EOF + #! - name: Setup tmate session + #! uses: mxschmitt/action-tmate@v3 + - name: RUN TESTS + run: | + bazelisk test //... \ + --test_tag_filters=-exclusive \ + --verbose_failures diff --git a/.gitignore b/.gitignore index 3e137a8430..25a101c740 100644 --- a/.gitignore +++ b/.gitignore @@ -72,3 +72,6 @@ rabbitmq-server-*.zip traces* callgrand* + +/.bazelrc +/bazel-* diff --git a/BAZEL.md b/BAZEL.md new file mode 100644 index 0000000000..e50af941b1 --- /dev/null +++ b/BAZEL.md @@ -0,0 +1,71 @@ +# Experimental [Bazel](https://www.bazel.build/) build + +From https://docs.bazel.build/versions/master/bazel-overview.html +> Bazel is an open-source build and test tool similar to Make, Maven, and Gradle. It uses a human-readable, high-level build language. Bazel supports projects in multiple languages and builds outputs for multiple platforms. Bazel supports large codebases across multiple repositories, and large numbers of users. + +## Why RabbitMQ + Bazel? + +RabbitMQ, Tier1 plugins included, is a large codebase. The developer experience benefits from fast incremental compilation. + +More importantly, RabbitMQ's test suite is large and takes hours if run on a single machine. Bazel allows tests to be run in parallel on a large number of remote workers if needed, and furthermore uses cached test results when branches of the codebase remain unchanged. + +To the best of our knowledge Bazel does not provide built in Erlang or Elixir support, nor is there an available library of bazel rules. Therefore, we have defined our own rules in https://github.com/rabbitmq/bazel-erlang. Elixir compilation is handled as a special case within this repository. To use these rules, the location of your Erlang and Elixir installations must be indicated to the build (see below). + +While most of work for running tests happens in Bazel, the suite still makes use of some external tools for commands, notably gnu `make` and `openssl`. Ideally we could bring all of these tools under bazel, so that the only tool needed would be `bazel` or `bazelisk`, but that will take some time. + +## Install Bazelisk + +On **macOS**: + +`brew install bazelisk` + +Otherwise: + +https://docs.bazel.build/versions/master/install-bazelisk.html + +Additionally, create a `.bazelrc` file with at least: + +``` +build --@bazel-erlang//:erlang_home=/path/to/erlang/installation +build --@bazel-erlang//:erlang_version=23.1 +build --@bazel-erlang//:elixir_home=/path/to/elixir/installation +build --test_strategy=exclusive +``` + +Additionally, on **macOS**, you will likely need to add + +``` +build --spawn_strategy=local +``` + +for certain `rabbitmq_cli` tests to pass. This is because `rabbitmqctl wait` shells out to 'ps', which is broken in the bazel macOS (https://github.com/bazelbuild/bazel/issues/7448). + +## Run the broker + +`bazel run broker` + +## Running tests + +Many rabbit tests spawn single or clustered rabbit nodes, and therefore it's best to run test suites sequentially on a single machine. Hence the `--test_strategy=exclusive` flag used in `.bazelrc` above. Naturally that restriction does not hold if utilizing remote execution (as is the case for RabbitMQ's CI pipelines). + +Erlang Common Test logs will not be placed in the logs directory when run with bazel. They can be found under `bazel-testlogs`. For instance, those of the rabbit application's backing_queue suite will be under `bazel-testlogs/deps/rabbit/backing_queue_SUITE/test.outputs/`. + +### Run all tests + +Note: This takes quite some time on a single machine. + +`bazel test //...` + +### Run tests in a 'package' and its 'subpackages' + +**rabbit** is an appropriate example because it encloses the **rabbitmq_prelaunch** application. + +`bazel test deps/rabbit/...` + +### Run tests for a specific 'package' + +`bazel test deps/rabbit_common:all` + +### Run an individual common test suite + +`bazel test //deps/rabbit:lazy_queue_SUITE` diff --git a/BUILD.bazel b/BUILD.bazel new file mode 100644 index 0000000000..b3f3e2e1b2 --- /dev/null +++ b/BUILD.bazel @@ -0,0 +1,124 @@ +load("elixir_home.bzl", "elixir_home") +load(":rabbitmq_home.bzl", "rabbitmq_home") +load(":rabbitmq_run.bzl", "rabbitmq_run", "rabbitmq_run_command") +load(":rabbitmqctl.bzl", "rabbitmqctl") +load(":rabbitmq.bzl", "management_plugins", "required_plugins") + +exports_files([ + "scripts/bazel/rabbitmq-run.sh", +]) + +# This allows us to +# `bazel build //my/target \ +# --//:elixir_home=/path/to/elixir/installation` +elixir_home( + name = "elixir_home", + build_setting_default = "~/.kiex/elixirs/elixir-1.10.4", + visibility = ["//visibility:public"], +) + +platform( + name = "erlang_22_platform", + constraint_values = [ + "@platforms//os:linux", + "@platforms//cpu:x86_64", + "@bazel_tools//tools/cpp:clang", + ], + exec_properties = { + "OSFamily": "Linux", + "container-image": "docker://pivotalrabbitmq/rabbitmq-server-buildenv:linux-erlang-22.3", + }, +) + +platform( + name = "erlang_23_platform", + constraint_values = [ + "@platforms//os:linux", + "@platforms//cpu:x86_64", + "@bazel_tools//tools/cpp:clang", + ], + exec_properties = { + "OSFamily": "Linux", + "container-image": "docker://pivotalrabbitmq/rabbitmq-server-buildenv:linux-erlang-23.2", + }, +) + +rabbitmq_home( + name = "broker-home", + plugins = required_plugins(rabbitmq_workspace = "@"), +) + +rabbitmq_home( + name = "broker-management-home", + plugins = required_plugins(rabbitmq_workspace = "@") + management_plugins(rabbitmq_workspace = "@"), +) + +rabbitmq_home( + name = "broker-for-tests-home", + testonly = True, + plugins = [ + "//deps/rabbit:test_bazel_erlang_lib", # <- compiled with test erlc_opts + "@rabbitmq_ct_client_helpers//:bazel_erlang_lib", + "@inet_tcp_proxy//:bazel_erlang_lib", + "@meck//:bazel_erlang_lib", + ], +) + +rabbitmq_home( + name = "broker-for-cli-tests-home", + plugins = required_plugins(rabbitmq_workspace = "@") + [ + "//deps/rabbitmq_federation:bazel_erlang_lib", + "//deps/rabbitmq_stomp:bazel_erlang_lib", + "//deps/amqp_client:bazel_erlang_lib", + ], +) + +rabbitmq_run( + name = "rabbitmq-run", + home = ":broker-home", + visibility = ["//visibility:public"], +) + +rabbitmq_run( + name = "rabbitmq-management-run", + home = ":broker-management-home", + visibility = ["//visibility:public"], +) + +rabbitmq_run( + name = "rabbitmq-for-tests-run", + testonly = True, + home = ":broker-for-tests-home", + visibility = ["//visibility:public"], +) + +rabbitmq_run( + name = "rabbitmq-for-cli-tests-run", + testonly = True, + home = ":broker-for-cli-tests-home", + visibility = ["//visibility:public"], +) + +# Allow us to `bazel run broker` +# for the equivalent of `make run-broker` +# (though it as of yet includes no plugins) +rabbitmq_run_command( + name = "broker", + rabbitmq_run = ":rabbitmq-run", + subcommand = "run-broker", +) + +# `bazel run broker-management` for the broker with just the +# management plugin +rabbitmq_run_command( + name = "broker-management", + rabbitmq_run = ":rabbitmq-management-run", + subcommand = "run-broker", +) + +# `bazel run rabbitmqctl` +rabbitmqctl( + name = "rabbitmqctl", + home = ":broker-home", + visibility = ["//visibility:public"], +) diff --git a/BUILD.inet_tcp_proxy b/BUILD.inet_tcp_proxy new file mode 100644 index 0000000000..303e530984 --- /dev/null +++ b/BUILD.inet_tcp_proxy @@ -0,0 +1,8 @@ +load("@bazel-erlang//:bazel_erlang_lib.bzl", "erlang_lib") + +erlang_lib( + app_name = "inet_tcp_proxy_dist", + app_version = "0.1.0", + app_description = "Erlang distribution proxy to simulate network failures", + app_module = "inet_tcp_proxy_dist_app", +) diff --git a/BUILD.osiris b/BUILD.osiris new file mode 100644 index 0000000000..3d741e870c --- /dev/null +++ b/BUILD.osiris @@ -0,0 +1,23 @@ +load("@bazel-erlang//:bazel_erlang_lib.bzl", "erlang_lib") + +APP_ENV = """[ + {data_dir, "/tmp/osiris"}, + {port_range, {6000, 6500}} +]""" + +DEPS = [ + "@gen_batch_server//:bazel_erlang_lib", +] + +erlang_lib( + app_name = "osiris", + app_version = "master", + app_description = "New project", + app_module = "osiris_app", + app_env = APP_ENV, + extra_apps = [ + "sasl", + "crypto", + ], + deps = DEPS, +) diff --git a/BUILD.ra b/BUILD.ra new file mode 100644 index 0000000000..d5218e203e --- /dev/null +++ b/BUILD.ra @@ -0,0 +1,33 @@ +load("@bazel-erlang//:bazel_erlang_lib.bzl", "erlang_lib", "test_erlang_lib") + +DEPS = [ + "@gen_batch_server//:bazel_erlang_lib", +] + +RUNTIME_DEPS = [ + "@aten//:bazel_erlang_lib", +] + +NAME = "ra" + +FIRST_SRCS = [ + "src/ra_machine.erl", + "src/ra_snapshot.erl", +] + +erlang_lib( + app_name = NAME, + first_srcs = FIRST_SRCS, + deps = DEPS, + runtime_deps = RUNTIME_DEPS, +) + +test_erlang_lib( + app_name = NAME, + first_srcs = FIRST_SRCS, + erlc_opts = [ + "+debug_info", + ], + deps = DEPS, + runtime_deps = RUNTIME_DEPS, +) diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel new file mode 100644 index 0000000000..2048ab6e03 --- /dev/null +++ b/WORKSPACE.bazel @@ -0,0 +1,48 @@ +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +http_archive( + name = "io_buildbuddy_buildbuddy_toolchain", + sha256 = "48546946879b1fd2dcba327ba15776c822f2ce9a9ef1077be9bf3ecadcc1564a", + strip_prefix = "buildbuddy-toolchain-b2f5e7e3b126c6d7cf243227147478c0959bfc95", + urls = ["https://github.com/buildbuddy-io/buildbuddy-toolchain/archive/b2f5e7e3b126c6d7cf243227147478c0959bfc95.zip"], +) + +load("@io_buildbuddy_buildbuddy_toolchain//:deps.bzl", "buildbuddy_deps") + +buildbuddy_deps() + +load("@io_buildbuddy_buildbuddy_toolchain//:rules.bzl", "buildbuddy") + +buildbuddy(name = "buildbuddy_toolchain") + +http_archive( + name = "bazel-erlang", + strip_prefix = "bazel-erlang-master", + urls = ["https://github.com/rabbitmq/bazel-erlang/archive/master.zip"], +) + +load("//:workspace_helpers.bzl", "rabbitmq_external_deps") + +rabbitmq_external_deps(rabbitmq_workspace = "@") + +http_archive( + name = "rabbitmq_ct_helpers", + repo_mapping = { + "@rabbitmq-server": "@", + }, + strip_prefix = "rabbitmq-ct-helpers-bazel", + urls = ["https://github.com/rabbitmq/rabbitmq-ct-helpers/archive/bazel.zip"], +) + +http_archive( + name = "rabbitmq_ct_client_helpers", + repo_mapping = { + "@rabbitmq-server": "@", + }, + strip_prefix = "rabbitmq-ct-client-helpers-bazel", + urls = ["https://github.com/rabbitmq/rabbitmq-ct-client-helpers/archive/bazel.zip"], +) + +load("//deps/amqp10_client:activemq.bzl", "activemq_archive") + +activemq_archive() diff --git a/deps/amqp10_client/BUILD.bazel b/deps/amqp10_client/BUILD.bazel new file mode 100644 index 0000000000..97dc20a05a --- /dev/null +++ b/deps/amqp10_client/BUILD.bazel @@ -0,0 +1,117 @@ +load("@bazel-erlang//:bazel_erlang_lib.bzl", "erlang_lib", "test_erlang_lib") +load("@bazel-erlang//:ct.bzl", "ct_suite") +load("//:rabbitmq_home.bzl", "rabbitmq_home") +load("//:rabbitmq_run.bzl", "rabbitmq_run") +load("//:rabbitmq.bzl", "APP_VERSION") + +APP_NAME = "amqp10_client" + +APP_DESCRIPTION = "AMQP 1.0 client from the RabbitMQ Project" + +APP_MODULE = "amqp10_client_app" + +EXTRA_APPS = [ + "ssl", + "inets", + "crypto", +] + +ERLC_OPTS = [ + # "-Dnowarn_deprecated_gen_fsm", +] + +TEST_ERLC_OPTS = [ + "+nowarn_export_all", +] + +BUILD_DEPS = [ + "//deps/rabbit_common:bazel_erlang_lib", +] + +DEPS = [ + "//deps/amqp10_common:bazel_erlang_lib", +] + +erlang_lib( + app_description = APP_DESCRIPTION, + app_module = APP_MODULE, + app_name = APP_NAME, + app_version = APP_VERSION, + build_deps = BUILD_DEPS, + erlc_opts = ERLC_OPTS, + extra_apps = EXTRA_APPS, + deps = DEPS, +) + +test_erlang_lib( + app_description = APP_DESCRIPTION, + app_module = APP_MODULE, + app_name = APP_NAME, + app_version = APP_VERSION, + build_deps = BUILD_DEPS, + erlc_opts = ERLC_OPTS, + extra_apps = EXTRA_APPS, + deps = DEPS, +) + +ct_suite( + erlc_opts = TEST_ERLC_OPTS, + suite_name = "msg_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + }, + deps = DEPS, +) + +rabbitmq_home( + name = "broker-for-tests-home", + plugins = [ + "//deps/rabbit:bazel_erlang_lib", + "//deps/rabbitmq_amqp1_0:bazel_erlang_lib", + ], +) + +rabbitmq_run( + name = "rabbitmq-for-tests-run", + home = ":broker-for-tests-home", +) + +ct_suite( + size = "large", + additional_hdrs = [ + "src/amqp10_client.hrl", + ], + additional_srcs = [ + "test/activemq_ct_helpers.erl", + "test/mock_server.erl", + ], + data = [ + "@activemq//:bin_dir", + "@rabbitmq_ct_helpers//tools/tls-certs:Makefile", + "@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in", + ], + erlc_opts = TEST_ERLC_OPTS + [ + "-I deps/amqp10_client", + ], + suite_name = "system_SUITE", + # does not pass remotely. marking exclusive until we have logs from remote runs + tags = ["exclusive"], + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + "RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/amqp10_client/rabbitmq-for-tests-run", + "RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/amqp10_client/broker-for-tests-home/sbin/rabbitmqctl", + "RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/amqp10_client/broker-for-tests-home/sbin/rabbitmq-plugins", + "ACTIVEMQ": "$TEST_SRCDIR/$TEST_WORKSPACE/external/activemq/bin/activemq", + }, + tools = [ + ":rabbitmq-for-tests-run", + ], + runtime_deps = [ + "//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib", + "//deps/rabbitmq_cli:rabbitmqctl", + "@rabbitmq_ct_client_helpers//:bazel_erlang_lib", + ], + deps = DEPS + [ + "@rabbitmq_ct_helpers//:bazel_erlang_lib", + ], +) diff --git a/deps/amqp10_client/activemq.bzl b/deps/amqp10_client/activemq.bzl new file mode 100644 index 0000000000..7da4a4850e --- /dev/null +++ b/deps/amqp10_client/activemq.bzl @@ -0,0 +1,19 @@ +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +ACTIVEMQ_VERSION = "5.14.4" +ACTIVEMQ_URL = "https://archive.apache.org/dist/activemq/{version}/apache-activemq-{version}-bin.tar.gz".format(version = ACTIVEMQ_VERSION) +SHA_256 = "16ec52bece0a4759f9d70f4132d7d8da67d662e4af029081c492e65510a695c1" + +def activemq_archive(): + http_archive( + name = "activemq", + urls = [ACTIVEMQ_URL], + sha256 = SHA_256, + strip_prefix = "apache-activemq-{}".format(ACTIVEMQ_VERSION), + build_file_content = """filegroup( + name = "bin_dir", + srcs = glob(["bin/**/*"]), + visibility = ["//visibility:public"], +) +""", + ) diff --git a/deps/amqp10_common/BUILD.bazel b/deps/amqp10_common/BUILD.bazel new file mode 100644 index 0000000000..c2a222e863 --- /dev/null +++ b/deps/amqp10_common/BUILD.bazel @@ -0,0 +1,74 @@ +load("@bazel-erlang//:bazel_erlang_lib.bzl", "app_file", "bazel_erlang_lib", "erlc") +load("@bazel-erlang//:ct.bzl", "ct_suite") +load("//:rabbitmq.bzl", "APP_VERSION") + +py_binary( + name = "codegen", + srcs = [ + "codegen.py", + ], + imports = ["../../deps/rabbitmq_codegen"], + deps = [ + "//deps/rabbitmq_codegen:amqp_codegen", + ], +) + +AMQP_SPEC_1_0 = [ + "//deps/rabbitmq_codegen:amqp-1.0/messaging.xml", + "//deps/rabbitmq_codegen:amqp-1.0/security.xml", + "//deps/rabbitmq_codegen:amqp-1.0/transport.xml", + "//deps/rabbitmq_codegen:amqp-1.0/transactions.xml", +] + +genrule( + name = "generated_headers", + srcs = AMQP_SPEC_1_0, + outs = ["include/amqp10_framing.hrl"], + cmd = "$(location :codegen) hrl $(SRCS) > $@", + tools = [":codegen"], +) + +genrule( + name = "generated_sources", + srcs = AMQP_SPEC_1_0, + outs = ["src/amqp10_framing0.erl"], + cmd = "$(location :codegen) erl $(SRCS) > $@", + tools = [":codegen"], +) + +app_file( + name = "app_file", + app_description = "Modules shared by rabbitmq-amqp1.0 and rabbitmq-amqp1.0-client", + app_name = "amqp10_common", + app_version = APP_VERSION, + modules = [":beam_files"], +) + +erlc( + name = "beam_files", + srcs = ["src/amqp10_framing0.erl"] + glob(["src/*.erl"]), + hdrs = ["include/amqp10_framing.hrl"] + glob(["include/*.hrl"]), + dest = "ebin", +) + +bazel_erlang_lib( + name = "bazel_erlang_lib", + hdrs = ["include/amqp10_framing.hrl"] + glob(["include/*.hrl"]), + app = ":app_file", + app_name = "amqp10_common", + beam = [":beam_files"], + visibility = ["//visibility:public"], +) + +bazel_erlang_lib( + name = "test_bazel_erlang_lib", + hdrs = ["include/amqp10_framing.hrl"] + glob(["include/*.hrl"]), + app = ":app_file", + app_name = "amqp10_common", + beam = [":beam_files"], + visibility = ["//visibility:public"], +) + +ct_suite( + suite_name = "binary_generator_SUITE", +) diff --git a/deps/amqp_client/BUILD.bazel b/deps/amqp_client/BUILD.bazel new file mode 100644 index 0000000000..900d2a5041 --- /dev/null +++ b/deps/amqp_client/BUILD.bazel @@ -0,0 +1,70 @@ +load("@bazel-erlang//:bazel_erlang_lib.bzl", "erlang_lib", "erlc") +load("@bazel-erlang//:ct.bzl", "ct_suite") +load("//:rabbitmq.bzl", "APP_VERSION", "RABBITMQ_TEST_ERLC_OPTS", "rabbitmq_lib") + +APP_ENV = """[ + {prefer_ipv6, false}, + {ssl_options, []}, + {writer_gc_threshold, 1000000000} + ]""" + +DEPS = [ + "//deps/rabbit_common:bazel_erlang_lib", +] + +rabbitmq_lib( + app_description = "RabbitMQ AMQP Client", + app_env = APP_ENV, + app_module = "amqp_client", + app_name = "amqp_client", + app_registered = [ + "amqp_sup", + ], + extra_apps = [ + "xmerl", + ], + first_srcs = [ + "src/amqp_gen_connection.erl", + "src/amqp_gen_consumer.erl", + ], + deps = DEPS, +) + +ct_suite( + size = "large", + data = [ + "@rabbitmq_ct_helpers//tools/tls-certs:Makefile", + "@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in", + ], + erlc_opts = RABBITMQ_TEST_ERLC_OPTS, + suite_name = "system_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + "RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/rabbitmq-for-tests-run", + "RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/broker-for-tests-home/sbin/rabbitmqctl", + "RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/broker-for-tests-home/sbin/rabbitmq-plugins", + }, + tools = [ + "//:rabbitmq-for-tests-run", + ], + runtime_deps = [ + "//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib", + "//deps/rabbitmq_cli:rabbitmqctl", + "@meck//:bazel_erlang_lib", + "@rabbitmq_ct_helpers//:bazel_erlang_lib", + ], + deps = DEPS, +) + +ct_suite( + size = "small", + erlc_opts = RABBITMQ_TEST_ERLC_OPTS, + suite_name = "unit_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + }, + runtime_deps = [ + "//deps/rabbit:bazel_erlang_lib", + ], + deps = DEPS, +) diff --git a/deps/amqp_client/test/system_SUITE.erl b/deps/amqp_client/test/system_SUITE.erl index 37b0630da9..6e6bc3f93a 100644 --- a/deps/amqp_client/test/system_SUITE.erl +++ b/deps/amqp_client/test/system_SUITE.erl @@ -129,8 +129,12 @@ end_per_suite(Config) -> ] ++ rabbit_ct_broker_helpers:teardown_steps()). ensure_amqp_client_srcdir(Config) -> - rabbit_ct_helpers:ensure_application_srcdir(Config, - amqp_client, amqp_client). + case rabbit_ct_helpers:get_config(Config, rabbitmq_run_cmd) of + undefined -> + rabbit_ct_helpers:ensure_application_srcdir(Config, + amqp_client, amqp_client); + _ -> Config + end. create_unauthorized_user(Config) -> Cmd = ["add_user", ?UNAUTHORIZED_USER, ?UNAUTHORIZED_USER], @@ -1568,30 +1572,28 @@ wait_until_net_ticktime(NetTicktime) -> throw({error, {net_ticktime_not_set, NetTicktime}}) end. -set_resource_alarm(memory, Config) -> +set_resource_alarm(Resource, Config) + when Resource =:= memory orelse Resource =:= disk -> SrcDir = ?config(amqp_client_srcdir, Config), Nodename = rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename), - {ok, _} = rabbit_ct_helpers:make(Config, SrcDir, [ - {"RABBITMQ_NODENAME=~s", [Nodename]}, - "set-resource-alarm", "SOURCE=memory"]); -set_resource_alarm(disk, Config) -> - SrcDir = ?config(amqp_client_srcdir, Config), - Nodename = rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename), - {ok, _} = rabbit_ct_helpers:make(Config, SrcDir, [ - {"RABBITMQ_NODENAME=~s", [Nodename]}, - "set-resource-alarm", "SOURCE=disk"]). + Cmd = [{"RABBITMQ_NODENAME=~s", [Nodename]}, + "set-resource-alarm", + {"SOURCE=~s", [Resource]}], + {ok, _} = case os:getenv("RABBITMQ_RUN") of + false -> rabbit_ct_helpers:make(Config, SrcDir, Cmd); + Run -> rabbit_ct_helpers:exec([Run | Cmd]) + end. -clear_resource_alarm(memory, Config) -> +clear_resource_alarm(Resource, Config) + when Resource =:= memory orelse Resource =:= disk -> SrcDir = ?config(amqp_client_srcdir, Config), Nodename = rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename), - {ok, _}= rabbit_ct_helpers:make(Config, SrcDir, [ - {"RABBITMQ_NODENAME=~s", [Nodename]}, - "clear-resource-alarm", "SOURCE=memory"]); -clear_resource_alarm(disk, Config) -> - SrcDir = ?config(amqp_client_srcdir, Config), - Nodename = rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename), - {ok, _}= rabbit_ct_helpers:make(Config, SrcDir, [ - {"RABBITMQ_NODENAME=~s", [Nodename]}, - "clear-resource-alarm", "SOURCE=disk"]). + Cmd = [{"RABBITMQ_NODENAME=~s", [Nodename]}, + "clear-resource-alarm", + {"SOURCE=~s", [Resource]}], + {ok, _} = case os:getenv("RABBITMQ_RUN") of + false -> rabbit_ct_helpers:make(Config, SrcDir, Cmd); + Run -> rabbit_ct_helpers:exec([Run | Cmd]) + end. fmt(Fmt, Args) -> list_to_binary(rabbit_misc:format(Fmt, Args)). diff --git a/deps/rabbit/BUILD.bazel b/deps/rabbit/BUILD.bazel new file mode 100644 index 0000000000..6c13478064 --- /dev/null +++ b/deps/rabbit/BUILD.bazel @@ -0,0 +1,1122 @@ +load("@bazel-erlang//:bazel_erlang_lib.bzl", "erlang_lib", "erlc", "test_erlang_lib") +load("@bazel-erlang//:ct.bzl", "ct_suite") +load( + "//:rabbitmq.bzl", + "APP_VERSION", + "RABBITMQ_ERLC_OPTS", + "RABBITMQ_TEST_ERLC_OPTS", + "rabbitmq_integration_suite", +) + +exports_files([ + "scripts/rabbitmq-defaults", + "scripts/rabbitmq-env", + "scripts/rabbitmq-plugins", + "scripts/rabbitmq-server", + "scripts/rabbitmqctl", +]) + +_APP_ENV = """[ + {tcp_listeners, [5672]}, + {num_tcp_acceptors, 10}, + {ssl_listeners, []}, + {num_ssl_acceptors, 10}, + {ssl_options, []}, + {vm_memory_high_watermark, 0.4}, + {vm_memory_high_watermark_paging_ratio, 0.5}, + {vm_memory_calculation_strategy, rss}, + {memory_monitor_interval, 2500}, + {disk_free_limit, 50000000}, %% 50MB + {msg_store_index_module, rabbit_msg_store_ets_index}, + {backing_queue_module, rabbit_variable_queue}, + %% 0 ("no limit") would make a better default, but that + %% breaks the QPid Java client + {frame_max, 131072}, + %% see rabbitmq-server#1593 + {channel_max, 2047}, + {connection_max, infinity}, + {heartbeat, 60}, + {msg_store_file_size_limit, 16777216}, + {msg_store_shutdown_timeout, 600000}, + {fhc_write_buffering, true}, + {fhc_read_buffering, false}, + {queue_index_max_journal_entries, 32768}, + {queue_index_embed_msgs_below, 4096}, + {default_user, <<"guest">>}, + {default_pass, <<"guest">>}, + {default_user_tags, [administrator]}, + {default_vhost, <<"/">>}, + {default_permissions, [<<".*">>, <<".*">>, <<".*">>]}, + {loopback_users, [<<"guest">>]}, + {password_hashing_module, rabbit_password_hashing_sha256}, + {server_properties, []}, + {collect_statistics, none}, + {collect_statistics_interval, 5000}, + {mnesia_table_loading_retry_timeout, 30000}, + {mnesia_table_loading_retry_limit, 10}, + {auth_mechanisms, ['PLAIN', 'AMQPLAIN']}, + {auth_backends, [rabbit_auth_backend_internal]}, + {delegate_count, 16}, + {trace_vhosts, []}, + {ssl_cert_login_from, distinguished_name}, + {ssl_handshake_timeout, 5000}, + {ssl_allow_poodle_attack, false}, + {handshake_timeout, 10000}, + {reverse_dns_lookups, false}, + {cluster_partition_handling, ignore}, + {cluster_keepalive_interval, 10000}, + {autoheal_state_transition_timeout, 60000}, + {tcp_listen_options, [{backlog, 128}, + {nodelay, true}, + {linger, {true, 0}}, + {exit_on_close, false} + ]}, + {halt_on_upgrade_failure, true}, + {ssl_apps, [asn1, crypto, public_key, ssl]}, + %% see rabbitmq-server#114 + {mirroring_flow_control, true}, + {mirroring_sync_batch_size, 4096}, + %% see rabbitmq-server#227 and related tickets. + %% msg_store_credit_disc_bound only takes effect when + %% messages are persisted to the message store. If messages + %% are embedded on the queue index, then modifying this + %% setting has no effect because credit_flow is not used when + %% writing to the queue index. See the setting + %% queue_index_embed_msgs_below above. + {msg_store_credit_disc_bound, {4000, 800}}, + {msg_store_io_batch_size, 4096}, + %% see rabbitmq-server#143, + %% rabbitmq-server#949, rabbitmq-server#1098 + {credit_flow_default_credit, {400, 200}}, + {quorum_commands_soft_limit, 32}, + {quorum_cluster_size, 5}, + %% see rabbitmq-server#248 + %% and rabbitmq-server#667 + {channel_operation_timeout, 15000}, + + %% see rabbitmq-server#486 + {autocluster, + [{peer_discovery_backend, rabbit_peer_discovery_classic_config}] + }, + %% used by rabbit_peer_discovery_classic_config + {cluster_nodes, {[], disc}}, + + {config_entry_decoder, [{passphrase, undefined}]}, + + %% rabbitmq-server#973 + {queue_explicit_gc_run_operation_threshold, 1000}, + {lazy_queue_explicit_gc_run_operation_threshold, 1000}, + {background_gc_enabled, false}, + {background_gc_target_interval, 60000}, + %% rabbitmq-server#589 + {proxy_protocol, false}, + {disk_monitor_failure_retries, 10}, + {disk_monitor_failure_retry_interval, 120000}, + %% either "stop_node" or "continue". + %% by default we choose to not terminate the entire node if one + %% vhost had to shut down, see server#1158 and server#1280 + {vhost_restart_strategy, continue}, + %% {global, prefetch count} + {default_consumer_prefetch, {false, 0}}, + %% interval at which the channel can perform periodic actions + {channel_tick_interval, 60000}, + %% Default max message size is 128 MB + {max_message_size, 134217728}, + %% Socket writer will run GC every 1 GB of outgoing data + {writer_gc_threshold, 1000000000}, + %% interval at which connection/channel tracking executes post operations + {tracking_execution_timeout, 15000}, + {stream_messages_soft_limit, 256}, + {track_auth_attempt_source, false} + ] +""" + +DEPS = [ + "//deps/amqp10_common:bazel_erlang_lib", + "//deps/rabbit_common:bazel_erlang_lib", + "@ra//:bazel_erlang_lib", + "@ranch//:bazel_erlang_lib", + "@stdout_formatter//:bazel_erlang_lib", + "@syslog//:bazel_erlang_lib", +] + +RUNTIME_DEPS = [ + "//deps/rabbit/apps/rabbitmq_prelaunch:bazel_erlang_lib", + "@cuttlefish//:bazel_erlang_lib", + "@observer_cli//:bazel_erlang_lib", + "@osiris//:bazel_erlang_lib", + "@recon//:bazel_erlang_lib", + "@sysmon_handler//:bazel_erlang_lib", +] + +APP_REGISTERED = [ + "rabbit_amqqueue_sup", + "rabbit_direct_client_sup", + "rabbit_log", + "rabbit_node_monitor", + "rabbit_router", +] + +EXTRA_APPS = [ + "sasl", + "rabbitmq_prelaunch", + "os_mon", + "inets", + "compiler", + "public_key", + "crypto", + "ssl", + "syntax_tools", + "xmerl", +] + +FIRST_SRCS = [ + "src/rabbit_tracking.erl", + "src/rabbit_queue_type.erl", + "src/rabbit_credential_validator.erl", + "src/rabbit_policy_merge_strategy.erl", + "src/rabbit_queue_master_locator.erl", +] + +ERLC_OPTS = RABBITMQ_ERLC_OPTS + [ + "-DINSTR_MOD=gm", +] + +erlang_lib( + app_description = "RabbitMQ", + app_env = _APP_ENV, + app_module = "rabbit", + app_name = "rabbit", + app_registered = APP_REGISTERED, + app_version = APP_VERSION, + erlc_opts = ERLC_OPTS, + extra_apps = EXTRA_APPS, + first_srcs = FIRST_SRCS, + runtime_deps = RUNTIME_DEPS, + deps = DEPS, +) + +test_erlang_lib( + app_description = "RabbitMQ", + app_env = _APP_ENV, + app_module = "rabbit", + app_name = "rabbit", + app_registered = APP_REGISTERED, + app_version = APP_VERSION, + erlc_opts = ERLC_OPTS + RABBITMQ_TEST_ERLC_OPTS, + extra_apps = EXTRA_APPS, + first_srcs = FIRST_SRCS, + runtime_deps = [ + "//deps/rabbit/apps/rabbitmq_prelaunch:test_bazel_erlang_lib", # <- test version + "@cuttlefish//:bazel_erlang_lib", + "@observer_cli//:bazel_erlang_lib", + "@osiris//:bazel_erlang_lib", + "@recon//:bazel_erlang_lib", + "@sysmon_handler//:bazel_erlang_lib", + ], + deps = [ + "//deps/amqp10_common:bazel_erlang_lib", + "//deps/rabbit_common:test_bazel_erlang_lib", + "@ra//:test_bazel_erlang_lib", # <- test version + "@ranch//:bazel_erlang_lib", + "@stdout_formatter//:bazel_erlang_lib", + "@syslog//:bazel_erlang_lib", + ], +) + +erlc( + name = "quorum_queue_utils", + srcs = [ + "test/quorum_queue_utils.erl", + ], + dest = "test", +) + +erlc( + name = "rabbit_ha_test_consumer", + srcs = [ + "test/rabbit_ha_test_consumer.erl", + ], + dest = "test", + deps = [ + "//deps/amqp_client:bazel_erlang_lib", + "//deps/rabbit_common:bazel_erlang_lib", + ], +) + +erlc( + name = "rabbit_ha_test_producer", + srcs = [ + "test/rabbit_ha_test_producer.erl", + ], + dest = "test", + deps = [ + "//deps/amqp_client:bazel_erlang_lib", + "//deps/rabbit_common:bazel_erlang_lib", + ], +) + +ct_suite( + size = "small", + suite_name = "amqqueue_backward_compatibility_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + }, + deps = DEPS, +) + +ct_suite( + size = "large", + data = [ + "@rabbitmq_ct_helpers//tools/tls-certs:Makefile", + "@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in", + ], + erlc_opts = RABBITMQ_TEST_ERLC_OPTS, + suite_name = "backing_queue_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + "RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/rabbitmq-for-tests-run", + "RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/broker-for-tests-home/sbin/rabbitmqctl", + "RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/broker-for-tests-home/sbin/rabbitmq-plugins", + }, + tools = [ + "//:rabbitmq-for-tests-run", + ], + runtime_deps = [ + "//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib", + "//deps/rabbitmq_cli:rabbitmqctl", + "@rabbitmq_ct_client_helpers//:bazel_erlang_lib", + "@rabbitmq_ct_helpers//:bazel_erlang_lib", + ], + deps = DEPS + [ + "//deps/amqp_client:bazel_erlang_lib", + ], +) + +rabbitmq_integration_suite( + size = "medium", + additional_srcs = [ + "test/dummy_interceptor.erl", + "test/failing_dummy_interceptor.erl", + ], + suite_name = "channel_interceptor_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + additional_srcs = [ + "test/channel_operation_timeout_test_queue.erl", + ], + suite_name = "channel_operation_timeout_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + groups = [ + "cluster_size_2", + "cluster_size_3", + ], + suite_name = "cluster_rename_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "small", + suite_name = "cluster_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "large", + suite_name = "clustering_management_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + data = [ + "test/definition_import_SUITE_data/case1.json", + ], + suite_name = "config_schema_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "confirms_rejects_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + additional_beam = [ + ":quorum_queue_utils", + ], + suite_name = "consumer_timeout_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "crashing_queues_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + additional_beam = [ + ":quorum_queue_utils", + ], + suite_name = "dead_lettering_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "definition_import_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "small", + suite_name = "disconnect_detected_during_alarm_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "large", + groups = [ + "cluster_size_5", + "cluster_size_2", + "cluster_size_3", + ], + suite_name = "dynamic_ha_SUITE", + deps = DEPS + [ + "@proper//:bazel_erlang_lib", + ], +) + +rabbitmq_integration_suite( + size = "medium", + additional_beam = [ + ":quorum_queue_utils", + ], + suite_name = "dynamic_qq_SUITE", + deps = DEPS + [ + "@proper//:bazel_erlang_lib", + ], +) + +rabbitmq_integration_suite( + size = "large", + additional_beam = [ + ":sync_detection_SUITE_beam_files", + ], + suite_name = "eager_sync_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "large", + groups = [ + "registry", + "enabling_on_single_node", + "enabling_in_cluster", + "clustering", + "activating_plugin", + ], + suite_name = "feature_flags_SUITE", + # The enabling_* tests chmod files and then expect writes to be blocked. + # This probably doesn't work because we are root in the remote docker image. + tags = ["exclusive"], + runtime_deps = [ + "//deps/rabbit/apps/rabbitmq_prelaunch:test_bazel_erlang_lib", + "//deps/rabbit/test/feature_flags_SUITE_data/my_plugin:bazel_erlang_lib", + ], + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "lazy_queue_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "list_consumers_sanity_check_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "list_queues_online_and_offline_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + additional_beam = [ + ":quorum_queue_utils", + ], + suite_name = "maintenance_mode_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + additional_beam = [ + ":rabbit_ha_test_consumer", + ":rabbit_ha_test_producer", + ], + suite_name = "many_node_ha_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "small", + suite_name = "message_size_limit_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "metrics_SUITE", + deps = DEPS + [ + "@proper//:bazel_erlang_lib", + ], +) + +ct_suite( + size = "small", + additional_srcs = [ + "test/mirrored_supervisor_SUITE_gs.erl", + ], + erlc_opts = RABBITMQ_TEST_ERLC_OPTS, + suite_name = "mirrored_supervisor_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + }, + deps = [ + "//deps/rabbit_common:bazel_erlang_lib", + ], +) + +ct_suite( + size = "small", + erlc_opts = RABBITMQ_TEST_ERLC_OPTS, + suite_name = "msg_store_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + }, + deps = [ + "//deps/rabbit_common:bazel_erlang_lib", + ], +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "peer_discovery_classic_config_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "peer_discovery_dns_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "large", + suite_name = "per_user_connection_channel_limit_partitions_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "per_user_connection_channel_limit_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "per_user_connection_channel_tracking_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "per_user_connection_tracking_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "per_vhost_connection_limit_partitions_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "per_vhost_connection_limit_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "per_vhost_msg_store_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "per_vhost_queue_limit_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "policy_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "priority_queue_recovery_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "priority_queue_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "product_info_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "proxy_protocol_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + additional_beam = [ + ":quorum_queue_utils", + ], + suite_name = "publisher_confirms_parallel_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "queue_length_limits_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "queue_master_location_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "large", + additional_beam = [ + ":quorum_queue_utils", + ], + groups = [ + "classic_queue", + "mirrored_queue", + "quorum_queue", + "quorum_queue_in_memory_limit", + "quorum_queue_in_memory_bytes", + "stream_queue", + ], + suite_name = "queue_parallel_SUITE", + runtime_deps = [ + "//deps/rabbit/apps/rabbitmq_prelaunch:test_bazel_erlang_lib", + ], + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "queue_type_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "large", + additional_beam = [ + ":quorum_queue_utils", + ], + groups = [ + "single_node", + "unclustered", + "clustered", + ], + suite_name = "quorum_queue_SUITE", + runtime_deps = [ + "//deps/rabbit/apps/rabbitmq_prelaunch:test_bazel_erlang_lib", + ], + deps = DEPS, +) + +ct_suite( + size = "small", + erlc_opts = RABBITMQ_TEST_ERLC_OPTS, + suite_name = "rabbit_confirms_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + }, + deps = [ + "//deps/rabbit_common:bazel_erlang_lib", + ], +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "rabbit_core_metrics_gc_SUITE", + deps = DEPS, +) + +ct_suite( + size = "small", + erlc_opts = RABBITMQ_TEST_ERLC_OPTS, + suite_name = "rabbit_fifo_int_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + }, + runtime_deps = [ + "@aten//:bazel_erlang_lib", + "@gen_batch_server//:bazel_erlang_lib", + "@meck//:bazel_erlang_lib", + "@ra//:test_bazel_erlang_lib", + ], + deps = [ + "//deps/rabbit_common:bazel_erlang_lib", + ], +) + +erlc( + name = "test_util", + srcs = [ + "test/test_util.erl", + ], +) + +ct_suite( + size = "medium", + additional_beam = [ + ":test_util", + ], + additional_hdrs = [ + "src/rabbit_fifo.hrl", + ], + erlc_opts = RABBITMQ_TEST_ERLC_OPTS + [ + "-I deps/rabbit", # allow rabbit_fifo.hrl to be included at src/rabbit_fifo.hrl + ], + suite_name = "rabbit_fifo_prop_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + }, + runtime_deps = [ + "@ra//:bazel_erlang_lib", + ], + deps = [ + "//deps/rabbit_common:bazel_erlang_lib", + "@proper//:bazel_erlang_lib", + ], +) + +ct_suite( + size = "medium", + additional_beam = [ + ":test_util", + ":rabbit_fifo_v0_SUITE_beam_files", + ], + additional_hdrs = [ + "src/rabbit_fifo.hrl", + ], + erlc_opts = RABBITMQ_TEST_ERLC_OPTS + [ + "-I deps/rabbit", # allow rabbit_fifo.hrl to be included at src/rabbit_fifo.hrl + ], + suite_name = "rabbit_fifo_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + }, + runtime_deps = [ + "@meck//:bazel_erlang_lib", + "@ra//:bazel_erlang_lib", + ], + deps = [ + "//deps/rabbit_common:bazel_erlang_lib", + ], +) + +ct_suite( + size = "medium", + additional_beam = [ + ":test_util", + ], + additional_hdrs = [ + "src/rabbit_fifo_v0.hrl", + ], + erlc_opts = RABBITMQ_TEST_ERLC_OPTS + [ + "-I deps/rabbit", # allow rabbit_fifo.hrl to be included at src/rabbit_fifo.hrl + ], + suite_name = "rabbit_fifo_v0_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + }, + runtime_deps = [ + "@meck//:bazel_erlang_lib", + "@ra//:bazel_erlang_lib", + ], + deps = [ + "//deps/rabbit_common:bazel_erlang_lib", + ], +) + +ct_suite( + size = "medium", + erlc_opts = RABBITMQ_TEST_ERLC_OPTS, + suite_name = "rabbit_msg_record_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + }, + deps = [ + "//deps/amqp10_common:bazel_erlang_lib", + "//deps/rabbit_common:bazel_erlang_lib", + ], +) + +rabbitmq_integration_suite( + size = "large", + additional_beam = [ + ":quorum_queue_utils", + ], + groups = [ + "single_node", + "cluster_size_2", + "cluster_size_3", + "unclustered_size_3_1", + "unclustered_size_3_2", + "unclustered_size_3_3", + "cluster_size_3_1", + ], + suite_name = "rabbit_stream_queue_SUITE", + deps = DEPS + [ + "@proper//:bazel_erlang_lib", + ], +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "rabbitmq_queues_cli_integration_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "rabbitmqctl_integration_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "rabbitmqctl_shutdown_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "signal_handling_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "large", + additional_beam = [ + ":rabbit_ha_test_consumer", + ":rabbit_ha_test_producer", + ], + groups = [ + "cluster_size_2", + "cluster_size_3", + ], + suite_name = "simple_ha_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + additional_beam = [ + ":quorum_queue_utils", + ], + groups = [ + "classic_queue", + "quorum_queue", + ], + suite_name = "single_active_consumer_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "sync_detection_SUITE", + deps = DEPS, +) + +ct_suite( + erlc_opts = RABBITMQ_TEST_ERLC_OPTS, + suite_name = "term_to_binary_compat_prop_SUITE", + deps = [ + "//deps/rabbit_common:bazel_erlang_lib", + "@proper//:bazel_erlang_lib", + "@rabbitmq_ct_helpers//:bazel_erlang_lib", + ], +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "topic_permission_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + additional_srcs = [ + "test/rabbit_auth_backend_context_propagation_mock.erl", + "test/rabbit_foo_protocol_connection_info.erl", + ], + suite_name = "unit_access_control_authn_authz_context_propagation_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "unit_access_control_credential_validation_SUITE", + deps = DEPS + [ + "@proper//:bazel_erlang_lib", + ], +) + +rabbitmq_integration_suite( + size = "medium", + additional_srcs = [ + "test/rabbit_dummy_protocol_connection_info.erl", + ], + suite_name = "unit_access_control_SUITE", + deps = DEPS, +) + +ct_suite( + size = "small", + erlc_opts = RABBITMQ_TEST_ERLC_OPTS, + suite_name = "unit_amqp091_content_framing_SUITE", + deps = [ + "//deps/rabbit_common:bazel_erlang_lib", + ], +) + +rabbitmq_integration_suite( + size = "small", + suite_name = "unit_amqp091_server_properties_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "small", + suite_name = "unit_app_management_SUITE", + deps = DEPS, +) + +ct_suite( + size = "small", + erlc_opts = RABBITMQ_TEST_ERLC_OPTS, + suite_name = "unit_cluster_formation_locking_mocks_SUITE", + runtime_deps = [ + "@meck//:bazel_erlang_lib", + ], +) + +ct_suite( + size = "small", + erlc_opts = RABBITMQ_TEST_ERLC_OPTS, + suite_name = "unit_collections_SUITE", + runtime_deps = [ + "//deps/rabbit_common:bazel_erlang_lib", + ], +) + +ct_suite( + size = "medium", + erlc_opts = RABBITMQ_TEST_ERLC_OPTS, + suite_name = "unit_config_value_encryption_SUITE", + runtime_deps = [ + "//deps/rabbit/apps/rabbitmq_prelaunch:test_bazel_erlang_lib", + "//deps/rabbit_common:test_bazel_erlang_lib", + "@credentials_obfuscation//:bazel_erlang_lib", + ], +) + +rabbitmq_integration_suite( + size = "small", + suite_name = "unit_connection_tracking_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "small", + suite_name = "unit_credit_flow_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "small", + suite_name = "unit_disk_monitor_mocks_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "small", + suite_name = "unit_disk_monitor_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "small", + suite_name = "unit_file_handle_cache_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "small", + suite_name = "unit_gen_server2_SUITE", + deps = DEPS, +) + +ct_suite( + size = "small", + erlc_opts = RABBITMQ_TEST_ERLC_OPTS, + suite_name = "unit_gm_SUITE", + runtime_deps = [ + "@meck//:bazel_erlang_lib", + "@rabbitmq_ct_helpers//:bazel_erlang_lib", + ], +) + +rabbitmq_integration_suite( + size = "small", + suite_name = "unit_log_management_SUITE", + deps = DEPS, +) + +ct_suite( + size = "small", + erlc_opts = RABBITMQ_TEST_ERLC_OPTS, + suite_name = "unit_operator_policy_SUITE", + deps = [ + "//deps/rabbit_common:test_bazel_erlang_lib", + ], +) + +ct_suite( + size = "small", + erlc_opts = RABBITMQ_TEST_ERLC_OPTS, + suite_name = "unit_pg_local_SUITE", +) + +ct_suite( + size = "small", + erlc_opts = RABBITMQ_TEST_ERLC_OPTS, + suite_name = "unit_plugin_directories_SUITE", + deps = [ + "//deps/rabbit_common:test_bazel_erlang_lib", + ], +) + +ct_suite( + size = "small", + erlc_opts = RABBITMQ_TEST_ERLC_OPTS, + suite_name = "unit_plugin_versioning_SUITE", + runtime_deps = [ + "@rabbitmq_ct_helpers//:bazel_erlang_lib", + ], + deps = [ + "//deps/amqp_client:bazel_erlang_lib", + "//deps/rabbit_common:test_bazel_erlang_lib", + ], +) + +rabbitmq_integration_suite( + size = "small", + suite_name = "unit_policy_validators_SUITE", + deps = DEPS, +) + +ct_suite( + size = "small", + erlc_opts = RABBITMQ_TEST_ERLC_OPTS, + suite_name = "unit_priority_queue_SUITE", +) + +ct_suite( + size = "small", + erlc_opts = RABBITMQ_TEST_ERLC_OPTS, + suite_name = "unit_queue_consumers_SUITE", +) + +rabbitmq_integration_suite( + size = "small", + additional_srcs = [ + "test/dummy_event_receiver.erl", + ], + suite_name = "unit_stats_and_metrics_SUITE", + deps = DEPS, +) + +ct_suite( + size = "small", + additional_srcs = [ + "test/dummy_supervisor2.erl", + ], + erlc_opts = RABBITMQ_TEST_ERLC_OPTS, + suite_name = "unit_supervisor2_SUITE", + deps = [ + "//deps/rabbit_common:bazel_erlang_lib", + ], +) + +rabbitmq_integration_suite( + size = "small", + suite_name = "unit_vm_memory_monitor_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + suite_name = "upgrade_preparation_SUITE", + deps = DEPS, +) + +rabbitmq_integration_suite( + size = "medium", + groups = [ + "cluster_size_1_network", + "cluster_size_2_network", + "cluster_size_1_direct", + "cluster_size_2_direct", + ], + suite_name = "vhost_SUITE", + deps = DEPS, +) diff --git a/deps/rabbit/apps/rabbitmq_prelaunch/BUILD.bazel b/deps/rabbit/apps/rabbitmq_prelaunch/BUILD.bazel new file mode 100644 index 0000000000..07ad74eb6b --- /dev/null +++ b/deps/rabbit/apps/rabbitmq_prelaunch/BUILD.bazel @@ -0,0 +1,17 @@ +load("//:rabbitmq.bzl", "rabbitmq_lib") + +DEPS = [ + "//deps/rabbit_common:bazel_erlang_lib", +] + +RUNTIME_DEPS = [ + "@jsx//:bazel_erlang_lib", +] + +rabbitmq_lib( + app_description = "RabbitMQ prelaunch setup", + app_module = "rabbit_prelaunch_app", + app_name = "rabbitmq_prelaunch", + runtime_deps = RUNTIME_DEPS, + deps = DEPS, +) diff --git a/deps/rabbit/src/rabbit.erl b/deps/rabbit/src/rabbit.erl index 71c375034e..4329cebe40 100644 --- a/deps/rabbit/src/rabbit.erl +++ b/deps/rabbit/src/rabbit.erl @@ -270,8 +270,8 @@ %%--------------------------------------------------------------------------- --include("rabbit_framing.hrl"). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit_framing.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -define(APPS, [os_mon, mnesia, rabbit_common, rabbitmq_prelaunch, ra, sysmon_handler, rabbit, osiris]). diff --git a/deps/rabbit/src/rabbit_access_control.erl b/deps/rabbit/src/rabbit_access_control.erl index 5c5de6822e..5411969759 100644 --- a/deps/rabbit/src/rabbit_access_control.erl +++ b/deps/rabbit/src/rabbit_access_control.erl @@ -7,7 +7,7 @@ -module(rabbit_access_control). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -export([check_user_pass_login/2, check_user_login/2, check_user_loopback/2, check_vhost_access/4, check_resource_access/4, check_topic_access/4]). diff --git a/deps/rabbit/src/rabbit_amqqueue_sup.erl b/deps/rabbit/src/rabbit_amqqueue_sup.erl index b67ce46a8d..5765112194 100644 --- a/deps/rabbit/src/rabbit_amqqueue_sup.erl +++ b/deps/rabbit/src/rabbit_amqqueue_sup.erl @@ -13,7 +13,7 @@ -export([init/1]). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). %%---------------------------------------------------------------------------- diff --git a/deps/rabbit/src/rabbit_amqqueue_sup_sup.erl b/deps/rabbit/src/rabbit_amqqueue_sup_sup.erl index 016c8d2a8f..b10702c87b 100644 --- a/deps/rabbit/src/rabbit_amqqueue_sup_sup.erl +++ b/deps/rabbit/src/rabbit_amqqueue_sup_sup.erl @@ -15,7 +15,7 @@ -export([init/1]). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -define(SERVER, ?MODULE). diff --git a/deps/rabbit/src/rabbit_auth_backend_internal.erl b/deps/rabbit/src/rabbit_auth_backend_internal.erl index dcf4fd3a8c..96c1a620b7 100644 --- a/deps/rabbit/src/rabbit_auth_backend_internal.erl +++ b/deps/rabbit/src/rabbit_auth_backend_internal.erl @@ -6,7 +6,7 @@ %% -module(rabbit_auth_backend_internal). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -behaviour(rabbit_authn_backend). -behaviour(rabbit_authz_backend). diff --git a/deps/rabbit/src/rabbit_auth_mechanism_amqplain.erl b/deps/rabbit/src/rabbit_auth_mechanism_amqplain.erl index e541ef2110..3751fafa73 100644 --- a/deps/rabbit/src/rabbit_auth_mechanism_amqplain.erl +++ b/deps/rabbit/src/rabbit_auth_mechanism_amqplain.erl @@ -6,7 +6,7 @@ %% -module(rabbit_auth_mechanism_amqplain). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -behaviour(rabbit_auth_mechanism). diff --git a/deps/rabbit/src/rabbit_auth_mechanism_cr_demo.erl b/deps/rabbit/src/rabbit_auth_mechanism_cr_demo.erl index a440766790..a4ef834387 100644 --- a/deps/rabbit/src/rabbit_auth_mechanism_cr_demo.erl +++ b/deps/rabbit/src/rabbit_auth_mechanism_cr_demo.erl @@ -6,7 +6,7 @@ %% -module(rabbit_auth_mechanism_cr_demo). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -behaviour(rabbit_auth_mechanism). diff --git a/deps/rabbit/src/rabbit_auth_mechanism_plain.erl b/deps/rabbit/src/rabbit_auth_mechanism_plain.erl index 5091cbd16d..893a723b20 100644 --- a/deps/rabbit/src/rabbit_auth_mechanism_plain.erl +++ b/deps/rabbit/src/rabbit_auth_mechanism_plain.erl @@ -6,7 +6,7 @@ %% -module(rabbit_auth_mechanism_plain). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -behaviour(rabbit_auth_mechanism). diff --git a/deps/rabbit/src/rabbit_basic.erl b/deps/rabbit/src/rabbit_basic.erl index c567714555..cc7c00047e 100644 --- a/deps/rabbit/src/rabbit_basic.erl +++ b/deps/rabbit/src/rabbit_basic.erl @@ -6,8 +6,8 @@ %% -module(rabbit_basic). --include("rabbit.hrl"). --include("rabbit_framing.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit_framing.hrl"). -export([publish/4, publish/5, publish/1, message/3, message/4, properties/1, prepend_table_header/3, diff --git a/deps/rabbit/src/rabbit_channel_interceptor.erl b/deps/rabbit/src/rabbit_channel_interceptor.erl index 9a68f50d5d..095bbd2583 100644 --- a/deps/rabbit/src/rabbit_channel_interceptor.erl +++ b/deps/rabbit/src/rabbit_channel_interceptor.erl @@ -7,8 +7,8 @@ -module(rabbit_channel_interceptor). --include("rabbit_framing.hrl"). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit_framing.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -export([init/1, intercept_in/3]). diff --git a/deps/rabbit/src/rabbit_channel_sup.erl b/deps/rabbit/src/rabbit_channel_sup.erl index ec0ff9d024..0b54fdfd54 100644 --- a/deps/rabbit/src/rabbit_channel_sup.erl +++ b/deps/rabbit/src/rabbit_channel_sup.erl @@ -23,7 +23,7 @@ -export([init/1]). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). %%---------------------------------------------------------------------------- diff --git a/deps/rabbit/src/rabbit_channel_sup_sup.erl b/deps/rabbit/src/rabbit_channel_sup_sup.erl index c174579d24..6c7d4f8808 100644 --- a/deps/rabbit/src/rabbit_channel_sup_sup.erl +++ b/deps/rabbit/src/rabbit_channel_sup_sup.erl @@ -18,7 +18,7 @@ -export([init/1]). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). %%---------------------------------------------------------------------------- diff --git a/deps/rabbit/src/rabbit_channel_tracking.erl b/deps/rabbit/src/rabbit_channel_tracking.erl index b122e2b543..55c146c48b 100644 --- a/deps/rabbit/src/rabbit_channel_tracking.erl +++ b/deps/rabbit/src/rabbit_channel_tracking.erl @@ -32,7 +32,7 @@ get_all_tracked_channel_table_names_for_node/1, delete_tracked_channel_user_entry/1]). --include_lib("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -import(rabbit_misc, [pget/2]). diff --git a/deps/rabbit/src/rabbit_channel_tracking_handler.erl b/deps/rabbit/src/rabbit_channel_tracking_handler.erl index d7f2094de2..8d436829a4 100644 --- a/deps/rabbit/src/rabbit_channel_tracking_handler.erl +++ b/deps/rabbit/src/rabbit_channel_tracking_handler.erl @@ -21,7 +21,7 @@ -export([init/1, handle_call/2, handle_event/2, handle_info/2, terminate/2, code_change/3]). --include_lib("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -rabbit_boot_step({?MODULE, [{description, "channel tracking event handler"}, diff --git a/deps/rabbit/src/rabbit_client_sup.erl b/deps/rabbit/src/rabbit_client_sup.erl index 3c7895b23b..dc80025796 100644 --- a/deps/rabbit/src/rabbit_client_sup.erl +++ b/deps/rabbit/src/rabbit_client_sup.erl @@ -13,7 +13,7 @@ -export([init/1]). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). %%---------------------------------------------------------------------------- diff --git a/deps/rabbit/src/rabbit_connection_helper_sup.erl b/deps/rabbit/src/rabbit_connection_helper_sup.erl index 7a3a4e30e9..406e8c95fb 100644 --- a/deps/rabbit/src/rabbit_connection_helper_sup.erl +++ b/deps/rabbit/src/rabbit_connection_helper_sup.erl @@ -24,7 +24,7 @@ -export([init/1]). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). %%---------------------------------------------------------------------------- diff --git a/deps/rabbit/src/rabbit_connection_sup.erl b/deps/rabbit/src/rabbit_connection_sup.erl index 4f8664d9b9..173015d7c4 100644 --- a/deps/rabbit/src/rabbit_connection_sup.erl +++ b/deps/rabbit/src/rabbit_connection_sup.erl @@ -23,7 +23,7 @@ -export([init/1]). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). %%---------------------------------------------------------------------------- diff --git a/deps/rabbit/src/rabbit_connection_tracking.erl b/deps/rabbit/src/rabbit_connection_tracking.erl index ab59f4a525..7213f10645 100644 --- a/deps/rabbit/src/rabbit_connection_tracking.erl +++ b/deps/rabbit/src/rabbit_connection_tracking.erl @@ -53,7 +53,7 @@ lookup/1, count/0]). --include_lib("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -import(rabbit_misc, [pget/2]). diff --git a/deps/rabbit/src/rabbit_connection_tracking_handler.erl b/deps/rabbit/src/rabbit_connection_tracking_handler.erl index c65b3c140f..f9df05431d 100644 --- a/deps/rabbit/src/rabbit_connection_tracking_handler.erl +++ b/deps/rabbit/src/rabbit_connection_tracking_handler.erl @@ -21,7 +21,7 @@ %% for compatibility with previous versions of CLI tools -export([close_connections/3]). --include_lib("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -rabbit_boot_step({?MODULE, [{description, "connection tracking event handler"}, diff --git a/deps/rabbit/src/rabbit_credential_validation.erl b/deps/rabbit/src/rabbit_credential_validation.erl index b8055e6049..0075f5a58a 100644 --- a/deps/rabbit/src/rabbit_credential_validation.erl +++ b/deps/rabbit/src/rabbit_credential_validation.erl @@ -7,7 +7,7 @@ -module(rabbit_credential_validation). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). %% used for backwards compatibility -define(DEFAULT_BACKEND, rabbit_credential_validator_accept_everything). diff --git a/deps/rabbit/src/rabbit_credential_validator.erl b/deps/rabbit/src/rabbit_credential_validator.erl index 7bcb264bda..50ab695501 100644 --- a/deps/rabbit/src/rabbit_credential_validator.erl +++ b/deps/rabbit/src/rabbit_credential_validator.erl @@ -7,7 +7,7 @@ -module(rabbit_credential_validator). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). %% Validates a password. Used by `rabbit_auth_backend_internal`. %% diff --git a/deps/rabbit/src/rabbit_credential_validator_accept_everything.erl b/deps/rabbit/src/rabbit_credential_validator_accept_everything.erl index abfff7a25d..413b1548bf 100644 --- a/deps/rabbit/src/rabbit_credential_validator_accept_everything.erl +++ b/deps/rabbit/src/rabbit_credential_validator_accept_everything.erl @@ -7,7 +7,7 @@ -module(rabbit_credential_validator_accept_everything). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -behaviour(rabbit_credential_validator). diff --git a/deps/rabbit/src/rabbit_credential_validator_min_password_length.erl b/deps/rabbit/src/rabbit_credential_validator_min_password_length.erl index 4f49a6f2cc..1b4e6f7ac3 100644 --- a/deps/rabbit/src/rabbit_credential_validator_min_password_length.erl +++ b/deps/rabbit/src/rabbit_credential_validator_min_password_length.erl @@ -7,7 +7,7 @@ -module(rabbit_credential_validator_min_password_length). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -behaviour(rabbit_credential_validator). diff --git a/deps/rabbit/src/rabbit_credential_validator_password_regexp.erl b/deps/rabbit/src/rabbit_credential_validator_password_regexp.erl index 3b490ad929..f37ef1d1a8 100644 --- a/deps/rabbit/src/rabbit_credential_validator_password_regexp.erl +++ b/deps/rabbit/src/rabbit_credential_validator_password_regexp.erl @@ -10,7 +10,7 @@ %% password against a pre-configured regular expression. -module(rabbit_credential_validator_password_regexp). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -behaviour(rabbit_credential_validator). diff --git a/deps/rabbit/src/rabbit_dead_letter.erl b/deps/rabbit/src/rabbit_dead_letter.erl index 74ce2d6af7..f13b409dce 100644 --- a/deps/rabbit/src/rabbit_dead_letter.erl +++ b/deps/rabbit/src/rabbit_dead_letter.erl @@ -9,8 +9,8 @@ -export([publish/5]). --include("rabbit.hrl"). --include("rabbit_framing.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit_framing.hrl"). %%---------------------------------------------------------------------------- diff --git a/deps/rabbit/src/rabbit_direct.erl b/deps/rabbit/src/rabbit_direct.erl index 398dea3cc0..e2d057802b 100644 --- a/deps/rabbit/src/rabbit_direct.erl +++ b/deps/rabbit/src/rabbit_direct.erl @@ -18,8 +18,8 @@ %% For testing only -export([extract_extra_auth_props/4]). --include("rabbit.hrl"). --include("rabbit_misc.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit_misc.hrl"). %%---------------------------------------------------------------------------- diff --git a/deps/rabbit/src/rabbit_exchange.erl b/deps/rabbit/src/rabbit_exchange.erl index 5a1447a427..5406b541dc 100644 --- a/deps/rabbit/src/rabbit_exchange.erl +++ b/deps/rabbit/src/rabbit_exchange.erl @@ -6,8 +6,8 @@ %% -module(rabbit_exchange). --include("rabbit.hrl"). --include("rabbit_framing.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit_framing.hrl"). -export([recover/1, policy_changed/2, callback/4, declare/7, assert_equivalence/6, assert_args_equivalence/2, check_type/1, diff --git a/deps/rabbit/src/rabbit_exchange_decorator.erl b/deps/rabbit/src/rabbit_exchange_decorator.erl index 1bd7e40359..79ffda7d9c 100644 --- a/deps/rabbit/src/rabbit_exchange_decorator.erl +++ b/deps/rabbit/src/rabbit_exchange_decorator.erl @@ -7,7 +7,7 @@ -module(rabbit_exchange_decorator). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -export([select/2, set/1]). diff --git a/deps/rabbit/src/rabbit_exchange_parameters.erl b/deps/rabbit/src/rabbit_exchange_parameters.erl index 4c3bbfe140..4cee3a49cd 100644 --- a/deps/rabbit/src/rabbit_exchange_parameters.erl +++ b/deps/rabbit/src/rabbit_exchange_parameters.erl @@ -9,7 +9,7 @@ -behaviour(rabbit_runtime_parameter). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -export([register/0]). -export([validate/5, notify/5, notify_clear/4]). diff --git a/deps/rabbit/src/rabbit_exchange_type_direct.erl b/deps/rabbit/src/rabbit_exchange_type_direct.erl index f6a3e5d49a..a4177dd281 100644 --- a/deps/rabbit/src/rabbit_exchange_type_direct.erl +++ b/deps/rabbit/src/rabbit_exchange_type_direct.erl @@ -6,7 +6,7 @@ %% -module(rabbit_exchange_type_direct). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -behaviour(rabbit_exchange_type). diff --git a/deps/rabbit/src/rabbit_exchange_type_fanout.erl b/deps/rabbit/src/rabbit_exchange_type_fanout.erl index 007f6bf5d3..e376ebb9e4 100644 --- a/deps/rabbit/src/rabbit_exchange_type_fanout.erl +++ b/deps/rabbit/src/rabbit_exchange_type_fanout.erl @@ -6,7 +6,7 @@ %% -module(rabbit_exchange_type_fanout). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -behaviour(rabbit_exchange_type). diff --git a/deps/rabbit/src/rabbit_exchange_type_headers.erl b/deps/rabbit/src/rabbit_exchange_type_headers.erl index 4bbb41c5cf..233dd50869 100644 --- a/deps/rabbit/src/rabbit_exchange_type_headers.erl +++ b/deps/rabbit/src/rabbit_exchange_type_headers.erl @@ -6,8 +6,8 @@ %% -module(rabbit_exchange_type_headers). --include("rabbit.hrl"). --include("rabbit_framing.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit_framing.hrl"). -behaviour(rabbit_exchange_type). diff --git a/deps/rabbit/src/rabbit_exchange_type_invalid.erl b/deps/rabbit/src/rabbit_exchange_type_invalid.erl index 53a66f6891..1c4552c428 100644 --- a/deps/rabbit/src/rabbit_exchange_type_invalid.erl +++ b/deps/rabbit/src/rabbit_exchange_type_invalid.erl @@ -6,7 +6,7 @@ %% -module(rabbit_exchange_type_invalid). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -behaviour(rabbit_exchange_type). diff --git a/deps/rabbit/src/rabbit_exchange_type_topic.erl b/deps/rabbit/src/rabbit_exchange_type_topic.erl index 7d3e8850b8..775500f133 100644 --- a/deps/rabbit/src/rabbit_exchange_type_topic.erl +++ b/deps/rabbit/src/rabbit_exchange_type_topic.erl @@ -7,7 +7,7 @@ -module(rabbit_exchange_type_topic). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -behaviour(rabbit_exchange_type). diff --git a/deps/rabbit/src/rabbit_limiter.erl b/deps/rabbit/src/rabbit_limiter.erl index 46ba0a1dd9..93946836eb 100644 --- a/deps/rabbit/src/rabbit_limiter.erl +++ b/deps/rabbit/src/rabbit_limiter.erl @@ -110,7 +110,7 @@ -module(rabbit_limiter). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -behaviour(gen_server2). diff --git a/deps/rabbit/src/rabbit_maintenance.erl b/deps/rabbit/src/rabbit_maintenance.erl index f8e93b4d6d..c04b589b62 100644 --- a/deps/rabbit/src/rabbit_maintenance.erl +++ b/deps/rabbit/src/rabbit_maintenance.erl @@ -7,7 +7,7 @@ -module(rabbit_maintenance). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -export([ is_enabled/0, diff --git a/deps/rabbit/src/rabbit_mirror_queue_mode_all.erl b/deps/rabbit/src/rabbit_mirror_queue_mode_all.erl index f2b88cf9d0..ce3e128de1 100644 --- a/deps/rabbit/src/rabbit_mirror_queue_mode_all.erl +++ b/deps/rabbit/src/rabbit_mirror_queue_mode_all.erl @@ -7,7 +7,7 @@ -module(rabbit_mirror_queue_mode_all). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -behaviour(rabbit_mirror_queue_mode). diff --git a/deps/rabbit/src/rabbit_mirror_queue_mode_exactly.erl b/deps/rabbit/src/rabbit_mirror_queue_mode_exactly.erl index c8ff207f7f..df6735ecd9 100644 --- a/deps/rabbit/src/rabbit_mirror_queue_mode_exactly.erl +++ b/deps/rabbit/src/rabbit_mirror_queue_mode_exactly.erl @@ -7,7 +7,7 @@ -module(rabbit_mirror_queue_mode_exactly). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -behaviour(rabbit_mirror_queue_mode). diff --git a/deps/rabbit/src/rabbit_mirror_queue_mode_nodes.erl b/deps/rabbit/src/rabbit_mirror_queue_mode_nodes.erl index 5580602b90..3d9ff5d87b 100644 --- a/deps/rabbit/src/rabbit_mirror_queue_mode_nodes.erl +++ b/deps/rabbit/src/rabbit_mirror_queue_mode_nodes.erl @@ -7,7 +7,7 @@ -module(rabbit_mirror_queue_mode_nodes). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -behaviour(rabbit_mirror_queue_mode). diff --git a/deps/rabbit/src/rabbit_mnesia_rename.erl b/deps/rabbit/src/rabbit_mnesia_rename.erl index 351679f616..d8f6237e42 100644 --- a/deps/rabbit/src/rabbit_mnesia_rename.erl +++ b/deps/rabbit/src/rabbit_mnesia_rename.erl @@ -6,7 +6,7 @@ %% -module(rabbit_mnesia_rename). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -export([rename/2]). -export([maybe_finish/1]). diff --git a/deps/rabbit/src/rabbit_msg_file.erl b/deps/rabbit/src/rabbit_msg_file.erl index abbd24b8a4..f87c88f849 100644 --- a/deps/rabbit/src/rabbit_msg_file.erl +++ b/deps/rabbit/src/rabbit_msg_file.erl @@ -11,7 +11,7 @@ %%---------------------------------------------------------------------------- --include("rabbit_msg_store.hrl"). +-include_lib("rabbit_common/include/rabbit_msg_store.hrl"). -define(INTEGER_SIZE_BYTES, 8). -define(INTEGER_SIZE_BITS, (8 * ?INTEGER_SIZE_BYTES)). diff --git a/deps/rabbit/src/rabbit_msg_record.erl b/deps/rabbit/src/rabbit_msg_record.erl index 3ebe14cb9f..247a9d8677 100644 --- a/deps/rabbit/src/rabbit_msg_record.erl +++ b/deps/rabbit/src/rabbit_msg_record.erl @@ -10,8 +10,8 @@ message_annotation/3 ]). --include("rabbit.hrl"). --include("rabbit_framing.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit_framing.hrl"). -include_lib("amqp10_common/include/amqp10_framing.hrl"). -type maybe(T) :: T | undefined. diff --git a/deps/rabbit/src/rabbit_msg_store.erl b/deps/rabbit/src/rabbit_msg_store.erl index bdc706ad78..aa7fbcffc1 100644 --- a/deps/rabbit/src/rabbit_msg_store.erl +++ b/deps/rabbit/src/rabbit_msg_store.erl @@ -27,7 +27,7 @@ %%---------------------------------------------------------------------------- --include("rabbit_msg_store.hrl"). +-include_lib("rabbit_common/include/rabbit_msg_store.hrl"). -define(SYNC_INTERVAL, 25). %% milliseconds -define(CLEAN_FILENAME, "clean.dot"). diff --git a/deps/rabbit/src/rabbit_msg_store_ets_index.erl b/deps/rabbit/src/rabbit_msg_store_ets_index.erl index 3c8512babf..d3e4ac31ce 100644 --- a/deps/rabbit/src/rabbit_msg_store_ets_index.erl +++ b/deps/rabbit/src/rabbit_msg_store_ets_index.erl @@ -7,7 +7,7 @@ -module(rabbit_msg_store_ets_index). --include("rabbit_msg_store.hrl"). +-include_lib("rabbit_common/include/rabbit_msg_store.hrl"). -behaviour(rabbit_msg_store_index). diff --git a/deps/rabbit/src/rabbit_msg_store_gc.erl b/deps/rabbit/src/rabbit_msg_store_gc.erl index ba9395942e..5430f33530 100644 --- a/deps/rabbit/src/rabbit_msg_store_gc.erl +++ b/deps/rabbit/src/rabbit_msg_store_gc.erl @@ -22,7 +22,7 @@ msg_store_state }). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). %%---------------------------------------------------------------------------- diff --git a/deps/rabbit/src/rabbit_networking.erl b/deps/rabbit/src/rabbit_networking.erl index 83bbbd896b..8806ed67d8 100644 --- a/deps/rabbit/src/rabbit_networking.erl +++ b/deps/rabbit/src/rabbit_networking.erl @@ -52,8 +52,8 @@ connections_local/0 ]). --include("rabbit.hrl"). --include("rabbit_misc.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit_misc.hrl"). %% IANA-suggested ephemeral port range is 49152 to 65535 -define(FIRST_TEST_BIND_PORT, 49152). diff --git a/deps/rabbit/src/rabbit_password.erl b/deps/rabbit/src/rabbit_password.erl index 15a3567e2b..872c490db2 100644 --- a/deps/rabbit/src/rabbit_password.erl +++ b/deps/rabbit/src/rabbit_password.erl @@ -6,7 +6,7 @@ %% -module(rabbit_password). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -define(DEFAULT_HASHING_MODULE, rabbit_password_hashing_sha256). diff --git a/deps/rabbit/src/rabbit_peer_discovery_classic_config.erl b/deps/rabbit/src/rabbit_peer_discovery_classic_config.erl index 9cab7659f7..0ef976f609 100644 --- a/deps/rabbit/src/rabbit_peer_discovery_classic_config.erl +++ b/deps/rabbit/src/rabbit_peer_discovery_classic_config.erl @@ -8,7 +8,7 @@ -module(rabbit_peer_discovery_classic_config). -behaviour(rabbit_peer_discovery_backend). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -export([list_nodes/0, supports_registration/0, register/0, unregister/0, post_registration/0, lock/1, unlock/1]). diff --git a/deps/rabbit/src/rabbit_peer_discovery_dns.erl b/deps/rabbit/src/rabbit_peer_discovery_dns.erl index bf60a60e92..3d30ac43be 100644 --- a/deps/rabbit/src/rabbit_peer_discovery_dns.erl +++ b/deps/rabbit/src/rabbit_peer_discovery_dns.erl @@ -8,7 +8,7 @@ -module(rabbit_peer_discovery_dns). -behaviour(rabbit_peer_discovery_backend). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -export([list_nodes/0, supports_registration/0, register/0, unregister/0, post_registration/0, lock/1, unlock/1]). diff --git a/deps/rabbit/src/rabbit_policies.erl b/deps/rabbit/src/rabbit_policies.erl index f8d724f39e..4353a0bd9e 100644 --- a/deps/rabbit/src/rabbit_policies.erl +++ b/deps/rabbit/src/rabbit_policies.erl @@ -13,7 +13,7 @@ -behaviour(rabbit_policy_validator). -behaviour(rabbit_policy_merge_strategy). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -export([register/0, validate_policy/1, merge_policy_value/3]). diff --git a/deps/rabbit/src/rabbit_queue_index.erl b/deps/rabbit/src/rabbit_queue_index.erl index eba445e8c3..5c40d2fac8 100644 --- a/deps/rabbit/src/rabbit_queue_index.erl +++ b/deps/rabbit/src/rabbit_queue_index.erl @@ -212,7 +212,7 @@ unacked }). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). %%---------------------------------------------------------------------------- diff --git a/deps/rabbit/src/rabbit_queue_type_util.erl b/deps/rabbit/src/rabbit_queue_type_util.erl index e417cb13c4..0d3aa9ece9 100644 --- a/deps/rabbit/src/rabbit_queue_type_util.erl +++ b/deps/rabbit/src/rabbit_queue_type_util.erl @@ -23,7 +23,7 @@ check_non_durable/1, run_checks/2]). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -include("amqqueue.hrl"). args_policy_lookup(Name, Resolve, Q) when ?is_amqqueue(Q) -> diff --git a/deps/rabbit/src/rabbit_quorum_queue.erl b/deps/rabbit/src/rabbit_quorum_queue.erl index ceaaa884b8..67117d36b9 100644 --- a/deps/rabbit/src/rabbit_quorum_queue.erl +++ b/deps/rabbit/src/rabbit_quorum_queue.erl @@ -70,7 +70,7 @@ qname_to_internal_name/1]). -include_lib("stdlib/include/qlc.hrl"). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -include("amqqueue.hrl"). -type msg_id() :: non_neg_integer(). diff --git a/deps/rabbit/src/rabbit_reader.erl b/deps/rabbit/src/rabbit_reader.erl index 08322cb393..e1c0b9e44a 100644 --- a/deps/rabbit/src/rabbit_reader.erl +++ b/deps/rabbit/src/rabbit_reader.erl @@ -45,8 +45,8 @@ %% %% Reader processes are special processes (in the OTP sense). --include("rabbit_framing.hrl"). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit_framing.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -export([start_link/2, info_keys/0, info/1, info/2, force_event_refresh/2, shutdown/2]). diff --git a/deps/rabbit/src/rabbit_recovery_terms.erl b/deps/rabbit/src/rabbit_recovery_terms.erl index d6973106ba..5d4546c481 100644 --- a/deps/rabbit/src/rabbit_recovery_terms.erl +++ b/deps/rabbit/src/rabbit_recovery_terms.erl @@ -26,7 +26,7 @@ -rabbit_upgrade({upgrade_recovery_terms, local, []}). -rabbit_upgrade({persistent_bytes, local, [upgrade_recovery_terms]}). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). %%---------------------------------------------------------------------------- diff --git a/deps/rabbit/src/rabbit_restartable_sup.erl b/deps/rabbit/src/rabbit_restartable_sup.erl index 3f38a3a84b..0acfc611f8 100644 --- a/deps/rabbit/src/rabbit_restartable_sup.erl +++ b/deps/rabbit/src/rabbit_restartable_sup.erl @@ -13,7 +13,7 @@ -export([init/1]). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -define(DELAY, 2). diff --git a/deps/rabbit/src/rabbit_router.erl b/deps/rabbit/src/rabbit_router.erl index 263e79a1f2..011f280f4b 100644 --- a/deps/rabbit/src/rabbit_router.erl +++ b/deps/rabbit/src/rabbit_router.erl @@ -7,7 +7,7 @@ -module(rabbit_router). -include_lib("stdlib/include/qlc.hrl"). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -export([match_bindings/2, match_routing_key/2]). diff --git a/deps/rabbit/src/rabbit_runtime_parameters.erl b/deps/rabbit/src/rabbit_runtime_parameters.erl index 5631ba3499..4b21b4f080 100644 --- a/deps/rabbit/src/rabbit_runtime_parameters.erl +++ b/deps/rabbit/src/rabbit_runtime_parameters.erl @@ -40,7 +40,7 @@ %% * rabbit_registry %% * rabbit_event --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -export([parse_set/5, set/5, set_any/5, clear/4, clear_any/4, list/0, list/1, list_component/1, list/2, list_formatted/1, list_formatted/3, diff --git a/deps/rabbit/src/rabbit_sup.erl b/deps/rabbit/src/rabbit_sup.erl index 93b59aec89..b38127b73b 100644 --- a/deps/rabbit/src/rabbit_sup.erl +++ b/deps/rabbit/src/rabbit_sup.erl @@ -18,7 +18,7 @@ -export([init/1]). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -define(SERVER, ?MODULE). diff --git a/deps/rabbit/src/rabbit_trace.erl b/deps/rabbit/src/rabbit_trace.erl index aacfc72136..bd8a814a75 100644 --- a/deps/rabbit/src/rabbit_trace.erl +++ b/deps/rabbit/src/rabbit_trace.erl @@ -9,8 +9,8 @@ -export([init/1, enabled/1, tap_in/6, tap_out/5, start/1, stop/1]). --include("rabbit.hrl"). --include("rabbit_framing.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit_framing.hrl"). -define(TRACE_VHOSTS, trace_vhosts). -define(XNAME, <<"amq.rabbitmq.trace">>). diff --git a/deps/rabbit/src/rabbit_upgrade.erl b/deps/rabbit/src/rabbit_upgrade.erl index 0f360863c8..7f3d2e9b8e 100644 --- a/deps/rabbit/src/rabbit_upgrade.erl +++ b/deps/rabbit/src/rabbit_upgrade.erl @@ -11,7 +11,7 @@ maybe_migrate_queues_to_per_vhost_storage/0, nodes_running/1, secondary_upgrade/1]). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -define(VERSION_FILENAME, "schema_version"). -define(LOCK_FILENAME, "schema_upgrade_lock"). diff --git a/deps/rabbit/src/rabbit_vhost_limit.erl b/deps/rabbit/src/rabbit_vhost_limit.erl index b1e14da9f2..da8601c444 100644 --- a/deps/rabbit/src/rabbit_vhost_limit.erl +++ b/deps/rabbit/src/rabbit_vhost_limit.erl @@ -9,7 +9,7 @@ -behaviour(rabbit_runtime_parameter). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -export([register/0]). -export([parse_set/3, set/3, clear/2]). diff --git a/deps/rabbit/src/rabbit_vhost_msg_store.erl b/deps/rabbit/src/rabbit_vhost_msg_store.erl index 3dff65cc84..32aac71da8 100644 --- a/deps/rabbit/src/rabbit_vhost_msg_store.erl +++ b/deps/rabbit/src/rabbit_vhost_msg_store.erl @@ -7,7 +7,7 @@ -module(rabbit_vhost_msg_store). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -export([start/4, stop/2, client_init/5, successfully_recovered_state/2]). -export([vhost_store_pid/2]). diff --git a/deps/rabbit/src/rabbit_vhost_process.erl b/deps/rabbit/src/rabbit_vhost_process.erl index 5c8c56a63a..bf9972e1be 100644 --- a/deps/rabbit/src/rabbit_vhost_process.erl +++ b/deps/rabbit/src/rabbit_vhost_process.erl @@ -25,7 +25,7 @@ %% use the now recommended try/catch syntax for obtaining the stack trace. -compile(nowarn_deprecated_function). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -define(TICKTIME_RATIO, 4). diff --git a/deps/rabbit/src/rabbit_vhost_sup.erl b/deps/rabbit/src/rabbit_vhost_sup.erl index 08233cb7b4..15ece86f82 100644 --- a/deps/rabbit/src/rabbit_vhost_sup.erl +++ b/deps/rabbit/src/rabbit_vhost_sup.erl @@ -7,7 +7,7 @@ -module(rabbit_vhost_sup). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). %% Each vhost gets an instance of this supervisor that supervises %% message stores and queues (via rabbit_amqqueue_sup_sup). diff --git a/deps/rabbit/src/rabbit_vhost_sup_sup.erl b/deps/rabbit/src/rabbit_vhost_sup_sup.erl index b24d3f0fbf..2d087986d1 100644 --- a/deps/rabbit/src/rabbit_vhost_sup_sup.erl +++ b/deps/rabbit/src/rabbit_vhost_sup_sup.erl @@ -7,7 +7,7 @@ -module(rabbit_vhost_sup_sup). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -behaviour(supervisor2). diff --git a/deps/rabbit/src/rabbit_vhost_sup_wrapper.erl b/deps/rabbit/src/rabbit_vhost_sup_wrapper.erl index 2b22a6a3ee..3c1368699a 100644 --- a/deps/rabbit/src/rabbit_vhost_sup_wrapper.erl +++ b/deps/rabbit/src/rabbit_vhost_sup_wrapper.erl @@ -10,7 +10,7 @@ -module(rabbit_vhost_sup_wrapper). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -behaviour(supervisor2). -export([init/1]). diff --git a/deps/rabbit/src/term_to_binary_compat.erl b/deps/rabbit/src/term_to_binary_compat.erl index 94d6cec39b..ea2e2196fe 100644 --- a/deps/rabbit/src/term_to_binary_compat.erl +++ b/deps/rabbit/src/term_to_binary_compat.erl @@ -7,7 +7,7 @@ -module(term_to_binary_compat). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -export([term_to_binary_1/1]). diff --git a/deps/rabbit/test/channel_operation_timeout_test_queue.erl b/deps/rabbit/test/channel_operation_timeout_test_queue.erl index f024c36921..f647be412e 100644 --- a/deps/rabbit/test/channel_operation_timeout_test_queue.erl +++ b/deps/rabbit/test/channel_operation_timeout_test_queue.erl @@ -107,8 +107,8 @@ }). --include("rabbit.hrl"). --include("rabbit_framing.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit_framing.hrl"). -define(QUEUE, lqueue). -define(TIMEOUT_TEST_MSG, <<"timeout_test_msg!">>). diff --git a/deps/rabbit/test/cluster_SUITE.erl b/deps/rabbit/test/cluster_SUITE.erl index e18ae1f656..657882d440 100644 --- a/deps/rabbit/test/cluster_SUITE.erl +++ b/deps/rabbit/test/cluster_SUITE.erl @@ -9,7 +9,7 @@ -include_lib("common_test/include/ct.hrl"). -include_lib("amqp_client/include/amqp_client.hrl"). --include("include/amqqueue.hrl"). +-include("amqqueue.hrl"). -compile(export_all). diff --git a/deps/rabbit/test/dummy_event_receiver.erl b/deps/rabbit/test/dummy_event_receiver.erl index 469b1b6542..6267d1c9c5 100644 --- a/deps/rabbit/test/dummy_event_receiver.erl +++ b/deps/rabbit/test/dummy_event_receiver.erl @@ -12,7 +12,7 @@ -export([init/1, handle_call/2, handle_event/2, handle_info/2, terminate/2, code_change/3]). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). start(Pid, Nodes, Types) -> Oks = [ok || _ <- Nodes], diff --git a/deps/rabbit/test/feature_flags_SUITE.erl b/deps/rabbit/test/feature_flags_SUITE.erl index ef6b14736a..aec175dc78 100644 --- a/deps/rabbit/test/feature_flags_SUITE.erl +++ b/deps/rabbit/test/feature_flags_SUITE.erl @@ -117,7 +117,7 @@ init_per_group(clustering, Config) -> {rmq_nodes_clustered, false}, {start_rmq_with_plugins_disabled, true}]), rabbit_ct_helpers:run_setup_steps(Config1, [ - fun build_my_plugin/1, + fun prepare_my_plugin/1, fun work_around_cli_and_rabbit_circular_dep/1 ]); init_per_group(activating_plugin, Config) -> @@ -127,7 +127,7 @@ init_per_group(activating_plugin, Config) -> {rmq_nodes_clustered, true}, {start_rmq_with_plugins_disabled, true}]), rabbit_ct_helpers:run_setup_steps(Config1, [ - fun build_my_plugin/1, + fun prepare_my_plugin/1, fun work_around_cli_and_rabbit_circular_dep/1 ]); init_per_group(_, Config) -> @@ -985,6 +985,17 @@ activating_plugin_with_new_ff_enabled(Config) -> %% Internal helpers. %% ------------------------------------------------------------------- +prepare_my_plugin(Config) -> + case os:getenv("RABBITMQ_RUN") of + false -> + build_my_plugin(Config); + _ -> + MyPluginDir = filename:dirname(filename:dirname(code:where_is_file("my_plugin.app"))), + PluginsDir = filename:dirname(MyPluginDir), + rabbit_ct_helpers:set_config(Config, + [{rmq_plugins_dir, PluginsDir}]) + end. + build_my_plugin(Config) -> PluginSrcDir = filename:join(?config(data_dir, Config), "my_plugin"), PluginsDir = filename:join(PluginSrcDir, "plugins"), diff --git a/deps/rabbit/test/feature_flags_SUITE_data/my_plugin/BUILD.bazel b/deps/rabbit/test/feature_flags_SUITE_data/my_plugin/BUILD.bazel new file mode 100644 index 0000000000..60e3e86cbc --- /dev/null +++ b/deps/rabbit/test/feature_flags_SUITE_data/my_plugin/BUILD.bazel @@ -0,0 +1,13 @@ +load("@bazel-erlang//:bazel_erlang_lib.bzl", "erlang_lib") + +DEPS = [ + "//deps/rabbit_common:bazel_erlang_lib", + "//deps/rabbit:bazel_erlang_lib", +] + +erlang_lib( + app_description = "Plugin to test feature flags", + app_name = "my_plugin", + app_version = "1.0.0", + deps = DEPS, +) diff --git a/deps/rabbit/test/peer_discovery_dns_SUITE.erl b/deps/rabbit/test/peer_discovery_dns_SUITE.erl index b672066859..34faccc7e5 100644 --- a/deps/rabbit/test/peer_discovery_dns_SUITE.erl +++ b/deps/rabbit/test/peer_discovery_dns_SUITE.erl @@ -97,8 +97,12 @@ hostname_discovery_with_short_node_names(_) -> node_discovery_with_long_node_names(_) -> Result = rabbit_peer_discovery_dns:discover_nodes(?DISCOVERY_ENDPOINT_RECORD_A, true), - ?assert(lists:member('ct_rabbit@dns.google', Result)). + ?assert(lists:member(list_to_atom(sname() ++ "@dns.google"), Result)). node_discovery_with_short_node_names(_) -> Result = rabbit_peer_discovery_dns:discover_nodes(?DISCOVERY_ENDPOINT_RECORD_A, false), - ?assert(lists:member(ct_rabbit@dns, Result)). + ?assert(lists:member(list_to_atom(sname() ++ "@dns"), Result)). + +sname() -> + [Sname | _] = string:split(atom_to_list(erlang:node()), "@"), + Sname. diff --git a/deps/rabbit/test/rabbit_msg_record_SUITE.erl b/deps/rabbit/test/rabbit_msg_record_SUITE.erl index a82ba7481d..0c86ce646e 100644 --- a/deps/rabbit/test/rabbit_msg_record_SUITE.erl +++ b/deps/rabbit/test/rabbit_msg_record_SUITE.erl @@ -5,8 +5,8 @@ -export([ ]). --include("rabbit.hrl"). --include("rabbit_framing.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit_framing.hrl"). -include_lib("common_test/include/ct.hrl"). -include_lib("eunit/include/eunit.hrl"). -include_lib("amqp10_common/include/amqp10_framing.hrl"). diff --git a/deps/rabbit/test/term_to_binary_compat_prop_SUITE.erl b/deps/rabbit/test/term_to_binary_compat_prop_SUITE.erl index 3534aaaac8..2937aed722 100644 --- a/deps/rabbit/test/term_to_binary_compat_prop_SUITE.erl +++ b/deps/rabbit/test/term_to_binary_compat_prop_SUITE.erl @@ -10,7 +10,7 @@ -compile(export_all). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -include_lib("common_test/include/ct.hrl"). -include_lib("proper/include/proper.hrl"). diff --git a/deps/rabbit_common/BUILD.bazel b/deps/rabbit_common/BUILD.bazel new file mode 100644 index 0000000000..cc1b7958e6 --- /dev/null +++ b/deps/rabbit_common/BUILD.bazel @@ -0,0 +1,277 @@ +load("@bazel-erlang//:bazel_erlang_lib.bzl", "app_file", "bazel_erlang_lib", "erlc") +load("@bazel-erlang//:ct.bzl", "ct_test") +load("//:rabbitmq.bzl", "APP_VERSION", "RABBITMQ_ERLC_OPTS", "RABBITMQ_TEST_ERLC_OPTS") + +py_binary( + name = "codegen", + srcs = [ + "codegen.py", + ], + imports = ["../../deps/rabbitmq_codegen"], + deps = [ + "//deps/rabbitmq_codegen:amqp_codegen", + ], +) + +genrule( + name = "generated_headers", + srcs = [ + "//deps/rabbitmq_codegen:amqp-rabbitmq-0.9.1.json", + "//deps/rabbitmq_codegen:credit_extension.json", + "//deps/rabbitmq_codegen:amqp-rabbitmq-0.8.json", + ], + outs = ["include/rabbit_framing.hrl"], + cmd = "$(location :codegen) --ignore-conflicts header $(SRCS) $@", + tools = [":codegen"], +) + +genrule( + name = "rabbit_framing_amqp_0_9_1.erl", + srcs = [ + "//deps/rabbitmq_codegen:amqp-rabbitmq-0.9.1.json", + "//deps/rabbitmq_codegen:credit_extension.json", + ], + outs = ["src/rabbit_framing_amqp_0_9_1.erl"], + cmd = "$(location :codegen) body $(SRCS) $@", + tools = [":codegen"], +) + +genrule( + name = "rabbit_framing_amqp_0_8.erl", + srcs = [ + "//deps/rabbitmq_codegen:amqp-rabbitmq-0.8.json", + ], + outs = ["src/rabbit_framing_amqp_0_8.erl"], + cmd = "$(location :codegen) body $(SRCS) $@", + tools = [":codegen"], +) + +DEPS = [] + +RUNTIME_DEPS = [ + "@jsx//:bazel_erlang_lib", + "@recon//:bazel_erlang_lib", + "@credentials_obfuscation//:bazel_erlang_lib", +] + +APP_NAME = "rabbit_common" + +HDRS = glob(["include/*.hrl"]) + ["include/rabbit_framing.hrl"] + +app_file( + name = "app_file", + app_description = "Modules shared by rabbitmq-server and rabbitmq-erlang-client", + app_name = APP_NAME, + app_version = APP_VERSION, + extra_apps = [ + "compiler", + "crypto", + "public_key", + "sasl", + "ssl", + "syntax_tools", + "tools", + "xmerl", + ], + modules = [":beam_files"], + deps = DEPS + RUNTIME_DEPS, +) + +FIRST_SRCS = [ + "src/gen_server2.erl", + "src/rabbit_authn_backend.erl", + "src/rabbit_authz_backend.erl", + "src/rabbit_registry_class.erl", +] + +erlc( + name = "first_beam_files", + srcs = glob(FIRST_SRCS), + hdrs = HDRS, + dest = "ebin", + erlc_opts = RABBITMQ_ERLC_OPTS, + deps = DEPS, +) + +erlc( + name = "beam_files", + srcs = glob( + ["src/*.erl"], + exclude = FIRST_SRCS, + ) + [ + "src/rabbit_framing_amqp_0_8.erl", + "src/rabbit_framing_amqp_0_9_1.erl", + ], + hdrs = HDRS, + beam = [":first_beam_files"], + dest = "ebin", + erlc_opts = RABBITMQ_ERLC_OPTS, + deps = DEPS, +) + +bazel_erlang_lib( + name = "bazel_erlang_lib", + hdrs = HDRS, + app = ":app_file", + app_name = APP_NAME, + beam = [ + ":first_beam_files", + ":beam_files", + ], + visibility = ["//visibility:public"], + deps = DEPS + RUNTIME_DEPS, +) + +erlc( + name = "first_test_beam_files", + testonly = True, + srcs = glob(FIRST_SRCS), + hdrs = HDRS, + dest = "src", + erlc_opts = RABBITMQ_ERLC_OPTS + RABBITMQ_TEST_ERLC_OPTS, + deps = DEPS, +) + +erlc( + name = "test_beam_files", + testonly = True, + srcs = glob( + ["src/*.erl"], + exclude = FIRST_SRCS, + ) + [ + "src/rabbit_framing_amqp_0_8.erl", + "src/rabbit_framing_amqp_0_9_1.erl", + ], + hdrs = HDRS, + beam = [":first_test_beam_files"], + dest = "src", + erlc_opts = RABBITMQ_ERLC_OPTS + RABBITMQ_TEST_ERLC_OPTS, + deps = DEPS, +) + +bazel_erlang_lib( + name = "test_bazel_erlang_lib", + testonly = True, + hdrs = HDRS, + app = ":app_file", + app_name = APP_NAME, + beam = [ + ":first_test_beam_files", + ":test_beam_files", + ], + visibility = ["//:__subpackages__"], + deps = DEPS + RUNTIME_DEPS, +) + +erlc( + name = "rabbit_env_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_env_SUITE.erl"], + hdrs = HDRS, + dest = "test", + erlc_opts = RABBITMQ_ERLC_OPTS + RABBITMQ_TEST_ERLC_OPTS, + deps = [ + ":test_bazel_erlang_lib", + ], +) + +ct_test( + name = "rabbit_env_SUITE", + size = "small", + compiled_suites = [":rabbit_env_SUITE_beam_files"], + deps = [ + ":test_bazel_erlang_lib", + "//deps/rabbit:test_bazel_erlang_lib", + "@proper//:bazel_erlang_lib", + ], +) + +erlc( + name = "supervisor2_SUITE_beam_files", + testonly = True, + srcs = ["test/supervisor2_SUITE.erl"], + hdrs = HDRS, + dest = "test", + erlc_opts = RABBITMQ_ERLC_OPTS + RABBITMQ_TEST_ERLC_OPTS, + deps = [ + ":test_bazel_erlang_lib", + ], +) + +ct_test( + name = "supervisor2_SUITE", + size = "small", + compiled_suites = [":supervisor2_SUITE_beam_files"], + deps = [ + ":test_bazel_erlang_lib", + ], +) + +erlc( + name = "unit_priority_queue_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_priority_queue_SUITE.erl"], + hdrs = HDRS, + dest = "test", + erlc_opts = RABBITMQ_ERLC_OPTS + RABBITMQ_TEST_ERLC_OPTS, + deps = [ + ":test_bazel_erlang_lib", + ], +) + +ct_test( + name = "unit_priority_queue_SUITE", + size = "small", + compiled_suites = [":unit_priority_queue_SUITE_beam_files"], + deps = [ + ":test_bazel_erlang_lib", + ], +) + +erlc( + name = "unit_SUITE_beam_files", + testonly = True, + srcs = [ + "test/gen_server2_test_server.erl", + "test/unit_SUITE.erl", + ], + hdrs = HDRS, + dest = "test", + erlc_opts = RABBITMQ_ERLC_OPTS + RABBITMQ_TEST_ERLC_OPTS, + deps = [ + ":test_bazel_erlang_lib", + "@proper//:bazel_erlang_lib", + ], +) + +ct_test( + name = "unit_SUITE", + size = "medium", + compiled_suites = [":unit_SUITE_beam_files"], + deps = [ + ":test_bazel_erlang_lib", + "@credentials_obfuscation//:bazel_erlang_lib", + "@proper//:bazel_erlang_lib", + ], +) + +erlc( + name = "worker_pool_SUITE_beam_files", + testonly = True, + srcs = ["test/worker_pool_SUITE.erl"], + hdrs = HDRS, + dest = "test", + erlc_opts = RABBITMQ_ERLC_OPTS + RABBITMQ_TEST_ERLC_OPTS, + deps = [ + ":test_bazel_erlang_lib", + ], +) + +ct_test( + name = "worker_pool_SUITE", + size = "small", + compiled_suites = [":worker_pool_SUITE_beam_files"], + deps = [ + ":test_bazel_erlang_lib", + ], +) diff --git a/deps/rabbit_common/mk/rabbitmq-run.mk b/deps/rabbit_common/mk/rabbitmq-run.mk index 6ca4326b34..479c30546d 100644 --- a/deps/rabbit_common/mk/rabbitmq-run.mk +++ b/deps/rabbit_common/mk/rabbitmq-run.mk @@ -104,6 +104,10 @@ else RMQ_PLUGINS_DIR=$(CURDIR)/$(DIST_DIR) endif +ifdef EXTRA_PLUGINS_DIR +RMQ_PLUGINS_DIR=$(RMQ_PLUGINS_DIR):$(EXTRA_PLUGINS_DIR) +endif + define basic_script_env_settings MAKE="$(MAKE)" \ ERL_LIBS="$(DIST_ERL_LIBS)" \ diff --git a/deps/rabbit_common/src/rabbit_env.erl b/deps/rabbit_common/src/rabbit_env.erl index 125b969cc5..9c74c57c27 100644 --- a/deps/rabbit_common/src/rabbit_env.erl +++ b/deps/rabbit_common/src/rabbit_env.erl @@ -10,7 +10,7 @@ -include_lib("kernel/include/file.hrl"). -include_lib("kernel/include/logger.hrl"). --include("include/logging.hrl"). +-include("logging.hrl"). -export([get_context/0, get_context/1, diff --git a/deps/rabbit_common/test/rabbit_env_SUITE.erl b/deps/rabbit_common/test/rabbit_env_SUITE.erl index 4c45bbbc30..daee0e2ab7 100644 --- a/deps/rabbit_common/test/rabbit_env_SUITE.erl +++ b/deps/rabbit_common/test/rabbit_env_SUITE.erl @@ -332,10 +332,11 @@ check_values_from_reachable_remote_node(Config) -> {atom_to_list(?FUNCTION_NAME), "localhost"}), NodeS = atom_to_list(Node), true = os:putenv("RABBITMQ_NODENAME", NodeS), - RabbitCommonEbinDir = filename:dirname(code:which(rabbit_env)), Args = ["-noinput", "-sname", atom_to_list(Node), - "-pa", RabbitCommonEbinDir, + "-pa", filename:dirname(code:which(rabbit_env)), + "-pa", filename:dirname(code:where_is_file("rabbit_common.app")), + "-pa", filename:dirname(code:which(rabbit)), "-pa", RabbitEbinDir, "-mnesia", "dir", rabbit_misc:format("~p", [MnesiaDir]), diff --git a/deps/rabbitmq_amqp1_0/BUILD.bazel b/deps/rabbitmq_amqp1_0/BUILD.bazel new file mode 100644 index 0000000000..6f54e815f5 --- /dev/null +++ b/deps/rabbitmq_amqp1_0/BUILD.bazel @@ -0,0 +1,186 @@ +load("@bazel-erlang//:bazel_erlang_lib.bzl", "erlang_lib", "test_erlang_lib") +load("@bazel-erlang//:ct.bzl", "ct_suite") +load("//:rabbitmq_home.bzl", "rabbitmq_home") +load("//:rabbitmq_run.bzl", "rabbitmq_run") +load("//:rabbitmq.bzl", "APP_VERSION") + +APP_ENV = """[ + {default_user, "guest"}, + {default_vhost, <<"/">>}, + {protocol_strict_mode, false} + ]""" + +APP_NAME = "rabbitmq_amqp1_0" + +APP_DESCRIPTION = "AMQP 1.0 support for RabbitMQ" + +BUILD_DEPS = [ + "//deps/rabbitmq_cli:rabbitmqctl", +] + +DEPS = [ + "//deps/rabbit_common:bazel_erlang_lib", + "//deps/amqp_client:bazel_erlang_lib", + "//deps/amqp10_common:bazel_erlang_lib", +] + +RUNTIME_DEPS = [ + "//deps/rabbit:bazel_erlang_lib", +] + +erlang_lib( + app_description = APP_DESCRIPTION, + app_env = APP_ENV, + app_name = APP_NAME, + app_version = APP_VERSION, + build_deps = BUILD_DEPS, + runtime_deps = RUNTIME_DEPS, + deps = DEPS, +) + +test_erlang_lib( + app_description = APP_DESCRIPTION, + app_env = APP_ENV, + app_name = APP_NAME, + app_version = APP_VERSION, + build_deps = BUILD_DEPS, + runtime_deps = RUNTIME_DEPS, + deps = DEPS, +) + +TEST_ERLC_OPTS = [ + "+nowarn_export_all", +] + +rabbitmq_home( + name = "broker-for-tests-home", + plugins = [ + "//deps/rabbit:bazel_erlang_lib", + ":bazel_erlang_lib", + ], +) + +rabbitmq_run( + name = "rabbitmq-for-tests-run", + home = ":broker-for-tests-home", +) + +ct_suite( + data = [ + "@rabbitmq_ct_helpers//tools/tls-certs:Makefile", + "@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in", + ], + erlc_opts = TEST_ERLC_OPTS, + suite_name = "amqp10_client_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + "RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_amqp1_0/rabbitmq-for-tests-run", + "RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_amqp1_0/broker-for-tests-home/sbin/rabbitmqctl", + "RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_amqp1_0/broker-for-tests-home/sbin/rabbitmq-plugins", + }, + tools = [ + ":rabbitmq-for-tests-run", + ], + runtime_deps = [ + "//deps/amqp10_client:bazel_erlang_lib", + "//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib", + "//deps/rabbitmq_cli:rabbitmqctl", + "@rabbitmq_ct_client_helpers//:bazel_erlang_lib", + "@rabbitmq_ct_helpers//:bazel_erlang_lib", + ], + deps = [ + "//deps/rabbit_common:bazel_erlang_lib", + ], +) + +ct_suite( + data = [ + "@rabbitmq_ct_helpers//tools/tls-certs:Makefile", + "@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in", + ], + erlc_opts = TEST_ERLC_OPTS, + suite_name = "command_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + "RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_amqp1_0/rabbitmq-for-tests-run", + "RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_amqp1_0/broker-for-tests-home/sbin/rabbitmqctl", + "RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_amqp1_0/broker-for-tests-home/sbin/rabbitmq-plugins", + }, + tools = [ + ":rabbitmq-for-tests-run", + ], + runtime_deps = [ + "//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib", + "//deps/rabbitmq_cli:rabbitmqctl", + "@rabbitmq_ct_helpers//:bazel_erlang_lib", + ], + deps = [ + "//deps/amqp10_common:bazel_erlang_lib", + "//deps/amqp_client:bazel_erlang_lib", + "//deps/rabbit_common:bazel_erlang_lib", + ], +) + +ct_suite( + data = [ + "@rabbitmq_ct_helpers//tools/tls-certs:Makefile", + "@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in", + ], + erlc_opts = TEST_ERLC_OPTS, + suite_name = "proxy_protocol_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + "RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_amqp1_0/rabbitmq-for-tests-run", + "RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_amqp1_0/broker-for-tests-home/sbin/rabbitmqctl", + "RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_amqp1_0/broker-for-tests-home/sbin/rabbitmq-plugins", + }, + tools = [ + ":rabbitmq-for-tests-run", + ], + runtime_deps = [ + "//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib", + "//deps/rabbitmq_cli:rabbitmqctl", + "@rabbitmq_ct_client_helpers//:bazel_erlang_lib", + "@rabbitmq_ct_helpers//:bazel_erlang_lib", + ], +) + +ct_suite( + data = [ + "@rabbitmq_ct_helpers//tools/tls-certs:Makefile", + "@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in", + ], + erlc_opts = TEST_ERLC_OPTS, + suite_name = "system_SUITE", + # will not pass remotely until we have dotnet in the image + tags = [ + "dotnet", + "exclusive", + ], + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + "RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_amqp1_0/rabbitmq-for-tests-run", + "RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_amqp1_0/broker-for-tests-home/sbin/rabbitmqctl", + "RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_amqp1_0/broker-for-tests-home/sbin/rabbitmq-plugins", + }, + tools = [ + ":rabbitmq-for-tests-run", + ], + runtime_deps = [ + "//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib", + "//deps/rabbitmq_cli:rabbitmqctl", + "@rabbitmq_ct_client_helpers//:bazel_erlang_lib", + "@rabbitmq_ct_helpers//:bazel_erlang_lib", + ], + deps = [ + "//deps/rabbit_common:bazel_erlang_lib", + ], +) + +ct_suite( + erlc_opts = TEST_ERLC_OPTS, + suite_name = "unit_SUITE", + deps = [ + "//deps/amqp10_common:bazel_erlang_lib", + ], +) diff --git a/deps/rabbitmq_auth_backend_cache/BUILD.bazel b/deps/rabbitmq_auth_backend_cache/BUILD.bazel new file mode 100644 index 0000000000..f3032a632d --- /dev/null +++ b/deps/rabbitmq_auth_backend_cache/BUILD.bazel @@ -0,0 +1,131 @@ +load("@bazel-erlang//:bazel_erlang_lib.bzl", "erlang_lib", "test_erlang_lib") +load("@bazel-erlang//:ct.bzl", "ct_suite") +load("//:rabbitmq_home.bzl", "rabbitmq_home") +load("//:rabbitmq_run.bzl", "rabbitmq_run") +load("//:rabbitmq.bzl", "APP_VERSION") + +APP_ENV = """[ + {cache_ttl, 15000}, + {cache_module, rabbit_auth_cache_ets}, + {cache_module_args, []}, + {cached_backend, rabbit_auth_backend_internal}, + {cache_refusals, false} + ]""" + +APP_NAME = "rabbitmq_auth_backend_cache" + +APP_DESCRIPTION = "RabbitMQ Authentication Backend cache" + +APP_MODULE = "rabbit_auth_backend_cache_app" + +DEPS = [ + "//deps/rabbit_common:bazel_erlang_lib", +] + +RUNTIME_DEPS = [ + "//deps/rabbit:bazel_erlang_lib", +] + +FIRST_SRCS = [ + "src/rabbit_auth_cache.erl", +] + +erlang_lib( + app_description = APP_DESCRIPTION, + app_env = APP_ENV, + app_module = APP_MODULE, + app_name = APP_NAME, + app_version = APP_VERSION, + first_srcs = FIRST_SRCS, + runtime_deps = RUNTIME_DEPS, + deps = DEPS, +) + +test_erlang_lib( + app_description = APP_DESCRIPTION, + app_env = APP_ENV, + app_module = APP_MODULE, + app_name = APP_NAME, + app_version = APP_VERSION, + first_srcs = FIRST_SRCS, + runtime_deps = RUNTIME_DEPS, + deps = DEPS, +) + +TEST_ERLC_OPTS = [ + "+nowarn_export_all", +] + +rabbitmq_home( + name = "broker-for-tests-home", + plugins = [ + "//deps/rabbit:bazel_erlang_lib", + ":bazel_erlang_lib", + ], +) + +rabbitmq_run( + name = "rabbitmq-for-tests-run", + home = ":broker-for-tests-home", +) + +ct_suite( + data = [ + "@rabbitmq_ct_helpers//tools/tls-certs:Makefile", + "@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in", + ], + erlc_opts = TEST_ERLC_OPTS, + suite_name = "config_schema_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + "RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_auth_backend_cache/rabbitmq-for-tests-run", + "RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_auth_backend_cache/broker-for-tests-home/sbin/rabbitmqctl", + "RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_auth_backend_cache/broker-for-tests-home/sbin/rabbitmq-plugins", + }, + tools = [ + ":rabbitmq-for-tests-run", + ], + runtime_deps = [ + "//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib", + "//deps/rabbitmq_cli:rabbitmqctl", + "@rabbitmq_ct_client_helpers//:bazel_erlang_lib", + "@rabbitmq_ct_helpers//:bazel_erlang_lib", + ], +) + +ct_suite( + data = [ + "@rabbitmq_ct_helpers//tools/tls-certs:Makefile", + "@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in", + ], + erlc_opts = TEST_ERLC_OPTS, + suite_name = "rabbit_auth_backend_cache_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + "RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_auth_backend_cache/rabbitmq-for-tests-run", + "RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_auth_backend_cache/broker-for-tests-home/sbin/rabbitmqctl", + "RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_auth_backend_cache/broker-for-tests-home/sbin/rabbitmq-plugins", + }, + tools = [ + ":rabbitmq-for-tests-run", + ], + runtime_deps = [ + "//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib", + "//deps/rabbitmq_cli:rabbitmqctl", + "@rabbitmq_ct_helpers//:bazel_erlang_lib", + ], + deps = [ + "//deps/rabbit_common:bazel_erlang_lib", + ], +) + +ct_suite( + erlc_opts = TEST_ERLC_OPTS, + suite_name = "rabbit_auth_cache_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + }, + runtime_deps = [ + "@rabbitmq_ct_helpers//:bazel_erlang_lib", + ], +) diff --git a/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_dict.erl b/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_dict.erl index a3ff7feb37..9dc9d4721f 100644 --- a/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_dict.erl +++ b/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_dict.erl @@ -12,7 +12,7 @@ -behaviour(rabbit_auth_cache). --include("include/rabbit_auth_backend_cache.hrl"). +-include("rabbit_auth_backend_cache.hrl"). -export([start_link/0, get/1, put/3, delete/1]). diff --git a/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets.erl b/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets.erl index e988686e8e..020885ba17 100644 --- a/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets.erl +++ b/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets.erl @@ -10,7 +10,7 @@ -compile({no_auto_import,[get/1]}). -compile({no_auto_import,[put/2]}). --include("include/rabbit_auth_backend_cache.hrl"). +-include("rabbit_auth_backend_cache.hrl"). -behaviour(rabbit_auth_cache). diff --git a/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets_segmented.erl b/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets_segmented.erl index 230dd6c2ac..c4dd827768 100644 --- a/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets_segmented.erl +++ b/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets_segmented.erl @@ -16,7 +16,7 @@ -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]). --include("include/rabbit_auth_backend_cache.hrl"). +-include("rabbit_auth_backend_cache.hrl"). -record(state, { segments = [], diff --git a/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets_segmented_stateless.erl b/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets_segmented_stateless.erl index 79f60f1057..82a78a62ea 100644 --- a/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets_segmented_stateless.erl +++ b/deps/rabbitmq_auth_backend_cache/src/rabbit_auth_cache_ets_segmented_stateless.erl @@ -9,7 +9,7 @@ -behaviour(gen_server). -behaviour(rabbit_auth_cache). --include("include/rabbit_auth_backend_cache.hrl"). +-include("rabbit_auth_backend_cache.hrl"). -export([start_link/1, get/1, put/3, delete/1]). diff --git a/deps/rabbitmq_auth_backend_http/BUILD.bazel b/deps/rabbitmq_auth_backend_http/BUILD.bazel new file mode 100644 index 0000000000..a044f9c035 --- /dev/null +++ b/deps/rabbitmq_auth_backend_http/BUILD.bazel @@ -0,0 +1,121 @@ +load("@bazel-erlang//:bazel_erlang_lib.bzl", "erlang_lib", "test_erlang_lib") +load("@bazel-erlang//:ct.bzl", "ct_suite") +load("//:rabbitmq_home.bzl", "rabbitmq_home") +load("//:rabbitmq_run.bzl", "rabbitmq_run") +load("//:rabbitmq.bzl", "APP_VERSION") + +APP_ENV = """[ + {http_method, get}, + {user_path, "http://localhost:8000/auth/user"}, + {vhost_path, "http://localhost:8000/auth/vhost"}, + {resource_path, "http://localhost:8000/auth/resource"}, + {topic_path, "http://localhost:8000/auth/topic"} + ]""" + +APP_NAME = "rabbitmq_auth_backend_http" + +APP_DESCRIPTION = "RabbitMQ HTTP Authentication Backend" + +APP_MODULE = "rabbit_auth_backend_http_app" + +EXTRA_APPS = [ + "inets", +] + +DEPS = [ + "//deps/rabbit_common:bazel_erlang_lib", +] + +RUNTIME_DEPS = [ + "//deps/rabbit:bazel_erlang_lib", + "//deps/amqp_client:bazel_erlang_lib", +] + +erlang_lib( + app_description = APP_DESCRIPTION, + app_env = APP_ENV, + app_module = APP_MODULE, + app_name = APP_NAME, + app_version = APP_VERSION, + extra_apps = EXTRA_APPS, + runtime_deps = RUNTIME_DEPS, + deps = DEPS, +) + +test_erlang_lib( + app_description = APP_DESCRIPTION, + app_env = APP_ENV, + app_module = APP_MODULE, + app_name = APP_NAME, + app_version = APP_VERSION, + runtime_deps = RUNTIME_DEPS, + deps = DEPS, +) + +TEST_ERLC_OPTS = [ + "+nowarn_export_all", +] + +rabbitmq_home( + name = "broker-for-tests-home", + plugins = [ + "//deps/rabbit:bazel_erlang_lib", + ":bazel_erlang_lib", + ], +) + +rabbitmq_run( + name = "rabbitmq-for-tests-run", + home = ":broker-for-tests-home", +) + +ct_suite( + size = "small", + additional_srcs = [ + "test/auth_http_mock.erl", + ], + erlc_opts = TEST_ERLC_OPTS, + suite_name = "auth_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + }, + runtime_deps = [ + "@cowboy//:bazel_erlang_lib", + ], + deps = [ + "//deps/rabbit_common:bazel_erlang_lib", + ], +) + +ct_suite( + data = [ + "@rabbitmq_ct_helpers//tools/tls-certs:Makefile", + "@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in", + ], + erlc_opts = TEST_ERLC_OPTS, + suite_name = "config_schema_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + "RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_auth_backend_http/rabbitmq-for-tests-run", + "RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_auth_backend_http/broker-for-tests-home/sbin/rabbitmqctl", + "RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_auth_backend_http/broker-for-tests-home/sbin/rabbitmq-plugins", + }, + tools = [ + ":rabbitmq-for-tests-run", + ], + runtime_deps = [ + "//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib", + "//deps/rabbitmq_cli:rabbitmqctl", + "@rabbitmq_ct_client_helpers//:bazel_erlang_lib", + "@rabbitmq_ct_helpers//:bazel_erlang_lib", + ], +) + +ct_suite( + size = "small", + erlc_opts = TEST_ERLC_OPTS, + suite_name = "unit_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + }, +) diff --git a/deps/rabbitmq_auth_backend_ldap/BUILD.bazel b/deps/rabbitmq_auth_backend_ldap/BUILD.bazel new file mode 100644 index 0000000000..4aaeaef069 --- /dev/null +++ b/deps/rabbitmq_auth_backend_ldap/BUILD.bazel @@ -0,0 +1,164 @@ +load("@bazel-erlang//:bazel_erlang_lib.bzl", "erlang_lib", "test_erlang_lib") +load("@bazel-erlang//:ct.bzl", "ct_suite") +load("//:rabbitmq_home.bzl", "rabbitmq_home") +load("//:rabbitmq_run.bzl", "rabbitmq_run") +load("//:rabbitmq.bzl", "APP_VERSION") + +APP_ENV = """[ + {servers, undefined}, + {user_bind_pattern, none}, + {user_dn_pattern, "$${username}"}, + {dn_lookup_attribute, none}, + {dn_lookup_base, none}, + {group_lookup_base, none}, + {dn_lookup_bind, as_user}, + {other_bind, as_user}, + {anon_auth, false}, + {vhost_access_query, {constant, true}}, + {resource_access_query, {constant, true}}, + {topic_access_query, {constant, true}}, + {tag_queries, [{administrator, {constant, false}}]}, + {use_ssl, false}, + {use_starttls, false}, + {ssl_options, []}, + {port, 389}, + {timeout, infinity}, + {log, false}, + {pool_size, 64}, + {idle_timeout, 300000} + ]""" + +APP_NAME = "rabbitmq_auth_backend_ldap" + +APP_DESCRIPTION = "RabbitMQ LDAP Authentication Backend" + +APP_MODULE = "rabbit_auth_backend_ldap_app" + +EXTRA_APPS = [ + "eldap", +] + +DEPS = [ + "//deps/rabbit_common:bazel_erlang_lib", +] + +RUNTIME_DEPS = [ + "//deps/rabbit:bazel_erlang_lib", + # "//deps/amqp_client:bazel_erlang_lib", +] + +FIRST_SRCS = [ + # "src/rabbit_auth_cache.erl", +] + +erlang_lib( + app_description = APP_DESCRIPTION, + app_env = APP_ENV, + app_module = APP_MODULE, + app_name = APP_NAME, + app_version = APP_VERSION, + extra_apps = EXTRA_APPS, + first_srcs = FIRST_SRCS, + runtime_deps = RUNTIME_DEPS, + deps = DEPS, +) + +test_erlang_lib( + app_description = APP_DESCRIPTION, + app_env = APP_ENV, + app_module = APP_MODULE, + app_name = APP_NAME, + app_version = APP_VERSION, + first_srcs = FIRST_SRCS, + runtime_deps = RUNTIME_DEPS, + deps = DEPS, +) + +TEST_ERLC_OPTS = [ + "+nowarn_export_all", +] + +rabbitmq_home( + name = "broker-for-tests-home", + plugins = [ + "//deps/rabbit:bazel_erlang_lib", + ":bazel_erlang_lib", + ], +) + +rabbitmq_run( + name = "rabbitmq-for-tests-run", + home = ":broker-for-tests-home", +) + +ct_suite( + data = [ + "@rabbitmq_ct_helpers//tools/tls-certs:Makefile", + "@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in", + ], + erlc_opts = TEST_ERLC_OPTS, + suite_name = "config_schema_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + "RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_auth_backend_ldap/rabbitmq-for-tests-run", + "RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_auth_backend_ldap/broker-for-tests-home/sbin/rabbitmqctl", + "RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_auth_backend_ldap/broker-for-tests-home/sbin/rabbitmq-plugins", + }, + tools = [ + ":rabbitmq-for-tests-run", + ], + runtime_deps = [ + "//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib", + "//deps/rabbitmq_cli:rabbitmqctl", + "@rabbitmq_ct_client_helpers//:bazel_erlang_lib", + "@rabbitmq_ct_helpers//:bazel_erlang_lib", + ], +) + +ct_suite( + size = "small", + additional_srcs = [ + "test/rabbit_ldap_seed.erl", + ], + data = [ + "example/global.ldif", + "example/memberof_init.ldif", + "example/refint_1.ldif", + "example/refint_2.ldif", + "@rabbitmq_ct_helpers//tools/tls-certs:Makefile", + "@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in", + ], + erlc_opts = TEST_ERLC_OPTS, + suite_name = "system_SUITE", + tags = [ + "ldap", + ], + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + "RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_auth_backend_ldap/rabbitmq-for-tests-run", + "RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_auth_backend_ldap/broker-for-tests-home/sbin/rabbitmqctl", + "RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_auth_backend_ldap/broker-for-tests-home/sbin/rabbitmq-plugins", + }, + tools = [ + ":rabbitmq-for-tests-run", + ], + runtime_deps = [ + "//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib", + "//deps/rabbitmq_cli:rabbitmqctl", + "@rabbitmq_ct_client_helpers//:bazel_erlang_lib", + "@rabbitmq_ct_helpers//:bazel_erlang_lib", + ], + deps = [ + "//deps/amqp_client:bazel_erlang_lib", + "//deps/rabbit_common:bazel_erlang_lib", + ], +) + +ct_suite( + size = "small", + erlc_opts = TEST_ERLC_OPTS, + suite_name = "unit_SUITE", + test_env = { + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + }, +) diff --git a/deps/rabbitmq_auth_backend_ldap/src/rabbit_log_ldap.erl b/deps/rabbitmq_auth_backend_ldap/src/rabbit_log_ldap.erl index ed1e706940..f5dbe9499d 100644 --- a/deps/rabbitmq_auth_backend_ldap/src/rabbit_log_ldap.erl +++ b/deps/rabbitmq_auth_backend_ldap/src/rabbit_log_ldap.erl @@ -18,7 +18,7 @@ emergency/1, emergency/2, emergency/3, none/1, none/2, none/3]). --include("include/logging.hrl"). +-include("logging.hrl"). -compile({no_auto_import, [error/2]}). diff --git a/deps/rabbitmq_cli/BUILD.bazel b/deps/rabbitmq_cli/BUILD.bazel new file mode 100644 index 0000000000..b8c78bd450 --- /dev/null +++ b/deps/rabbitmq_cli/BUILD.bazel @@ -0,0 +1,42 @@ +load(":rabbitmqctl.bzl", "rabbitmqctl") +load(":rabbitmqctl_test.bzl", "rabbitmqctl_test") +load(":elixir.bzl", "elixir") +load("//:rabbitmq.bzl", "APP_VERSION") + +# This rule simply exposes elixir as a runtime lib for tests in erlang +elixir( + name = "elixir_as_bazel_erlang_lib", + visibility = ["//visibility:public"], +) + +# Note: All the various rabbitmq-* scripts are just copies of rabbitmqctl +rabbitmqctl( + name = "rabbitmqctl", + srcs = glob([ + "mix.exs", + "config/config.exs", + "lib/**/*.ex", + ]), + visibility = ["//visibility:public"], + deps = [ + "//deps/rabbit_common:bazel_erlang_lib", + ], +) + +rabbitmqctl_test( + name = "rabbitmqctl_tests", + size = "large", + srcs = glob([ + "mix.exs", + "config/config.exs", + "lib/**/*.ex", + "test/**/*.exs", + ]), + data = glob(["test/fixtures/**/*"]), + rabbitmq_run = "//:rabbitmq-for-cli-tests-run", + deps = [ + "//deps/amqp_client:bazel_erlang_lib", + "//deps/rabbit:bazel_erlang_lib", + "//deps/rabbit_common:bazel_erlang_lib", + ], +) diff --git a/deps/rabbitmq_cli/elixir.bzl b/deps/rabbitmq_cli/elixir.bzl new file mode 100644 index 0000000000..e9d738ef5f --- /dev/null +++ b/deps/rabbitmq_cli/elixir.bzl @@ -0,0 +1,45 @@ +load("@bazel-erlang//:erlang_home.bzl", "ErlangHomeProvider", "ErlangVersionProvider") +load("@bazel-erlang//:bazel_erlang_lib.bzl", "ErlangLibInfo", "path_join") +load("//:elixir_home.bzl", "ElixirHomeProvider") + +def _impl(ctx): + erlang_version = ctx.attr._erlang_version[ErlangVersionProvider].version + erlang_home = ctx.attr._erlang_home[ErlangHomeProvider].path + elixir_home = ctx.attr._elixir_home[ElixirHomeProvider].path + + ebin = ctx.actions.declare_directory(path_join(ctx.attr.name, "ebin")) + + ctx.actions.run( + inputs = [], + outputs = [ebin], + executable = "cp", + arguments = [ + "-R", + "{}/lib/elixir/ebin".format(elixir_home), + ebin.dirname, + ], + ) + + return [ + DefaultInfo( + files = depset([ebin]), + runfiles = ctx.runfiles([ebin]), + ), + ErlangLibInfo( + lib_name = ctx.attr.name, + erlang_version = erlang_version, + include = [], + beam = [ebin], + priv = [], + deps = [], + ), + ] + +elixir = rule( + implementation = _impl, + attrs = { + "_erlang_version": attr.label(default = "@bazel-erlang//:erlang_version"), + "_erlang_home": attr.label(default = "@bazel-erlang//:erlang_home"), + "_elixir_home": attr.label(default = "//:elixir_home"), + }, +) diff --git a/deps/rabbitmq_cli/lib/rabbitmq/cli/core/command_modules.ex b/deps/rabbitmq_cli/lib/rabbitmq/cli/core/command_modules.ex index 0e0f07fed9..006119cc7a 100644 --- a/deps/rabbitmq_cli/lib/rabbitmq/cli/core/command_modules.ex +++ b/deps/rabbitmq_cli/lib/rabbitmq/cli/core/command_modules.ex @@ -100,7 +100,7 @@ defmodule RabbitMQ.CLI.Core.CommandModules do end) end - defp make_module_map(modules, scope) do + defp make_module_map(modules, scope) when modules != nil do commands_ns = Regex.recompile!(@commands_ns) modules diff --git a/deps/rabbitmq_cli/rabbitmqctl.bzl b/deps/rabbitmq_cli/rabbitmqctl.bzl new file mode 100644 index 0000000000..4bc0f4d3b3 --- /dev/null +++ b/deps/rabbitmq_cli/rabbitmqctl.bzl @@ -0,0 +1,162 @@ +load("@bazel-erlang//:erlang_home.bzl", "ErlangHomeProvider", "ErlangVersionProvider") +load( + "@bazel-erlang//:bazel_erlang_lib.bzl", + "BEGINS_WITH_FUN", + "ErlangLibInfo", + "QUERY_ERL_VERSION", + "flat_deps", + "path_join", +) +load("//:elixir_home.bzl", "ElixirHomeProvider") + +MIX_DEPS_DIR = "mix_deps" + +def _impl(ctx): + erlang_version = ctx.attr._erlang_version[ErlangVersionProvider].version + erlang_home = ctx.attr._erlang_home[ErlangHomeProvider].path + elixir_home = ctx.attr._elixir_home[ElixirHomeProvider].path + + escript = ctx.actions.declare_file(path_join("escript", "rabbitmqctl")) + ebin = ctx.actions.declare_directory("ebin") + + copy_compiled_deps_commands = [] + copy_compiled_deps_commands.append("mkdir ${{MIX_INVOCATION_DIR}}/{}".format(MIX_DEPS_DIR)) + for dep in ctx.attr.deps: + lib_info = dep[ErlangLibInfo] + if lib_info.erlang_version != erlang_version: + fail("Mismatched erlang versions", erlang_version, lib_info.erlang_version) + + dest_dir = path_join("${MIX_INVOCATION_DIR}", MIX_DEPS_DIR, lib_info.lib_name) + copy_compiled_deps_commands.append( + "mkdir {}".format(dest_dir), + ) + copy_compiled_deps_commands.append( + "mkdir {}".format(path_join(dest_dir, "include")), + ) + copy_compiled_deps_commands.append( + "mkdir {}".format(path_join(dest_dir, "ebin")), + ) + for hdr in lib_info.include: + copy_compiled_deps_commands.append( + "cp ${{PWD}}/{source} {target}".format( + source = hdr.path, + target = path_join(dest_dir, "include", hdr.basename), + ), + ) + for beam in lib_info.beam: + copy_compiled_deps_commands.append( + "cp ${{PWD}}/{source} {target}".format( + source = beam.path, + target = path_join(dest_dir, "ebin", beam.basename), + ), + ) + + mix_invocation_dir = ctx.actions.declare_directory("{}_mix".format(ctx.label.name)) + + package_dir = ctx.label.package + if ctx.label.workspace_root != "": + package_dir = path_join(ctx.label.workspace_root, package_dir) + + script = """ + set -euo pipefail + + export LANG="en_US.UTF-8" + export LC_ALL="en_US.UTF-8" + + export PATH={elixir_home}/bin:{erlang_home}/bin:${{PATH}} + + MIX_INVOCATION_DIR="{mix_invocation_dir}" + + cp -R ${{PWD}}/{package_dir}/config ${{MIX_INVOCATION_DIR}}/config + # cp -R ${{PWD}}/{package_dir}/include ${{MIX_INVOCATION_DIR}}/include # rabbitmq_cli's include directory is empty + cp -R ${{PWD}}/{package_dir}/lib ${{MIX_INVOCATION_DIR}}/lib + cp ${{PWD}}/{package_dir}/mix.exs ${{MIX_INVOCATION_DIR}}/mix.exs + + {copy_compiled_deps_command} + + cd ${{MIX_INVOCATION_DIR}} + export HOME=${{PWD}} + + {begins_with_fun} + V=$({query_erlang_version}) + if ! beginswith "{erlang_version}" "$V"; then + echo "Erlang version mismatch (Expected {erlang_version}, found $V)" + exit 1 + fi + + export DEPS_DIR={mix_deps_dir} + mix local.hex --force + mix local.rebar --force + mix make_all + + cd ${{OLDPWD}} + cp ${{MIX_INVOCATION_DIR}}/escript/rabbitmqctl {escript_path} + + mkdir -p {ebin_dir} + mv ${{MIX_INVOCATION_DIR}}/_build/dev/lib/rabbitmqctl/ebin/* {ebin_dir} + mv ${{MIX_INVOCATION_DIR}}/_build/dev/lib/rabbitmqctl/consolidated/* {ebin_dir} + + rm -dR ${{MIX_INVOCATION_DIR}} + mkdir ${{MIX_INVOCATION_DIR}} + touch ${{MIX_INVOCATION_DIR}}/placeholder + """.format( + begins_with_fun = BEGINS_WITH_FUN, + query_erlang_version = QUERY_ERL_VERSION, + erlang_version = erlang_version, + erlang_home = erlang_home, + elixir_home = elixir_home, + mix_invocation_dir = mix_invocation_dir.path, + package_dir = package_dir, + copy_compiled_deps_command = " && ".join(copy_compiled_deps_commands), + mix_deps_dir = MIX_DEPS_DIR, + escript_path = escript.path, + ebin_dir = ebin.path, + ) + + inputs = [] + inputs.extend(ctx.files.srcs) + for dep in ctx.attr.deps: + lib_info = dep[ErlangLibInfo] + inputs.extend(lib_info.include) + inputs.extend(lib_info.beam) + + ctx.actions.run_shell( + inputs = inputs, + outputs = [escript, ebin, mix_invocation_dir], + command = script, + mnemonic = "MIX", + ) + + deps = flat_deps(ctx.attr.deps) + + runfiles = ctx.runfiles([ebin]) + for dep in ctx.attr.deps: + runfiles = runfiles.merge(dep[DefaultInfo].default_runfiles) + + return [ + DefaultInfo( + executable = escript, + files = depset([ebin]), + runfiles = runfiles, + ), + ErlangLibInfo( + lib_name = ctx.attr.name, + erlang_version = erlang_version, + include = [], + beam = [ebin], + priv = [], + deps = deps, + ), + ] + +rabbitmqctl = rule( + implementation = _impl, + attrs = { + "srcs": attr.label_list(allow_files = True), + "deps": attr.label_list(providers = [ErlangLibInfo]), + "_erlang_version": attr.label(default = "@bazel-erlang//:erlang_version"), + "_erlang_home": attr.label(default = "@bazel-erlang//:erlang_home"), + "_elixir_home": attr.label(default = "//:elixir_home"), + }, + executable = True, +) diff --git a/deps/rabbitmq_cli/rabbitmqctl_test.bzl b/deps/rabbitmq_cli/rabbitmqctl_test.bzl new file mode 100644 index 0000000000..50ce275c05 --- /dev/null +++ b/deps/rabbitmq_cli/rabbitmqctl_test.bzl @@ -0,0 +1,150 @@ +load("@bazel-erlang//:erlang_home.bzl", "ErlangHomeProvider", "ErlangVersionProvider") +load("@bazel-erlang//:bazel_erlang_lib.bzl", "BEGINS_WITH_FUN", "ErlangLibInfo", "QUERY_ERL_VERSION", "path_join") +load("@bazel-erlang//:ct.bzl", "code_paths") +load("//:elixir_home.bzl", "ElixirHomeProvider") +load(":rabbitmqctl.bzl", "MIX_DEPS_DIR") + +def _lib_dirs(dep): + return [path_join(p, "..") for p in code_paths(dep)] + +def _impl(ctx): + erlang_version = ctx.attr._erlang_version[ErlangVersionProvider].version + erlang_home = ctx.attr._erlang_home[ErlangHomeProvider].path + elixir_home = ctx.attr._elixir_home[ElixirHomeProvider].path + + copy_compiled_deps_commands = [] + copy_compiled_deps_commands.append("mkdir ${{TEST_UNDECLARED_OUTPUTS_DIR}}/{}".format(MIX_DEPS_DIR)) + for dep in ctx.attr.deps: + lib_info = dep[ErlangLibInfo] + if lib_info.erlang_version != erlang_version: + fail("Mismatched erlang versions", erlang_version, lib_info.erlang_version) + + dest_dir = path_join("${TEST_UNDECLARED_OUTPUTS_DIR}", MIX_DEPS_DIR, lib_info.lib_name) + copy_compiled_deps_commands.append( + "mkdir {}".format(dest_dir), + ) + copy_compiled_deps_commands.append( + "mkdir {}".format(path_join(dest_dir, "include")), + ) + copy_compiled_deps_commands.append( + "mkdir {}".format(path_join(dest_dir, "ebin")), + ) + for hdr in lib_info.include: + copy_compiled_deps_commands.append( + "cp ${{PWD}}/{source} {target}".format( + source = hdr.short_path, + target = path_join(dest_dir, "include", hdr.basename), + ), + ) + for beam in lib_info.beam: + copy_compiled_deps_commands.append( + "cp ${{PWD}}/{source} {target}".format( + source = beam.short_path, + target = path_join(dest_dir, "ebin", beam.basename), + ), + ) + + erl_libs = ":".join( + [path_join("${TEST_SRCDIR}/${TEST_WORKSPACE}", d) for dep in ctx.attr.deps for d in _lib_dirs(dep)], + ) + + script = """ + set -euo pipefail + + export LANG="en_US.UTF-8" + export LC_ALL="en_US.UTF-8" + + export PATH={elixir_home}/bin:{erlang_home}/bin:${{PATH}} + + INITIAL_DIR=${{PWD}} + + ln -s ${{PWD}}/{package_dir}/config ${{TEST_UNDECLARED_OUTPUTS_DIR}} + # ln -s ${{PWD}}/{package_dir}/include ${{TEST_UNDECLARED_OUTPUTS_DIR}} + ln -s ${{PWD}}/{package_dir}/lib ${{TEST_UNDECLARED_OUTPUTS_DIR}} + ln -s ${{PWD}}/{package_dir}/test ${{TEST_UNDECLARED_OUTPUTS_DIR}} + ln -s ${{PWD}}/{package_dir}/mix.exs ${{TEST_UNDECLARED_OUTPUTS_DIR}} + + {copy_compiled_deps_command} + + cd ${{TEST_UNDECLARED_OUTPUTS_DIR}} + + export HOME=${{PWD}} + + {begins_with_fun} + V=$({query_erlang_version}) + if ! beginswith "{erlang_version}" "$V"; then + echo "Erlang version mismatch (Expected {erlang_version}, found $V)" + exit 1 + fi + + export DEPS_DIR={mix_deps_dir} + mix local.hex --force + mix local.rebar --force + mix make_deps + + # due to https://github.com/elixir-lang/elixir/issues/7699 we + # "run" the tests, but skip them all, in order to trigger + # compilation of all *_test.exs files before we actually run them + mix test --exclude test + + export TEST_TMPDIR=${{TEST_UNDECLARED_OUTPUTS_DIR}} + + # we need a running broker with certain plugins for this to pass + trap 'catch $?' EXIT + catch() {{ + pid=$(cat ${{TEST_TMPDIR}}/*/*.pid) + kill -TERM "${{pid}}" + }} + cd ${{INITIAL_DIR}} + ./{rabbitmq_run_cmd} start-background-broker + cd ${{TEST_UNDECLARED_OUTPUTS_DIR}} + + # The test cases will need to be able to load code from the deps + # directly, so we set ERL_LIBS + export ERL_LIBS={erl_libs} + + # run the actual tests + mix test --trace --max-failures 1 + """.format( + begins_with_fun = BEGINS_WITH_FUN, + query_erlang_version = QUERY_ERL_VERSION, + erlang_version = erlang_version, + erlang_home = erlang_home, + elixir_home = elixir_home, + package_dir = ctx.label.package, + copy_compiled_deps_command = " && ".join(copy_compiled_deps_commands), + mix_deps_dir = MIX_DEPS_DIR, + erl_libs = erl_libs, + rabbitmq_run_cmd = ctx.attr.rabbitmq_run[DefaultInfo].files_to_run.executable.short_path, + ) + + ctx.actions.write( + output = ctx.outputs.executable, + content = script, + ) + + runfiles = ctx.runfiles(ctx.files.srcs) + runfiles = runfiles.merge(ctx.runfiles(ctx.files.data)) + for dep in ctx.attr.deps: + lib_info = dep[ErlangLibInfo] + runfiles = runfiles.merge(ctx.runfiles(lib_info.include + lib_info.beam)) + runfiles = runfiles.merge(ctx.attr.rabbitmq_run[DefaultInfo].default_runfiles) + + return [DefaultInfo(runfiles = runfiles)] + +rabbitmqctl_test = rule( + implementation = _impl, + attrs = { + "srcs": attr.label_list(allow_files = [".ex", ".exs"]), + "data": attr.label_list(allow_files = True), + "deps": attr.label_list(providers = [ErlangLibInfo]), + "rabbitmq_run": attr.label( + executable = True, + cfg = "target", + ), + "_erlang_version": attr.label(default = "@bazel-erlang//:erlang_version"), + "_erlang_home": attr.label(default = "@bazel-erlang//:erlang_home"), + "_elixir_home": attr.label(default = "//:elixir_home"), + }, + test = True, +) diff --git a/deps/rabbitmq_codegen/BUILD.bazel b/deps/rabbitmq_codegen/BUILD.bazel new file mode 100644 index 0000000000..6aa6461d0f --- /dev/null +++ b/deps/rabbitmq_codegen/BUILD.bazel @@ -0,0 +1,18 @@ +exports_files([ + "amqp-1.0/messaging.xml", + "amqp-1.0/security.xml", + "amqp-1.0/transactions.xml", + "amqp-1.0/transport.xml", +]) + +exports_files([ + "amqp-rabbitmq-0.9.1.json", + "credit_extension.json", + "amqp-rabbitmq-0.8.json", +]) + +py_library( + name = "amqp_codegen", + srcs = ["amqp_codegen.py"], + visibility = ["//visibility:public"], +) diff --git a/deps/rabbitmq_federation/BUILD.bazel b/deps/rabbitmq_federation/BUILD.bazel new file mode 100644 index 0000000000..493d706868 --- /dev/null +++ b/deps/rabbitmq_federation/BUILD.bazel @@ -0,0 +1,24 @@ +load("//:rabbitmq.bzl", "APP_VERSION", "RABBITMQ_ERLC_OPTS", "rabbitmq_lib") + +APP_ENV = """[ + {pgroup_name_cluster_id, false}, + {internal_exchange_check_interval, 90000} + ]""" + +DEPS = [ + "//deps/rabbit_common:bazel_erlang_lib", + "//deps/rabbit:bazel_erlang_lib", + "//deps/amqp_client:bazel_erlang_lib", +] + +rabbitmq_lib( + app_description = "RabbitMQ Federation", + app_env = APP_ENV, + app_module = "rabbit_federation_app", + app_name = "rabbitmq_federation", + app_version = APP_VERSION, + build_deps = [ + "//deps/rabbitmq_cli:rabbitmqctl", + ], + deps = DEPS, +) diff --git a/deps/rabbitmq_federation/src/rabbit_log_federation.erl b/deps/rabbitmq_federation/src/rabbit_log_federation.erl index 89348abc0a..315f386eda 100644 --- a/deps/rabbitmq_federation/src/rabbit_log_federation.erl +++ b/deps/rabbitmq_federation/src/rabbit_log_federation.erl @@ -18,7 +18,7 @@ emergency/1, emergency/2, emergency/3, none/1, none/2, none/3]). --include("include/logging.hrl"). +-include("logging.hrl"). -compile({no_auto_import, [error/2, error/3]}). diff --git a/deps/rabbitmq_management/BUILD.bazel b/deps/rabbitmq_management/BUILD.bazel new file mode 100644 index 0000000000..ba72408709 --- /dev/null +++ b/deps/rabbitmq_management/BUILD.bazel @@ -0,0 +1,40 @@ +load("@bazel-erlang//:ct.bzl", "ct_test") +load("//:rabbitmq.bzl", "APP_VERSION", "RABBITMQ_ERLC_OPTS", "rabbitmq_lib") + +APP_ENV = """[ + {http_log_dir, none}, + {load_definitions, none}, + {management_db_cache_multiplier, 5}, + {process_stats_gc_timeout, 300000}, + {stats_event_max_backlog, 250}, + + {cors_allow_origins, []}, + {cors_max_age, 1800}, + {content_security_policy, "script-src 'self' 'unsafe-eval' 'unsafe-inline'; object-src 'self'"} + ]""" + +rabbitmq_lib( + app_description = "RabbitMQ Management Console", + app_env = APP_ENV, + app_module = "rabbit_mgmt_app", + app_name = "rabbitmq_management", + extra_apps = [ + "mnesia", + "ranch", + "ssl", + "crypto", + "public_key", + ], + first_srcs = [ + "src/rabbit_mgmt_extension.erl", + ], + deps = [ + "//deps/amqp_client:bazel_erlang_lib", + "//deps/rabbit:bazel_erlang_lib", + "//deps/rabbit_common:bazel_erlang_lib", + "//deps/rabbitmq_management_agent:bazel_erlang_lib", + "//deps/rabbitmq_web_dispatch:bazel_erlang_lib", + "@cowboy//:bazel_erlang_lib", + "@cowlib//:bazel_erlang_lib", + ], +) diff --git a/deps/rabbitmq_management_agent/BUILD.bazel b/deps/rabbitmq_management_agent/BUILD.bazel new file mode 100644 index 0000000000..369fec180d --- /dev/null +++ b/deps/rabbitmq_management_agent/BUILD.bazel @@ -0,0 +1,33 @@ +load("@bazel-erlang//:ct.bzl", "ct_test") +load("//:rabbitmq.bzl", "rabbitmq_lib") + +APP_ENV = """[ + {rates_mode, basic}, + {sample_retention_policies, + %% List of {MaxAgeInSeconds, SampleEveryNSeconds} + [{global, [{605, 5}, {3660, 60}, {29400, 600}, {86400, 1800}]}, + {basic, [{605, 5}, {3600, 60}]}, + {detailed, [{605, 5}]}]} + ]""" + +rabbitmq_lib( + app_description = "RabbitMQ Management Agent", + app_env = APP_ENV, + app_module = "rabbit_mgmt_agent_app", + app_name = "rabbitmq_management_agent", + build_deps = [ + "//deps/rabbitmq_cli:rabbitmqctl", + ], + extra_apps = [ + "xmerl", + "mnesia", + "ranch", + "ssl", + "crypto", + "public_key", + ], + deps = [ + "//deps/rabbit:bazel_erlang_lib", + "//deps/rabbit_common:bazel_erlang_lib", + ], +) diff --git a/deps/rabbitmq_stomp/BUILD.bazel b/deps/rabbitmq_stomp/BUILD.bazel new file mode 100644 index 0000000000..90832dd3e6 --- /dev/null +++ b/deps/rabbitmq_stomp/BUILD.bazel @@ -0,0 +1,42 @@ +load("//:rabbitmq.bzl", "APP_VERSION", "RABBITMQ_ERLC_OPTS", "rabbitmq_lib") + +APP_ENV = """[ + {default_user, + [{login, <<"guest">>}, + {passcode, <<"guest">>}]}, + {default_vhost, <<"/">>}, + {default_topic_exchange, <<"amq.topic">>}, + {default_nack_requeue, true}, + {ssl_cert_login, false}, + {implicit_connect, false}, + {tcp_listeners, [61613]}, + {ssl_listeners, []}, + {num_tcp_acceptors, 10}, + {num_ssl_acceptors, 10}, + {tcp_listen_options, [{backlog, 128}, + {nodelay, true}]}, + %% see rabbitmq/rabbitmq-stomp#39 + {trailing_lf, true}, + %% see rabbitmq/rabbitmq-stomp#57 + {hide_server_info, false}, + {proxy_protocol, false} + ]""" + +DEPS = [ + "@ranch//:bazel_erlang_lib", + "//deps/rabbit_common:bazel_erlang_lib", + "//deps/rabbit:bazel_erlang_lib", + "//deps/amqp_client:bazel_erlang_lib", +] + +rabbitmq_lib( + app_description = "RabbitMQ STOMP plugin", + app_env = APP_ENV, + app_module = "rabbit_stomp", + app_name = "rabbitmq_stomp", + app_version = APP_VERSION, + build_deps = [ + "//deps/rabbitmq_cli:rabbitmqctl", + ], + deps = DEPS, +) diff --git a/deps/rabbitmq_web_dispatch/BUILD.bazel b/deps/rabbitmq_web_dispatch/BUILD.bazel new file mode 100644 index 0000000000..fa3baabebb --- /dev/null +++ b/deps/rabbitmq_web_dispatch/BUILD.bazel @@ -0,0 +1,16 @@ +load("@bazel-erlang//:ct.bzl", "ct_test") +load("//:rabbitmq.bzl", "APP_VERSION", "RABBITMQ_ERLC_OPTS", "rabbitmq_lib") + +rabbitmq_lib( + app_description = "RabbitMQ Web Dispatcher", + app_module = "rabbit_web_dispatch_app", + app_name = "rabbitmq_web_dispatch", + extra_apps = [ + "inets", + ], + deps = [ + "//deps/rabbit:bazel_erlang_lib", + "//deps/rabbit_common:bazel_erlang_lib", + "@cowboy//:bazel_erlang_lib", + ], +) diff --git a/elixir_home.bzl b/elixir_home.bzl new file mode 100644 index 0000000000..8f35fc90ec --- /dev/null +++ b/elixir_home.bzl @@ -0,0 +1,13 @@ +ElixirHomeProvider = provider( + fields = ["path"], +) + +def _impl(ctx): + return ElixirHomeProvider(path = ctx.build_setting_value) + +elixir_home = rule( + implementation = _impl, + # The next line marks this as a special rule that we can + # configure when invoking the cli or via .bazelrc file + build_setting = config.string(flag = True), +) diff --git a/rabbitmq.bzl b/rabbitmq.bzl new file mode 100644 index 0000000000..1cafa6d7df --- /dev/null +++ b/rabbitmq.bzl @@ -0,0 +1,101 @@ +load("@bazel-erlang//:bazel_erlang_lib.bzl", "TEST_ERLC_OPTS", "erlang_lib", "test_erlang_lib") +load("@bazel-erlang//:ct.bzl", "ct_suite", "ct_test") +load("//deps/rabbitmq_cli:rabbitmqctl.bzl", "rabbitmqctl") +load("//deps/rabbitmq_cli:rabbitmqctl_test.bzl", "rabbitmqctl_test") + +RABBITMQ_ERLC_OPTS = [] + +RABBITMQ_TEST_ERLC_OPTS = TEST_ERLC_OPTS + [ + "+debug_info", + "+nowarn_export_all", +] + +APP_VERSION = "3.9.0" + +def required_plugins(rabbitmq_workspace = "@rabbitmq-server"): + return [ + rabbitmq_workspace + "//deps/rabbit:bazel_erlang_lib", + ] + +def management_plugins(rabbitmq_workspace = "@rabbitmq-server"): + return [ + rabbitmq_workspace + "//deps/rabbitmq_management:bazel_erlang_lib", + ] + +def rabbitmq_lib( + app_name = "", + app_version = APP_VERSION, + app_description = "", + app_module = "", + app_registered = [], + app_env = "[]", + extra_apps = [], + extra_erlc_opts = [], + first_srcs = [], + build_deps = [], + deps = [], + runtime_deps = []): + erlang_lib( + app_name = app_name, + app_version = app_version, + app_description = app_description, + app_module = app_module, + app_registered = app_registered, + app_env = app_env, + extra_apps = extra_apps, + erlc_opts = RABBITMQ_ERLC_OPTS + extra_erlc_opts, + first_srcs = first_srcs, + build_deps = build_deps, + deps = deps, + runtime_deps = runtime_deps, + ) + + test_erlang_lib( + app_name = app_name, + app_version = app_version, + app_description = app_description, + app_module = app_module, + app_registered = app_registered, + app_env = app_env, + extra_apps = extra_apps, + erlc_opts = RABBITMQ_ERLC_OPTS + RABBITMQ_TEST_ERLC_OPTS + extra_erlc_opts, + first_srcs = first_srcs, + build_deps = build_deps, + deps = deps, + runtime_deps = runtime_deps, + ) + +def rabbitmq_integration_suite( + data = [], + extra_erlc_opts = [], + test_env = {}, + tools = [], + deps = [], + runtime_deps = [], + **kwargs): + ct_suite( + erlc_opts = RABBITMQ_ERLC_OPTS + RABBITMQ_TEST_ERLC_OPTS + extra_erlc_opts, + data = [ + "@rabbitmq_ct_helpers//tools/tls-certs:Makefile", + "@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in", + ] + data, + test_env = dict({ + "RABBITMQ_CT_SKIP_AS_ERROR": "true", + "RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/rabbitmq-for-tests-run", + "RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/broker-for-tests-home/sbin/rabbitmqctl", + "RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/broker-for-tests-home/sbin/rabbitmq-plugins", + }.items() + test_env.items()), + tools = [ + "//:rabbitmq-for-tests-run", + ] + tools, + runtime_deps = [ + "//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib", + "//deps/rabbitmq_cli:rabbitmqctl", + "@rabbitmq_ct_client_helpers//:bazel_erlang_lib", + ] + runtime_deps, + deps = [ + "//deps/amqp_client:bazel_erlang_lib", + "@rabbitmq_ct_helpers//:bazel_erlang_lib", + ] + deps, + **kwargs + ) diff --git a/rabbitmq_home.bzl b/rabbitmq_home.bzl new file mode 100644 index 0000000000..cc11c9c735 --- /dev/null +++ b/rabbitmq_home.bzl @@ -0,0 +1,137 @@ +load("@bazel-erlang//:bazel_erlang_lib.bzl", "ErlangLibInfo", "flat_deps", "path_join") + +RabbitmqHomeInfo = provider( + doc = "An assembled RABBITMQ_HOME dir", + fields = { + "sbin": "Files making up the sbin dir", + "escript": "Files making up the escript dir", + "plugins": "Files making up the plugins dir", + "erlang_version": "Version of the Erlang compiler used", + }, +) + +def _copy_script(ctx, script): + dest = ctx.actions.declare_file(path_join(ctx.label.name, "sbin", script.basename)) + args = ctx.actions.args() + args.add_all([script, dest]) + ctx.actions.run( + inputs = [script], + outputs = [dest], + executable = "cp", + arguments = [args], + ) + return dest + +def _link_escript(ctx, escript): + e = ctx.attr._rabbitmqctl_escript.files_to_run.executable + s = ctx.actions.declare_file(path_join(ctx.label.name, "escript", escript)) + ctx.actions.symlink( + output = s, + target_file = e, + ) + return s + +def _priv_file_dest_relative_path(plugin_label, f): + rel_base = plugin_label.package + if plugin_label.workspace_root != "": + rel_base = path_join(plugin_label.workspace_root, rel_base) + if rel_base == "": + return f.path + else: + return f.path.replace(rel_base + "/", "") + +def _plugins_dir_links(ctx, plugin): + lib_info = plugin[ErlangLibInfo] + plugin_path = path_join( + ctx.label.name, + "plugins", + lib_info.lib_name, + ) + + links = [] + for f in lib_info.include: + o = ctx.actions.declare_file(path_join(plugin_path, "include", f.basename)) + ctx.actions.symlink( + output = o, + target_file = f, + ) + links.append(o) + + for f in lib_info.beam: + if f.is_directory: + if f.basename != "ebin": + fail("{} contains a directory in 'beam' that is not an ebin dir".format(lib_info.lib_name)) + o = ctx.actions.declare_file(path_join(plugin_path, "ebin")) + else: + o = ctx.actions.declare_file(path_join(plugin_path, "ebin", f.basename)) + ctx.actions.symlink( + output = o, + target_file = f, + ) + links.append(o) + + for f in lib_info.priv: + p = _priv_file_dest_relative_path(plugin.label, f) + o = ctx.actions.declare_file(path_join(plugin_path, p)) + ctx.actions.symlink( + output = o, + target_file = f, + ) + links.append(o) + + return links + +def _unique_versions(plugins): + erlang_versions = [] + for plugin in plugins: + erlang_version = plugin[ErlangLibInfo].erlang_version + if not erlang_version in erlang_versions: + erlang_versions.append(erlang_version) + return erlang_versions + +def _flatten(list_of_lists): + return [item for sublist in list_of_lists for item in sublist] + +def _impl(ctx): + plugins = flat_deps(ctx.attr.plugins) + + erlang_versions = _unique_versions(plugins) + if len(erlang_versions) > 1: + fail("plugins do not have a unified erlang version", erlang_versions) + + scripts = [_copy_script(ctx, script) for script in ctx.files._scripts] + + escripts = [_link_escript(ctx, escript) for escript in ["rabbitmq-plugins", "rabbitmqctl"]] + + plugins = _flatten([_plugins_dir_links(ctx, plugin) for plugin in plugins]) + + return [ + RabbitmqHomeInfo( + sbin = scripts, + escript = escripts, + plugins = plugins, + erlang_version = erlang_versions[0], + ), + DefaultInfo( + files = depset(scripts + escripts + plugins), + ), + ] + +rabbitmq_home = rule( + implementation = _impl, + attrs = { + "_scripts": attr.label_list( + default = [ + "//deps/rabbit:scripts/rabbitmq-defaults", + "//deps/rabbit:scripts/rabbitmq-env", + "//deps/rabbit:scripts/rabbitmq-plugins", + "//deps/rabbit:scripts/rabbitmq-server", + "//deps/rabbit:scripts/rabbitmqctl", + ], + allow_files = True, + ), + "_rabbitmqctl_escript": attr.label(default = "//deps/rabbitmq_cli:rabbitmqctl"), + "_erlang_version": attr.label(default = "@bazel-erlang//:erlang_version"), + "plugins": attr.label_list(), + }, +) diff --git a/rabbitmq_run.bzl b/rabbitmq_run.bzl new file mode 100644 index 0000000000..4bb7c77c56 --- /dev/null +++ b/rabbitmq_run.bzl @@ -0,0 +1,80 @@ +load("@bazel-erlang//:erlang_home.bzl", "ErlangHomeProvider", "ErlangVersionProvider") +load("@bazel-erlang//:bazel_erlang_lib.bzl", "path_join") +load("@bazel-erlang//:ct.bzl", "sanitize_sname") +load(":rabbitmq_home.bzl", "RabbitmqHomeInfo") + +# Note: Theses rules take advantage of the fact that when the files from +# the rabbitmq_home rule are used as runfiles, they are linked in +# at their declared relative paths. In other words, since +# rabbitmq_home declares "sbin/rabbitmq-server", is still at +# "sbin/rabbitmq-server" when our script runs. + +def _impl(ctx): + erlang_version = ctx.attr._erlang_version[ErlangVersionProvider].version + rabbitmq_home = ctx.attr.home[RabbitmqHomeInfo] + + if rabbitmq_home.erlang_version != erlang_version: + fail("Mismatched erlang versions", erlang_version, rabbitmq_home.erlang_version) + + erl_libs = ":".join( + [p.short_path for p in rabbitmq_home.plugins], + ) + + ctx.actions.expand_template( + template = ctx.file._template, + output = ctx.outputs.executable, + substitutions = { + "{RABBITMQ_HOME}": ctx.attr.home.label.name, + "{ERL_LIBS}": erl_libs, + "{ERLANG_HOME}": ctx.attr._erlang_home[ErlangHomeProvider].path, + "{SNAME}": sanitize_sname("sbb-" + ctx.attr.name), + }, + is_executable = True, + ) + + return [DefaultInfo( + runfiles = ctx.runfiles(ctx.attr.home[DefaultInfo].files.to_list()), + )] + +rabbitmq_run = rule( + implementation = _impl, + attrs = { + "_template": attr.label( + default = Label("//:scripts/bazel/rabbitmq-run.sh"), + allow_single_file = True, + ), + "_erlang_home": attr.label(default = "@bazel-erlang//:erlang_home"), + "_erlang_version": attr.label(default = "@bazel-erlang//:erlang_version"), + "home": attr.label(providers = [RabbitmqHomeInfo]), + }, + executable = True, +) + +def _run_command_impl(ctx): + ctx.actions.write( + output = ctx.outputs.executable, + content = "exec ./{} {} $@".format( + ctx.attr.rabbitmq_run[DefaultInfo].files_to_run.executable.short_path, + ctx.attr.subcommand, + ), + ) + + return [DefaultInfo( + runfiles = ctx.attr.rabbitmq_run[DefaultInfo].default_runfiles, + )] + +rabbitmq_run_command = rule( + implementation = _run_command_impl, + attrs = { + "rabbitmq_run": attr.label( + executable = True, + cfg = "target", + ), + "subcommand": attr.string(values = [ + "run-broker", + "start-background-broker", + "stop-node", + ]), + }, + executable = True, +) diff --git a/rabbitmqctl.bzl b/rabbitmqctl.bzl new file mode 100644 index 0000000000..ccf430225b --- /dev/null +++ b/rabbitmqctl.bzl @@ -0,0 +1,32 @@ +load("@bazel-erlang//:erlang_home.bzl", "ErlangVersionProvider") +load(":rabbitmq_home.bzl", "RabbitmqHomeInfo") + +def _impl(ctx): + erlang_version = ctx.attr._erlang_version[ErlangVersionProvider].version + + rabbitmq_home = ctx.attr.home[RabbitmqHomeInfo] + + if rabbitmq_home.erlang_version != erlang_version: + fail("Mismatched erlang versions", erlang_version, rabbitmq_home.erlang_version) + + script = """ + exec ./{}/sbin/rabbitmqctl $@ + """.format(ctx.attr.home.label.name) + + ctx.actions.write( + output = ctx.outputs.executable, + content = script, + ) + + return [DefaultInfo( + runfiles = ctx.runfiles(ctx.attr.home[DefaultInfo].files.to_list()), + )] + +rabbitmqctl = rule( + implementation = _impl, + attrs = { + "_erlang_version": attr.label(default = "@bazel-erlang//:erlang_version"), + "home": attr.label(providers = [RabbitmqHomeInfo]), + }, + executable = True, +) diff --git a/scripts/bazel/kill_orphaned_ct_run.sh b/scripts/bazel/kill_orphaned_ct_run.sh new file mode 100755 index 0000000000..db53073bdd --- /dev/null +++ b/scripts/bazel/kill_orphaned_ct_run.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -euo pipefail + +pids=$(ps aux | grep -v awk | awk '/ct_run.*erl/ {print $2}') + +set -x +kill $pids diff --git a/scripts/bazel/rabbitmq-run.sh b/scripts/bazel/rabbitmq-run.sh new file mode 100644 index 0000000000..d79afc1d97 --- /dev/null +++ b/scripts/bazel/rabbitmq-run.sh @@ -0,0 +1,192 @@ +#!/usr/bin/env bash +set -euo pipefail + +# https://stackoverflow.com/a/4774063 +SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" + +if [ $1 = "-C" ]; then + cd $2 + shift 2 +fi + +for arg in "$@"; do + case $arg in + run-broker) + CMD="$arg" + ;; + start-background-broker) + CMD="$arg" + ;; + stop-node) + CMD="$arg" + ;; + set-resource-alarm) + CMD="$arg" + ;; + clear-resource-alarm) + CMD="$arg" + ;; + *) + export "$arg" + ;; + esac +done + +DEFAULT_PLUGINS_DIR=${SCRIPTPATH}/{RABBITMQ_HOME}/plugins +if [ ! -z ${EXTRA_PLUGINS_DIR+x} ]; then + DEFAULT_PLUGINS_DIR=${DEFAULT_PLUGINS_DIR}:${EXTRA_PLUGINS_DIR} +fi + +TEST_TMPDIR=${TEST_TMPDIR:=${TMPDIR}/rabbitmq-test-instances} +RABBITMQ_SCRIPTS_DIR=${SCRIPTPATH}/{RABBITMQ_HOME}/sbin +RABBITMQ_PLUGINS=${RABBITMQ_SCRIPTS_DIR}/rabbitmq-plugins +RABBITMQ_SERVER=${RABBITMQ_SCRIPTS_DIR}/rabbitmq-server +RABBITMQCTL=${RABBITMQ_SCRIPTS_DIR}/rabbitmqzctl + +export RABBITMQ_SCRIPTS_DIR RABBITMQCTL RABBITMQ_PLUGINS RABBITMQ_SERVER + +HOSTNAME="$(hostname -s)" + +RABBITMQ_NODENAME=${RABBITMQ_NODENAME:=rabbit@${HOSTNAME}} +RABBITMQ_NODENAME_FOR_PATHS=${RABBITMQ_NODENAME_FOR_PATHS:=${RABBITMQ_NODENAME}} +NODE_TMPDIR=${TEST_TMPDIR}/${RABBITMQ_NODENAME_FOR_PATHS} + +RABBITMQ_BASE=${NODE_TMPDIR} +RABBITMQ_PID_FILE=${NODE_TMPDIR}/${RABBITMQ_NODENAME_FOR_PATHS}.pid +RABBITMQ_LOG_BASE=${NODE_TMPDIR}/log +RABBITMQ_MNESIA_BASE=${NODE_TMPDIR}/mnesia +RABBITMQ_MNESIA_DIR=${RABBITMQ_MNESIA_BASE}/${RABBITMQ_NODENAME_FOR_PATHS} +RABBITMQ_QUORUM_DIR=${RABBITMQ_MNESIA_DIR}/quorum +RABBITMQ_STREAM_DIR=${RABBITMQ_MNESIA_DIR}/stream +RABBITMQ_PLUGINS_DIR=${RABBITMQ_PLUGINS_DIR:=${DEFAULT_PLUGINS_DIR}} +RABBITMQ_PLUGINS_EXPAND_DIR=${NODE_TMPDIR}/plugins +RABBITMQ_FEATURE_FLAGS_FILE=${NODE_TMPDIR}/feature_flags +RABBITMQ_ENABLED_PLUGINS_FILE=${NODE_TMPDIR}/enabled_plugins + +RABBITMQ_SERVER_START_ARGS="${RABBITMQ_SERVER_START_ARGS:=-ra wal_sync_method sync}" + +# Enable colourful debug logging by default +# To change this, set RABBITMQ_LOG to info, notice, warning etc. +RABBITMQ_LOG=${RABBITMQ_LOG:='debug,+color'} +export RABBITMQ_LOG + +if [ -z ${LEAVE_PLUGINS_DISABLED+x} ]; then + RABBITMQ_ENABLED_PLUGINS=ALL +else + RABBITMQ_ENABLED_PLUGINS= +fi + +mkdir -p ${TEST_TMPDIR} + +mkdir -p ${RABBITMQ_LOG_BASE} +mkdir -p ${RABBITMQ_MNESIA_BASE} +mkdir -p ${RABBITMQ_PLUGINS_EXPAND_DIR} + +export \ + RABBITMQ_NODENAME \ + RABBITMQ_NODE_IP_ADDRESS \ + RABBITMQ_BASE \ + RABBITMQ_PID_FILE \ + RABBITMQ_LOG_BASE \ + RABBITMQ_MNESIA_BASE \ + RABBITMQ_MNESIA_DIR \ + RABBITMQ_QUORUM_DIR \ + RABBITMQ_STREAM_DIR \ + RABBITMQ_FEATURE_FLAGS_FILE \ + RABBITMQ_PLUGINS_DIR \ + RABBITMQ_PLUGINS_EXPAND_DIR \ + RABBITMQ_SERVER_START_ARGS \ + RABBITMQ_ENABLED_PLUGINS \ + RABBITMQ_ENABLED_PLUGINS_FILE + +write_config_file() { +cat << EOF > ${RABBITMQ_CONFIG_FILE} +%% vim:ft=erlang: + +[ + {rabbit, [ + {loopback_users, []}, + {log, [{file, [{level, debug}]}, + {console, [{level, debug}]}]} + ]}, + {rabbitmq_management, [ + ]}, + {rabbitmq_mqtt, [ + ]}, + {rabbitmq_stomp, [ + ]}, + {ra, [ + {data_dir, "${RABBITMQ_QUORUM_DIR}"}, + {wal_sync_method, sync} + ]}, + {lager, [ + {colors, [ + %% https://misc.flogisoft.com/bash/tip_colors_and_formatting + {debug, "\\\e[0;34m" }, + {info, "\\\e[1;37m" }, + {notice, "\\\e[1;36m" }, + {warning, "\\\e[1;33m" }, + {error, "\\\e[1;31m" }, + {critical, "\\\e[1;35m" }, + {alert, "\\\e[1;44m" }, + {emergency, "\\\e[1;41m" } + ]} + ]}, + {osiris, [ + {data_dir, "${RABBITMQ_STREAM_DIR}"} + ]} +]. +EOF +} + +case $CMD in + run-broker) + export RABBITMQ_ALLOW_INPUT=true + export RABBITMQ_CONFIG_FILE=${TEST_TMPDIR}/test.config + write_config_file + ${RABBITMQ_SCRIPTS_DIR}/rabbitmq-server + ;; + start-background-broker) + RMQCTL_WAIT_TIMEOUT=${RMQCTL_WAIT_TIMEOUT:=60} + + ${RABBITMQ_SCRIPTS_DIR}/rabbitmq-server \ + > ${RABBITMQ_LOG_BASE}/startup_log \ + 2> ${RABBITMQ_LOG_BASE}/startup_err & + + # rabbitmqctl wait shells out to 'ps', which is broken in the bazel macOS + # sandbox (https://github.com/bazelbuild/bazel/issues/7448) + # adding "--spawn_strategy=local" to the invocation is a workaround + ${RABBITMQ_SCRIPTS_DIR}/rabbitmqctl \ + -n ${RABBITMQ_NODENAME} \ + wait \ + --timeout ${RMQCTL_WAIT_TIMEOUT} \ + ${RABBITMQ_PID_FILE} + + {ERLANG_HOME}/bin/erl \ + -noinput \ + -eval "true = rpc:call('${RABBITMQ_NODENAME}', rabbit, is_running, []), halt()." \ + -sname {SNAME} \ + -hidden + ;; + stop-node) + pid=$(test -f $RABBITMQ_PID_FILE && cat $RABBITMQ_PID_FILE); \ + test "$pid" && \ + kill -TERM "$pid" && \ + echo "waiting for process to exit" && \ + while ps -p "$pid" >/dev/null 2>&1; do sleep 1; done + ;; + set-resource-alarm) + ERL_LIBS="{ERL_LIBS}" \ + ${RABBITMQ_SCRIPTS_DIR}/rabbitmqctl -n ${RABBITMQ_NODENAME} \ + eval "rabbit_alarm:set_alarm({{resource_limit, ${SOURCE}, node()}, []})." + ;; + clear-resource-alarm) + ERL_LIBS="{ERL_LIBS}" \ + ${RABBITMQ_SCRIPTS_DIR}/rabbitmqctl -n ${RABBITMQ_NODENAME} \ + eval "rabbit_alarm:clear_alarm({resource_limit, ${SOURCE}, node()})." + ;; + *) + echo "rabbitmq-run does not support $CMD" + exit 1 + ;; +esac diff --git a/workspace_helpers.bzl b/workspace_helpers.bzl new file mode 100644 index 0000000000..7b678d2229 --- /dev/null +++ b/workspace_helpers.bzl @@ -0,0 +1,143 @@ +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +load("@bazel-erlang//:github.bzl", "github_bazel_erlang_lib") +load("@bazel-erlang//:hex_pm.bzl", "hex_pm_bazel_erlang_lib") +load("//:rabbitmq.bzl", "APP_VERSION") + +def rabbitmq_external_deps(rabbitmq_workspace = "@rabbitmq-server"): + github_bazel_erlang_lib( + name = "aten", + org = "rabbitmq", + sha256 = "27f6b2ec2e78027ea852a8ac6bcf49df4a599d5506a86dc9f0cb6b5d6e45989e", + ref = "v0.5.6", + version = "0.5.6", + ) + + hex_pm_bazel_erlang_lib( + name = "cowboy", + first_srcs = [ + "src/cowboy_stream.erl", + "src/cowboy_middleware.erl", + "src/cowboy_sub_protocol.erl", + ], + version = "2.8.0", + sha256 = "4643e4fba74ac96d4d152c75803de6fad0b3fa5df354c71afdd6cbeeb15fac8a", + deps = [ + "@cowlib//:bazel_erlang_lib", + "@ranch//:bazel_erlang_lib", + ], + ) + + hex_pm_bazel_erlang_lib( + name = "cowlib", + version = "2.9.1", + sha256 = "e4175dc240a70d996156160891e1c62238ede1729e45740bdd38064dad476170", + ) + + github_bazel_erlang_lib( + repo = "credentials-obfuscation", + name = "credentials_obfuscation", + org = "rabbitmq", + sha256 = "a5cecd861334a8a5fb8c9b108a74c83ba0041653c53c523bb97f70dbefa30fe3", + ref = "v2.4.0", + version = "2.4.0", + ) + + github_bazel_erlang_lib( + name = "cuttlefish", + org = "Kyorai", + ) + + github_bazel_erlang_lib( + repo = "gen-batch-server", + name = "gen_batch_server", + org = "rabbitmq", + sha256 = "9e9f2aa6ee8e3354f03a3f78283fde93bbe5b1d6f6732caa05d3e43efe02e42c", + ref = "v0.8.4", + version = "0.8.4", + ) + + http_archive( + name = "inet_tcp_proxy", + build_file = rabbitmq_workspace + "//:BUILD.inet_tcp_proxy", + strip_prefix = "inet_tcp_proxy-master", + urls = ["https://github.com/rabbitmq/inet_tcp_proxy/archive/master.zip"], + ) + + hex_pm_bazel_erlang_lib( + name = "jsx", + version = "2.11.0", + sha256 = "eed26a0d04d217f9eecefffb89714452556cf90eb38f290a27a4d45b9988f8c0", + erlc_opts = [ + "+debug_info", + "-Dmaps_support=1", + ], + ) + + github_bazel_erlang_lib( + name = "meck", + org = "eproxus", + ) + + hex_pm_bazel_erlang_lib( + name = "observer_cli", + version = "1.6.1", + sha256 = "3418e319764b9dff1f469e43cbdffd7fd54ea47cbf765027c557abd146a19fb3", + ) + + http_archive( + name = "osiris", + build_file = rabbitmq_workspace + "//:BUILD.osiris", + strip_prefix = "osiris-master", + urls = ["https://github.com/rabbitmq/osiris/archive/master.zip"], + ) + + github_bazel_erlang_lib( + name = "proper", + first_srcs = ["src/vararg.erl"], + org = "manopapad", + ) + + http_archive( + name = "ra", + build_file = rabbitmq_workspace + "//:BUILD.ra", + strip_prefix = "ra-master", + urls = ["https://github.com/rabbitmq/ra/archive/master.zip"], + ) + + hex_pm_bazel_erlang_lib( + name = "ranch", + first_srcs = [ + "src/ranch_transport.erl", + ], + version = "2.0.0", + sha256 = "c20a4840c7d6623c19812d3a7c828b2f1bd153ef0f124cb69c54fe51d8a42ae0", + ) + + hex_pm_bazel_erlang_lib( + name = "recon", + version = "2.5.1", + sha256 = "5721c6b6d50122d8f68cccac712caa1231f97894bab779eff5ff0f886cb44648", + ) + + hex_pm_bazel_erlang_lib( + name = "stdout_formatter", + version = "0.2.4", + sha256 = "51f1df921b0477275ea712763042155dbc74acc75d9648dbd54985c45c913b29", + ) + + github_bazel_erlang_lib( + name = "syslog", + org = "schlagert", + sha256 = "25abcfe2cc0745fc4ffb0d66d4a5868d343a0130c7a7ddcae03771326feae619", + ref = "3.4.5", + version = "3.4.5", + first_srcs = [ + "src/syslog_logger.erl", + ], + ) + + hex_pm_bazel_erlang_lib( + name = "sysmon_handler", + version = "1.3.0", + sha256 = "922cf0dd558b9fdb1326168373315b52ed6a790ba943f6dcbd9ee22a74cebdef", + )