Skip to content

Commit

Permalink
Add ezs make target that builds .ez files for all deps & plugin
Browse files Browse the repository at this point in the history
The resulting files will be placed in ./tmp, e.g.

    ls -l tmp/
    total 992
    -rw-r--r--  1 gerhard  staff   12548 20 Feb 18:02 accept-0.3.4.ez
    -rw-r--r--  1 gerhard  staff  211232 20 Feb 18:02 prometheus-4.2.2.ez
    -rw-r--r--  1 gerhard  staff   14053 20 Feb 18:02 prometheus_cowboy-0.1.7.ez
    -rw-r--r--  1 gerhard  staff   21638 20 Feb 18:02 prometheus_httpd-2.1.10.ez
    -rw-r--r--  1 gerhard  staff   10708 20 Feb 18:02 prometheus_process_collector-1.4.0.ez
    -rw-r--r--  1 gerhard  staff  223943 20 Feb 18:02 prometheus_rabbitmq_exporter-3.7.20190220.ez

I've changed the version of this plugin to use the date for the patch
part, feel free to change back if you disagree.

Notice that I've deleted the prometheus_rabbitmq_exporter.app.src, this
is now generated by erlang.mk and dropped in
ebin/prometheus_rabbitmq_exporter.app - does it look correct
@deadtrickster?

Want to integrate with Docker & testing before merging.

This started as #63, see the
discussion for more context.
  • Loading branch information
gerhard committed Feb 20, 2019
1 parent daf6118 commit 5a814eb
Show file tree
Hide file tree
Showing 5 changed files with 117 additions and 44 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
/ebin/
/logs/
/plugins/

_build
/rabbitmq_management_metrics.d
erl_crash.dump
*.ez
114 changes: 106 additions & 8 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,13 +1,35 @@
PROJECT = prometheus_rabbitmq_exporter
PROJECT_DESCRIPTION = RabbitMQ Prometheus.io metrics exporter
# PROJECT_VERSION gets set in rabbitmq-components.mk to RABBITMQ_VERSION
RABBITMQ_VERSION = 3.7.$(shell date +'%Y%m%d')
EZ = $(PROJECT)-$(PROJECT_VERSION)
PROJECT_APP_EXTRA_KEYS = {maintainers, ["Ilya Khaprov"]}, \
{licenses, ["MIT"]}, \
{links, [{"Github", "https://github.com/deadtrickster/prometheus_rabbitmq_exporter"}]}

dep_prometheus = hex 3.5.1
dep_prometheus_process_collector = hex 1.3.1
dep_prometheus_httpd = hex 2.1.8
dep_accept = hex 0.3.3
dep_prometheus_cowboy = hex 0.1.4
ACCEPT_VERSION = 0.3.4
dep_accept = hex $(ACCEPT_VERSION)
# dep_accept = git https://github.com/rabbitmq/accept rebar-archive

DEPS = rabbit_common rabbit rabbitmq_management prometheus prometheus_httpd accept \
prometheus_process_collector prometheus_cowboy
PROMETHEUS_VERSION = 4.2.2
dep_prometheus = hex $(PROMETHEUS_VERSION)

PROMETHEUS_COWBOY_VERSION = 0.1.7
dep_prometheus_cowboy = hex $(PROMETHEUS_COWBOY_VERSION)
# dep_prometheus_cowboy = git https://github.com/rabbitmq/prometheus-cowboy rebar-archive

PROMETHEUS_HTTPD_VERSION = 2.1.10
dep_prometheus_httpd = hex $(PROMETHEUS_HTTPD_VERSION)
# dep_prometheus_httpd = git https://github.com/rabbitmq/prometheus-httpd rebar-archive

PROMETHEUS_PROCESS_COLLECTOR_VERSION = 1.4.0
dep_prometheus_process_collector = hex $(PROMETHEUS_PROCESS_COLLECTOR_VERSION)

DEPS = rabbit rabbitmq_management \
prometheus prometheus_cowboy prometheus_httpd

# We do not want these deps defined as applications in app
BUILD_DEPS = rabbit_common rabbitmq_management_agent accept prometheus_process_collector

DEP_EARLY_PLUGINS = rabbit_common/mk/rabbitmq-early-plugin.mk
DEP_PLUGINS = rabbit_common/mk/rabbitmq-plugin.mk
Expand All @@ -18,10 +40,15 @@ DEP_PLUGINS = rabbit_common/mk/rabbitmq-plugin.mk
ERLANG_MK_REPO = https://github.com/rabbitmq/erlang.mk.git
ERLANG_MK_COMMIT = rabbitmq-tmp

RABBITMQ_BRANCH ?= v3.7.x
RABBITMQ_CURRENT_FETCH_URL ?= https://github.com/rabbitmq/

REBAR := $(CURDIR)/rebar3

include rabbitmq-components.mk
include erlang.mk

.PHONY: docker_build docker_push docker_latest docker_pure docker_alpine
.PHONY: up docker_build docker_push docker_latest docker_pure docker_alpine

docker_build:
docker build -t deadtrickster/rabbitmq_prometheus\:3.7.8 .
Expand All @@ -47,3 +74,74 @@ docker_pure:

docker_alpine:
-docker run -p15672\:15672 deadtrickster/rabbitmq_prometheus\:latest-alpine

.PHONY: up
up: $(abspath .)+up $(DEPS:%=$(DEPS_DIR)/%+up) $(BUILD_DEPS:%=$(DEPS_DIR)/%+up)
@:

%+up: fetch-deps
$(exec_verbose) cd $*; \
git fetch -p && \
if [ '$(RABBITMQ_BRANCH)' ]; then \
git checkout $(RABBITMQ_BRANCH) || : ; \
fi && \
if git symbolic-ref -q HEAD >/dev/null; then \
branch=$$(git symbolic-ref --short HEAD); \
remote=$$(git config branch.$$branch.remote); \
merge=$$(git config branch.$$branch.merge | sed 's,refs/heads/,,'); \
if [ "$$remote" -a "$$merge" ]; then \
git merge --ff-only "$$remote/$$merge"; \
fi; \
fi && \
echo

REBAR_DEPS_DIR := _build/default/lib
$(REBAR_DEPS_DIR): up
@mkdir -p _build/default && \
ln -shfv $(CURDIR)/deps $(REBAR_DEPS_DIR)

tmp:
@mkdir -p tmp

tmp/accept-$(ACCEPT_VERSION).ez: $(REBAR_DEPS_DIR) tmp
@cd $(REBAR_DEPS_DIR)/accept && \
$(REBAR) archive && \
mv accept-$(ACCEPT_VERSION).ez $(CURDIR)/tmp/

tmp/prometheus-$(PROMETHEUS_VERSION).ez: $(REBAR_DEPS_DIR) tmp
@cd $(REBAR_DEPS_DIR)/prometheus && \
$(REBAR) archive && \
mv prometheus-$(PROMETHEUS_VERSION).ez $(CURDIR)/tmp/

tmp/prometheus_cowboy-$(PROMETHEUS_COWBOY_VERSION).ez: $(REBAR_DEPS_DIR) tmp
@cd $(REBAR_DEPS_DIR)/prometheus_cowboy && \
$(REBAR) archive && \
mv prometheus_cowboy-$(PROMETHEUS_COWBOY_VERSION).ez $(CURDIR)/tmp/

tmp/prometheus_httpd-$(PROMETHEUS_HTTPD_VERSION).ez: $(REBAR_DEPS_DIR) tmp
@cd $(REBAR_DEPS_DIR)/prometheus_httpd && \
$(REBAR) archive && \
mv prometheus_httpd-$(PROMETHEUS_HTTPD_VERSION).ez $(CURDIR)/tmp/

tmp/prometheus_process_collector-$(PROMETHEUS_PROCESS_COLLECTOR_VERSION).ez: $(REBAR_DEPS_DIR) tmp
@cd $(REBAR_DEPS_DIR)/prometheus_process_collector && \
$(REBAR) archive && \
mv prometheus_process_collector-$(PROMETHEUS_PROCESS_COLLECTOR_VERSION).ez $(CURDIR)/tmp

tmp/$(EZ).ez: up app tmp
@rm -fr $(EZ) && mkdir $(EZ) && \
cp -r ebin include priv $(EZ) && \
rm -f $(EZ).ez && \
zip --move --recurse-paths --test $(EZ).ez $(EZ) && \
mv $(EZ).ez tmp/

# $(EZ).ez: _build/default/lib app
# $(REBAR) archive

.PHONY: ezs
ezs:: tmp/accept-$(ACCEPT_VERSION).ez
ezs:: tmp/prometheus-$(PROMETHEUS_VERSION).ez
ezs:: tmp/prometheus_cowboy-$(PROMETHEUS_COWBOY_VERSION).ez
ezs:: tmp/prometheus_httpd-$(PROMETHEUS_HTTPD_VERSION).ez
ezs:: tmp/prometheus_process_collector-$(PROMETHEUS_PROCESS_COLLECTOR_VERSION).ez
ezs:: tmp/$(EZ).ez
25 changes: 9 additions & 16 deletions rabbitmq-components.mk
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ endif
dep_amqp_client = git_rmq rabbitmq-erlang-client $(current_rmq_ref) $(base_rmq_ref) master
dep_amqp10_client = git_rmq rabbitmq-amqp1.0-client $(current_rmq_ref) $(base_rmq_ref) master
dep_amqp10_common = git_rmq rabbitmq-amqp1.0-common $(current_rmq_ref) $(base_rmq_ref) master
dep_ra = git_rmq ra $(current_rmq_ref) $(base_rmq_ref) master
dep_rabbit = git_rmq rabbitmq-server $(current_rmq_ref) $(base_rmq_ref) master
dep_rabbit_common = git_rmq rabbitmq-common $(current_rmq_ref) $(base_rmq_ref) master
dep_rabbitmq_amqp1_0 = git_rmq rabbitmq-amqp1.0 $(current_rmq_ref) $(base_rmq_ref) master
Expand All @@ -51,7 +50,6 @@ dep_rabbitmq_auth_backend_ldap = git_rmq rabbitmq-auth-backend-ldap $(cur
dep_rabbitmq_auth_mechanism_ssl = git_rmq rabbitmq-auth-mechanism-ssl $(current_rmq_ref) $(base_rmq_ref) master
dep_rabbitmq_aws = git_rmq rabbitmq-aws $(current_rmq_ref) $(base_rmq_ref) master
dep_rabbitmq_boot_steps_visualiser = git_rmq rabbitmq-boot-steps-visualiser $(current_rmq_ref) $(base_rmq_ref) master
dep_rabbitmq_clusterer = git_rmq rabbitmq-clusterer $(current_rmq_ref) $(base_rmq_ref) master
dep_rabbitmq_cli = git_rmq rabbitmq-cli $(current_rmq_ref) $(base_rmq_ref) master
dep_rabbitmq_codegen = git_rmq rabbitmq-codegen $(current_rmq_ref) $(base_rmq_ref) master
dep_rabbitmq_consistent_hash_exchange = git_rmq rabbitmq-consistent-hash-exchange $(current_rmq_ref) $(base_rmq_ref) master
Expand All @@ -71,7 +69,6 @@ dep_rabbitmq_management = git_rmq rabbitmq-management $(current_rm
dep_rabbitmq_management_agent = git_rmq rabbitmq-management-agent $(current_rmq_ref) $(base_rmq_ref) master
dep_rabbitmq_management_exchange = git_rmq rabbitmq-management-exchange $(current_rmq_ref) $(base_rmq_ref) master
dep_rabbitmq_management_themes = git_rmq rabbitmq-management-themes $(current_rmq_ref) $(base_rmq_ref) master
dep_rabbitmq_management_visualiser = git_rmq rabbitmq-management-visualiser $(current_rmq_ref) $(base_rmq_ref) master
dep_rabbitmq_message_timestamp = git_rmq rabbitmq-message-timestamp $(current_rmq_ref) $(base_rmq_ref) master
dep_rabbitmq_metronome = git_rmq rabbitmq-metronome $(current_rmq_ref) $(base_rmq_ref) master
dep_rabbitmq_mqtt = git_rmq rabbitmq-mqtt $(current_rmq_ref) $(base_rmq_ref) master
Expand Down Expand Up @@ -111,20 +108,18 @@ dep_rabbitmq_public_umbrella = git_rmq rabbitmq-public-umbrella $(curre
# all projects use the same versions. It avoids conflicts and makes it
# possible to work with rabbitmq-public-umbrella.

dep_cowboy = hex 2.2.2
dep_cowlib = hex 2.1.0
dep_jsx = hex 2.8.2
dep_lager = hex 3.6.3
dep_ranch = hex 1.5.0
dep_ranch_proxy_protocol = hex 1.5.0
dep_recon = hex 2.3.2

dep_sockjs = git https://github.com/rabbitmq/sockjs-erlang.git 405990ea62353d98d36dbf5e1e64942d9b0a1daf
dep_cowboy = hex 2.6.1
dep_cowlib = hex 2.7.0
dep_jsx = hex 2.9.0
dep_lager = hex 3.6.5
dep_ra = git https://github.com/rabbitmq/ra.git master
dep_ranch = hex 1.7.1
dep_recon = hex 2.3.6
dep_sysmon_handler = hex 1.1.0

RABBITMQ_COMPONENTS = amqp_client \
amqp10_common \
amqp10_client \
ra \
rabbit \
rabbit_common \
rabbitmq_amqp1_0 \
Expand All @@ -135,7 +130,6 @@ RABBITMQ_COMPONENTS = amqp_client \
rabbitmq_auth_mechanism_ssl \
rabbitmq_aws \
rabbitmq_boot_steps_visualiser \
rabbitmq_clusterer \
rabbitmq_cli \
rabbitmq_codegen \
rabbitmq_consistent_hash_exchange \
Expand All @@ -155,7 +149,6 @@ RABBITMQ_COMPONENTS = amqp_client \
rabbitmq_management_agent \
rabbitmq_management_exchange \
rabbitmq_management_themes \
rabbitmq_management_visualiser \
rabbitmq_message_timestamp \
rabbitmq_metronome \
rabbitmq_mqtt \
Expand Down Expand Up @@ -233,7 +226,7 @@ export base_rmq_ref
# If cloning from this computed location fails, we fallback to RabbitMQ
# upstream which is GitHub.

# Maccro to transform eg. "rabbit_common" to "rabbitmq-common".
# Macro to transform eg. "rabbit_common" to "rabbitmq-common".
rmq_cmp_repo_name = $(word 2,$(dep_$(1)))

# Upstream URL for the current project.
Expand Down
Binary file added rebar3
Binary file not shown.
19 changes: 0 additions & 19 deletions src/prometheus_rabbitmq_exporter.app.src

This file was deleted.

0 comments on commit 5a814eb

Please sign in to comment.