166 lines
4.8 KiB
Makefile
166 lines
4.8 KiB
Makefile
YTT ?= /usr/local/bin/ytt
|
|
|
|
$(YTT):
|
|
$(error Please install ytt from https://get-ytt.io/)
|
|
|
|
VENDORED_COMPONENTS = 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_codegen \
|
|
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_top \
|
|
rabbitmq_tracing \
|
|
rabbitmq_trust_store \
|
|
rabbitmq_web_dispatch \
|
|
rabbitmq_web_mqtt \
|
|
rabbitmq_web_mqtt_examples \
|
|
rabbitmq_web_stomp \
|
|
rabbitmq_web_stomp_examples
|
|
|
|
DEPS_YAML_FILE = workflow_sources/deps.yml
|
|
|
|
define dep_yaml_chunk
|
|
$(eval SUITES := $(sort $(subst _SUITE.erl,,$(notdir $(wildcard deps/$(1)/test/*_SUITE.erl)))))
|
|
echo "\n- name: $(1)\n suites:$(if $(SUITES),$(foreach suite,$(SUITES),\n - name: $(suite)), [])" >> $(DEPS_YAML_FILE);
|
|
endef
|
|
|
|
$(DEPS_YAML_FILE):
|
|
@echo "#@data/values\n---\n#@overlay/match missing_ok=True\ndeps:" > $@
|
|
@$(foreach dep,$(VENDORED_COMPONENTS),$(call dep_yaml_chunk,$(dep)))
|
|
@cat $@ | git stripspace > $@.fixed && mv $@.fixed $@
|
|
|
|
.github/workflows/base-images.yaml: $(YTT) $(wildcard workflow_sources/base_image/*)
|
|
ytt -f workflow_sources/base_image \
|
|
-f workflow_sources/base_values.yml \
|
|
--output-files /tmp
|
|
cat /tmp/workflow.yml | sed s/a_magic_string_that_we_will_sed_to_on/on/ \
|
|
> $@
|
|
|
|
.github/workflows/test-erlang-otp-%.yaml: \
|
|
$(YTT) $(DEPS_YAML_FILE) workflow_sources/test-erlang-otp-%.yml $(wildcard workflow_sources/test/*)
|
|
ytt -f workflow_sources/test \
|
|
-f workflow_sources/base_values.yml \
|
|
-f $(DEPS_YAML_FILE) \
|
|
-f workflow_sources/test-erlang-otp-$*.yml \
|
|
--output-files /tmp
|
|
cat /tmp/test-erlang-otp-$*.yml | sed s/a_magic_string_that_we_will_sed_to_on/on/ \
|
|
> $@
|
|
|
|
monorepo-actions: \
|
|
.github/workflows/base-images.yaml \
|
|
$(patsubst workflow_sources/%.yml,.github/workflows/%.yaml,$(wildcard workflow_sources/test-erlang-otp-*.yml))
|
|
|
|
DOCKER_REPO ?= eu.gcr.io/cf-rabbitmq-core
|
|
|
|
.PHONY: erlang-elixir-image-%
|
|
erlang-elixir-image-%:
|
|
docker build . \
|
|
-f ci/dockerfiles/$*/erlang_elixir \
|
|
-t $(DOCKER_REPO)/erlang_elixir:$*
|
|
|
|
.PHONY: ci-base-image-%
|
|
ci-base-image-%:
|
|
docker build . \
|
|
-f ci/dockerfiles/ci-base \
|
|
-t $(DOCKER_REPO)/ci-base:$* \
|
|
--build-arg ERLANG_VERSION=$*
|
|
|
|
.PHONY: ci-base-images
|
|
ci-base-images: ci-base-image-23.1
|
|
|
|
PUSHES = $(foreach v,$(ERLANG_VERSIONS),push-base-image-$(v))
|
|
.PHONY: $(PUSHES)
|
|
$(PUSHES):
|
|
docker push $(DOCKER_REPO)/ci-base:$(subst push-base-image-,,$@)
|
|
|
|
.PHONY: push-base-images
|
|
push-base-images: $(PUSHES)
|
|
|
|
LOCAL_CI_GOALS = $(foreach dep,$(filter-out rabbitmq_cli,$(VENDORED_COMPONENTS)),ci-$(dep))
|
|
ERLANG_VERSION ?= 23.1
|
|
SKIP_DIALYZE ?= False
|
|
|
|
TAG = erlang-$(ERLANG_VERSION)-rabbitmq-$(shell git rev-parse HEAD)$(shell git diff-index --quiet HEAD -- || echo -dirty)
|
|
LOCAL_IMAGE = $(DOCKER_REPO)/ci:$(TAG)
|
|
|
|
.PHONY: local-ci-image
|
|
local-ci-image:
|
|
docker build . \
|
|
-f ci/dockerfiles/ci \
|
|
-t $(LOCAL_IMAGE) \
|
|
--build-arg ERLANG_VERSION=$(ERLANG_VERSION) \
|
|
--build-arg GITHUB_RUN_ID=none \
|
|
--build-arg BUILDEVENT_APIKEY=$(BUILDEVENT_APIKEY) \
|
|
--build-arg GITHUB_SHA=$$(git rev-parse HEAD) \
|
|
--build-arg base_rmq_ref=master \
|
|
--build-arg current_rmq_ref=$$(git rev-parse --abbrev-ref HEAD) \
|
|
--build-arg RABBITMQ_VERSION=3.9.0
|
|
|
|
.PHONY: $(LOCAL_CI_GOALS)
|
|
$(LOCAL_CI_GOALS): local-ci-image
|
|
docker run --rm \
|
|
--env project=$(subst ci-,,$@) \
|
|
--env SKIP_DIALYZE=$(SKIP_DIALYZE) \
|
|
--env GITHUB_RUN_ID=none \
|
|
--env BUILDEVENT_APIKEY=$(BUILDEVENT_APIKEY) \
|
|
--env STEP_START=$$(date +%s) \
|
|
--volume /tmp/ct-logs:/ct-logs \
|
|
--oom-score-adj -500 \
|
|
$(LOCAL_IMAGE) \
|
|
/workspace/rabbitmq/ci/scripts/tests.sh
|
|
|
|
ci-rabbitmq_cli: local-ci-image
|
|
docker run --rm \
|
|
--env project=$(subst ci-,,$@) \
|
|
--env SKIP_DIALYZE=$(SKIP_DIALYZE) \
|
|
--env GITHUB_RUN_ID=none \
|
|
--env BUILDEVENT_APIKEY=$(BUILDEVENT_APIKEY) \
|
|
--env STEP_START=$$(date +%s) \
|
|
--volume /tmp/broker-logs:/broker-logs \
|
|
$(LOCAL_IMAGE) \
|
|
/workspace/rabbitmq/ci/scripts/rabbitmq_cli.sh
|
|
|
|
.PHONY: docker
|
|
docker: local-ci-image
|
|
docker run --rm -it \
|
|
--oom-score-adj -500 \
|
|
$(LOCAL_IMAGE) \
|
|
/bin/bash
|
|
|
|
.PHONY: distclean-%
|
|
distclean-%:
|
|
$(MAKE) -C deps/$* distclean || echo "Failed to distclean $*"
|
|
|
|
.PHONY: monorepo-distclean
|
|
monorepo-distclean: $(foreach dep,$(VENDORED_COMPONENTS),distclean-$(dep))
|