diff options
author | dcorbacho <dparracorbacho@piotal.io> | 2020-11-18 14:27:41 +0000 |
---|---|---|
committer | dcorbacho <dparracorbacho@piotal.io> | 2020-11-18 14:27:41 +0000 |
commit | f23a51261d9502ec39df0f8db47ba6b22aa7659f (patch) | |
tree | 53dcdf46e7dc2c14e81ee960bce8793879b488d3 /mk/github-actions.mk | |
parent | afa2c2bf6c7e0e9b63f4fb53dc931c70388e1c82 (diff) | |
parent | 9f6d64ec4a4b1eeac24d7846c5c64fd96798d892 (diff) | |
download | rabbitmq-server-git-stream-timestamp-offset.tar.gz |
Merge remote-tracking branch 'origin/master' into stream-timestamp-offsetstream-timestamp-offset
Diffstat (limited to 'mk/github-actions.mk')
-rw-r--r-- | mk/github-actions.mk | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/mk/github-actions.mk b/mk/github-actions.mk new file mode 100644 index 0000000000..6a9989808b --- /dev/null +++ b/mk/github-actions.mk @@ -0,0 +1,158 @@ +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 "\n- name: $(1)\n suites:$(if $(SUITES),$(foreach suite,$(SUITES),\n - name: $(suite)\n time: 0), [])" >> $(DEPS_YAML_FILE); +endef + +$(DEPS_YAML_FILE): + @echo -n "#@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 $@ + +ERLANG_VERSIONS = 22.3 23.1 +ERLANG_VERSIONS_YAML1 = [$(foreach v,$(ERLANG_VERSIONS),,"$(v)")] +UNFIXED := [," +ERLANG_VERSIONS_YAML2 = $(subst $(UNFIXED),[",$(ERLANG_VERSIONS_YAML1)) + +.github/workflows/base-images.yaml: $(YTT) $(wildcard workflow_sources/base_image/*) + ytt -f workflow_sources/base_image \ + -f workflow_sources/base_values.yml \ + --data-value-yaml erlang_versions='$(ERLANG_VERSIONS_YAML2)' \ + --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) $(wildcard workflow_sources/test/*) + ytt -f workflow_sources/test \ + -f workflow_sources/base_values.yml \ + -f $(DEPS_YAML_FILE) \ + --data-value-yaml erlang_versions='$(ERLANG_VERSIONS_YAML2)' \ + --data-value erlang_version=$* \ + --output-files /tmp + cat /tmp/workflow.yml | sed s/a_magic_string_that_we_will_sed_to_on/on/ \ + > $@ + +monorepo-actions: \ + .github/workflows/base-images.yaml \ + $(foreach v,$(ERLANG_VERSIONS), .github/workflows/test-erlang-otp-$(v).yaml) + +DOCKER_REPO ?= eu.gcr.io/cf-rabbitmq-core + +CI_BASE_IMAGES = $(foreach v,$(ERLANG_VERSIONS),ci-base-image-$(v)) +.PHONY: $(CI_BASE_IMAGES) +$(CI_BASE_IMAGES): + docker build . \ + -f ci/dockerfiles/$(subst ci-base-image-,,$@)/base \ + -t $(DOCKER_REPO)/ci-base:$(subst ci-base-image-,,$@) + +.PHONY: ci-base-images +ci-base-images: $(CI_BASE_IMAGES) + +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 |