Skip to content

Commit c0e9eb0

Browse files
Merge pull request #12852 from rabbitmq/loic-make-ci-backport
Backport Make CI to v4.0.x
2 parents 5b90d1a + 6f003b1 commit c0e9eb0

File tree

102 files changed

+3445
-1298
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

102 files changed

+3445
-1298
lines changed

.github/workflows/templates/test.template.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ name: Test
2222
on:
2323
push:
2424
branches:
25-
- main
26-
- v4.0.x
25+
#! - main
26+
#! - v4.0.x
2727
- v3.13.x
2828
- v3.12.x
2929
- v3.11.x
@@ -42,7 +42,7 @@ on:
4242
- '*.bzl'
4343
- '*.bazel'
4444
- .github/workflows/test.yaml
45-
pull_request:
45+
#! pull_request:
4646
concurrency:
4747
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
4848
cancel-in-progress: true
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
name: Test target (make)
2+
on:
3+
workflow_call:
4+
inputs:
5+
erlang_version:
6+
required: true
7+
type: string
8+
elixir_version:
9+
required: true
10+
type: string
11+
metadata_store:
12+
required: true
13+
type: string
14+
mixed_clusters:
15+
required: false
16+
default: false
17+
type: boolean
18+
make_target:
19+
required: true
20+
type: string
21+
plugin:
22+
required: true
23+
type: string
24+
jobs:
25+
test:
26+
name: ${{ inputs.plugin }} (${{ inputs.make_target }})
27+
runs-on: ubuntu-latest
28+
timeout-minutes: 30
29+
steps:
30+
- name: CHECKOUT REPOSITORY
31+
uses: actions/checkout@v4
32+
33+
- name: FETCH TAGS
34+
run: git fetch --tags
35+
36+
- name: SETUP OTP & ELIXIR
37+
uses: erlef/[email protected]
38+
with:
39+
otp-version: ${{ inputs.erlang_version }}
40+
elixir-version: ${{ inputs.elixir_version }}
41+
hexpm-mirrors: |
42+
https://builds.hex.pm
43+
https://cdn.jsdelivr.net/hex
44+
# This currently only applies to Elixir; and can be safely
45+
# restricted to the build jobs to avoid duplication in output.
46+
disable_problem_matchers: true
47+
48+
- name: MIXED CLUSTERS - FETCH SIGNING KEYS
49+
uses: dsaltares/fetch-gh-release-asset@master
50+
if: inputs.mixed_clusters
51+
with:
52+
repo: rabbitmq/signing-keys
53+
file: rabbitmq-release-signing-key.asc
54+
55+
- name: MIXED CLUSTERS - FETCH PREVIOUS VERSION
56+
id: fetch_secondary_dist
57+
uses: dsaltares/fetch-gh-release-asset@master
58+
if: inputs.mixed_clusters
59+
with:
60+
regex: true
61+
file: "rabbitmq-server-generic-unix-[\\d.]*\\.tar.xz"
62+
target: ./
63+
64+
- name: MIXED CLUSTERS - SETUP SECONDARY_DIST
65+
if: inputs.mixed_clusters
66+
run: |
67+
gpg --import rabbitmq-release-signing-key.asc
68+
gpg --verify rabbitmq-server-generic-unix-*.asc rabbitmq-server-generic-unix-*.tar.xz
69+
tar xf rabbitmq-server-generic-unix-*.tar.xz
70+
71+
echo "SECONDARY_DIST=${GITHUB_WORKSPACE}/rabbitmq_server-`echo -n ${{ steps.fetch_secondary_dist.outputs.version }} | sed s/v//`" >> $GITHUB_ENV
72+
73+
- name: SETUP DOTNET (rabbit)
74+
uses: actions/setup-dotnet@v4
75+
if: inputs.plugin == 'rabbit'
76+
with:
77+
dotnet-version: '3.1.x'
78+
79+
- name: SETUP SLAPD (rabbitmq_auth_backend_ldap)
80+
if: inputs.plugin == 'rabbitmq_auth_backend_ldap'
81+
run: |
82+
sudo apt-get update && \
83+
sudo apt-get install -y \
84+
apparmor-utils \
85+
ldap-utils \
86+
slapd
87+
88+
sudo aa-complain `which slapd`
89+
90+
- name: RUN TESTS
91+
if: inputs.plugin != 'rabbitmq_cli'
92+
run: |
93+
make -C deps/${{ inputs.plugin }} ${{ inputs.make_target }} RABBITMQ_METADATA_STORE=${{ inputs.metadata_store }}
94+
95+
# rabbitmq_cli needs a correct broker version for two of its tests.
96+
# But setting PROJECT_VERSION makes other plugins fail.
97+
- name: RUN TESTS (rabbitmq_cli)
98+
if: inputs.plugin == 'rabbitmq_cli'
99+
run: |
100+
make -C deps/${{ inputs.plugin }} ${{ inputs.make_target }} RABBITMQ_METADATA_STORE=${{ inputs.metadata_store }} PROJECT_VERSION="4.1.0"
101+
102+
- name: UPLOAD TEST LOGS
103+
if: always()
104+
uses: actions/upload-artifact@v4
105+
with:
106+
name: CT logs (${{ inputs.plugin }} ${{ inputs.make_target }} OTP-${{ inputs.erlang_version }} ${{ inputs.metadata_store }}${{ inputs.mixed_clusters && ' mixed' || '' }})
107+
path: |
108+
logs/
109+
# !logs/**/log_private
110+
if-no-files-found: ignore
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
name: Run tests (make)
2+
on:
3+
workflow_call:
4+
inputs:
5+
erlang_version:
6+
required: true
7+
type: string
8+
elixir_version:
9+
required: true
10+
type: string
11+
metadata_store:
12+
required: true
13+
type: string
14+
mixed_clusters:
15+
required: true
16+
type: boolean
17+
jobs:
18+
test-rabbit:
19+
name: Test rabbit
20+
strategy:
21+
fail-fast: false
22+
matrix:
23+
make_target:
24+
- parallel-ct-set-1
25+
- parallel-ct-set-2
26+
- parallel-ct-set-3
27+
- parallel-ct-set-4
28+
- ct-clustering_management
29+
- eunit ct-dead_lettering
30+
- ct-feature_flags
31+
- ct-metadata_store_clustering
32+
- ct-quorum_queue
33+
- ct-rabbit_stream_queue
34+
uses: ./.github/workflows/test-make-target.yaml
35+
with:
36+
erlang_version: ${{ inputs.erlang_version }}
37+
elixir_version: ${{ inputs.elixir_version }}
38+
metadata_store: ${{ inputs.metadata_store }}
39+
mixed_clusters: ${{ inputs.mixed_clusters }}
40+
make_target: ${{ matrix.make_target }}
41+
plugin: rabbit
42+
43+
test-rabbitmq-mqtt:
44+
name: Test rabbitmq_mqtt
45+
uses: ./.github/workflows/test-make-target.yaml
46+
with:
47+
erlang_version: ${{ inputs.erlang_version }}
48+
elixir_version: ${{ inputs.elixir_version }}
49+
metadata_store: ${{ inputs.metadata_store }}
50+
mixed_clusters: ${{ inputs.mixed_clusters }}
51+
make_target: parallel-ct-set-1
52+
plugin: rabbitmq_mqtt
53+
54+
# The integration_SUITE requires secrets and
55+
# is therefore run from a separate workflow.
56+
test-rabbitmq-peer-discovery-aws:
57+
name: Test rabbitmq_peer_discovery_aws (partially)
58+
uses: ./.github/workflows/test-make-target.yaml
59+
with:
60+
erlang_version: ${{ inputs.erlang_version }}
61+
elixir_version: ${{ inputs.elixir_version }}
62+
metadata_store: ${{ inputs.metadata_store }}
63+
mixed_clusters: ${{ inputs.mixed_clusters }}
64+
make_target: ct-config_schema ct-unit
65+
plugin: rabbitmq_peer_discovery_aws
66+
67+
test-plugin:
68+
name: Test plugins
69+
strategy:
70+
fail-fast: false
71+
matrix:
72+
plugin:
73+
- amqp10_client
74+
- amqp10_common
75+
- amqp_client
76+
- oauth2_client
77+
- rabbit_common
78+
- rabbitmq_amqp_client
79+
- rabbitmq_auth_backend_cache
80+
- rabbitmq_auth_backend_http
81+
- rabbitmq_auth_backend_ldap
82+
- rabbitmq_auth_backend_oauth2
83+
- rabbitmq_auth_mechanism_ssl
84+
- rabbitmq_aws
85+
- rabbitmq_cli
86+
- rabbitmq_consistent_hash_exchange
87+
- rabbitmq_event_exchange
88+
- rabbitmq_federation
89+
- rabbitmq_federation_management
90+
- rabbitmq_federation_prometheus
91+
- rabbitmq_jms_topic_exchange
92+
- rabbitmq_management
93+
- rabbitmq_management_agent
94+
- rabbitmq_peer_discovery_common
95+
- rabbitmq_peer_discovery_consul
96+
- rabbitmq_peer_discovery_etcd
97+
- rabbitmq_peer_discovery_k8s
98+
- rabbitmq_prelaunch
99+
- rabbitmq_prometheus
100+
- rabbitmq_recent_history_exchange
101+
- rabbitmq_sharding
102+
- rabbitmq_shovel
103+
- rabbitmq_shovel_management
104+
- rabbitmq_shovel_prometheus
105+
- rabbitmq_stomp
106+
- rabbitmq_stream
107+
- rabbitmq_stream_common
108+
- rabbitmq_stream_management
109+
- rabbitmq_tracing
110+
- rabbitmq_trust_store
111+
- rabbitmq_web_dispatch
112+
- rabbitmq_web_mqtt
113+
- rabbitmq_web_stomp
114+
uses: ./.github/workflows/test-make-target.yaml
115+
with:
116+
erlang_version: ${{ inputs.erlang_version }}
117+
elixir_version: ${{ inputs.elixir_version }}
118+
metadata_store: ${{ inputs.metadata_store }}
119+
mixed_clusters: ${{ inputs.mixed_clusters }}
120+
make_target: tests
121+
plugin: ${{ matrix.plugin }}
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
name: Type check (make)
2+
on:
3+
workflow_call:
4+
inputs:
5+
erlang_version:
6+
required: true
7+
type: string
8+
elixir_version:
9+
required: true
10+
type: string
11+
jobs:
12+
type-check-plugin:
13+
name: Type check plugins
14+
strategy:
15+
fail-fast: false
16+
matrix:
17+
plugin:
18+
# These are using plugin-specific test jobs.
19+
- rabbit
20+
- rabbitmq_mqtt
21+
- rabbitmq_peer_discovery_aws
22+
# These are from the test-plugin test job.
23+
- amqp10_client
24+
- amqp10_common
25+
- amqp_client
26+
- oauth2_client
27+
- rabbit_common
28+
- rabbitmq_amqp_client
29+
- rabbitmq_auth_backend_cache
30+
- rabbitmq_auth_backend_http
31+
- rabbitmq_auth_backend_ldap
32+
- rabbitmq_auth_backend_oauth2
33+
- rabbitmq_auth_mechanism_ssl
34+
- rabbitmq_aws
35+
- rabbitmq_consistent_hash_exchange
36+
- rabbitmq_event_exchange
37+
- rabbitmq_federation
38+
- rabbitmq_federation_management
39+
- rabbitmq_federation_prometheus
40+
- rabbitmq_jms_topic_exchange
41+
- rabbitmq_management
42+
- rabbitmq_management_agent
43+
- rabbitmq_peer_discovery_common
44+
- rabbitmq_peer_discovery_consul
45+
# @todo We are getting errors because of wrong types
46+
# in the eetcd dep. But upgrading requires using gun 2.0,
47+
# which we can't because another app's dep, emqtt, requires
48+
# gun 1.3.x. So for now we don't type check this plugin.
49+
#- rabbitmq_peer_discovery_etcd
50+
- rabbitmq_peer_discovery_k8s
51+
- rabbitmq_prelaunch
52+
- rabbitmq_prometheus
53+
- rabbitmq_recent_history_exchange
54+
- rabbitmq_sharding
55+
- rabbitmq_shovel
56+
- rabbitmq_shovel_management
57+
- rabbitmq_shovel_prometheus
58+
- rabbitmq_stomp
59+
- rabbitmq_stream
60+
- rabbitmq_stream_common
61+
- rabbitmq_stream_management
62+
- rabbitmq_tracing
63+
- rabbitmq_trust_store
64+
- rabbitmq_web_dispatch
65+
- rabbitmq_web_mqtt
66+
- rabbitmq_web_stomp
67+
# This one we do not want to run tests so no corresponding test job.
68+
- rabbitmq_ct_helpers
69+
# These do not have tests at this time so no corresponding test job.
70+
- rabbitmq_ct_client_helpers
71+
- rabbitmq_random_exchange
72+
- rabbitmq_top
73+
- rabbitmq_web_mqtt_examples
74+
- rabbitmq_web_stomp_examples
75+
- trust_store_http
76+
uses: ./.github/workflows/test-make-target.yaml
77+
with:
78+
erlang_version: ${{ inputs.erlang_version }}
79+
elixir_version: ${{ inputs.elixir_version }}
80+
metadata_store: khepri # Not actually used.
81+
make_target: dialyze
82+
plugin: ${{ matrix.plugin }}

0 commit comments

Comments
 (0)