From 752968194d62f3a256432863c28a4ef3549e5c28 Mon Sep 17 00:00:00 2001 From: Alex Demidoff Date: Sun, 8 Jun 2025 00:29:58 +0300 Subject: [PATCH 1/4] PMM-14072 Automate Grafana plugin upgrade --- Makefile | 5 +++++ misc/Dockerfile.upgrade | 8 ++++++++ misc/upgrade-plugins.sh | 25 +++++++++++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 misc/Dockerfile.upgrade create mode 100755 misc/upgrade-plugins.sh diff --git a/Makefile b/Makefile index 8b517e7459..0878f8d8eb 100644 --- a/Makefile +++ b/Makefile @@ -49,3 +49,8 @@ docker_clean: docker-compose stop \ && docker-compose rm -f -v \ && docker system prune --volumes -f + +.PHONY: upgrade_plugins +upgrade_plugins: + cd misc \ + && ./upgrade_plugins.sh diff --git a/misc/Dockerfile.upgrade b/misc/Dockerfile.upgrade new file mode 100644 index 0000000000..39e3689ff1 --- /dev/null +++ b/misc/Dockerfile.upgrade @@ -0,0 +1,8 @@ +FROM grafana/grafana:latest + +USER root + +# Do not run the server +RUN sed -i '/exec grafana server/,$d' /run.sh + +USER grafana diff --git a/misc/upgrade-plugins.sh b/misc/upgrade-plugins.sh new file mode 100755 index 0000000000..a6262ab52d --- /dev/null +++ b/misc/upgrade-plugins.sh @@ -0,0 +1,25 @@ +#!/bin/bash -ex + +declare DIR OWNER +DIR=$(realpath ../panels) +OWNER=$(id -u):$(id -g) + +docker pull grafana/grafana + +docker buildx build --progress=plain -t local/grafana -f Dockerfile.upgrade . + +rm -rf "${DIR:?}"/* + +docker run \ + --rm -t \ + --name grafana \ + -e GF_INSTALL_PLUGINS=grafana-clickhouse-datasource,grafana-polystat-panel,jdbranham-diagram-panel \ + -v "${DIR}":/var/lib/grafana/plugins \ + local/grafana + +sudo chown -R "$OWNER" "$DIR" + +echo "Listing upgraded Grafana plugins..." +ls -l "$DIR" + +docker rmi local/grafana grafana/grafana From f52737ed2f30cc17e16f8e410d24e6ae17560e9f Mon Sep 17 00:00:00 2001 From: Alex Demidoff Date: Sun, 8 Jun 2025 12:27:38 +0300 Subject: [PATCH 2/4] PMM-14072 Fix a typo --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 0878f8d8eb..6a9bb64701 100644 --- a/Makefile +++ b/Makefile @@ -53,4 +53,4 @@ docker_clean: .PHONY: upgrade_plugins upgrade_plugins: cd misc \ - && ./upgrade_plugins.sh + && ./upgrade-plugins.sh From dff2218332d2afecd451807fc3ee025344269400 Mon Sep 17 00:00:00 2001 From: Alex Demidoff Date: Sun, 8 Jun 2025 14:34:36 +0300 Subject: [PATCH 3/4] PMM-14072 make the build platform-aware --- Makefile | 8 ++++++-- misc/upgrade-plugins.sh | 14 ++++++-------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index 6a9bb64701..592c30c4f9 100644 --- a/Makefile +++ b/Makefile @@ -52,5 +52,9 @@ docker_clean: .PHONY: upgrade_plugins upgrade_plugins: - cd misc \ - && ./upgrade-plugins.sh + @echo "Upgrading PMM plugins..." + @echo "To override the platform, set the PLATFORM environment variable." + @echo "Example: PLATFORM=linux/arm64 make upgrade_plugins" + @echo + @cd misc && \ + ./upgrade-plugins.sh diff --git a/misc/upgrade-plugins.sh b/misc/upgrade-plugins.sh index a6262ab52d..ad7524dfd8 100755 --- a/misc/upgrade-plugins.sh +++ b/misc/upgrade-plugins.sh @@ -1,25 +1,23 @@ #!/bin/bash -ex -declare DIR OWNER +declare PLATFORM=${PLATFORM:-linux/amd64} +declare DIR DIR=$(realpath ../panels) -OWNER=$(id -u):$(id -g) -docker pull grafana/grafana - -docker buildx build --progress=plain -t local/grafana -f Dockerfile.upgrade . +# Note: the PLATFORM matters because some plugins are built for a specific architecture. +docker buildx build --platform="$PLATFORM" --progress=plain -t local/grafana -f Dockerfile.upgrade . rm -rf "${DIR:?}"/* docker run \ --rm -t \ --name grafana \ + --platform="$PLATFORM" \ -e GF_INSTALL_PLUGINS=grafana-clickhouse-datasource,grafana-polystat-panel,jdbranham-diagram-panel \ -v "${DIR}":/var/lib/grafana/plugins \ local/grafana -sudo chown -R "$OWNER" "$DIR" - echo "Listing upgraded Grafana plugins..." ls -l "$DIR" -docker rmi local/grafana grafana/grafana +docker rmi local/grafana From 997cf72e6c9efd36d11e743eef07276a1c9457ef Mon Sep 17 00:00:00 2001 From: Alex Demidoff Date: Mon, 9 Jun 2025 11:22:20 +0300 Subject: [PATCH 4/4] PMM-14072 Add ability to provide the image --- misc/Dockerfile.upgrade | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/misc/Dockerfile.upgrade b/misc/Dockerfile.upgrade index 39e3689ff1..487639ed60 100644 --- a/misc/Dockerfile.upgrade +++ b/misc/Dockerfile.upgrade @@ -1,8 +1,9 @@ -FROM grafana/grafana:latest +ARG IMAGE_VERSION=grafana/grafana:latest +FROM ${IMAGE_VERSION} USER root -# Do not run the server +# No need to run the server, we want to exit after the upgrade RUN sed -i '/exec grafana server/,$d' /run.sh USER grafana