add self-upgrader (#3501) (#5035)

this allows to upgrade MediaMTX to latest version by running

./mediamtx --upgrade
This commit is contained in:
Alessandro Ros 2025-10-13 13:06:47 +02:00 committed by GitHub
parent 02e2b9d640
commit 7bca38badb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 311 additions and 26 deletions

View file

@ -15,37 +15,37 @@ RUN go generate ./...
FROM build-base AS build-windows-amd64
ENV GOOS=windows GOARCH=amd64
RUN go build -o "tmp/$(BINARY_NAME).exe"
RUN go build -tags enableUpgrade -o "tmp/$(BINARY_NAME).exe"
RUN cd tmp && zip -q "../binaries/$(BINARY_NAME)_$$(cat ../internal/core/VERSION)_windows_amd64.zip" "$(BINARY_NAME).exe" mediamtx.yml LICENSE
FROM build-base AS build-linux-amd64
ENV GOOS=linux GOARCH=amd64
RUN go build -o "tmp/$(BINARY_NAME)"
RUN go build -tags enableUpgrade -o "tmp/$(BINARY_NAME)"
RUN tar -C tmp -czf "binaries/$(BINARY_NAME)_$$(cat internal/core/VERSION)_linux_amd64.tar.gz" --owner=0 --group=0 "$(BINARY_NAME)" mediamtx.yml LICENSE
FROM build-base AS build-darwin-amd64
ENV GOOS=darwin GOARCH=amd64
RUN go build -o "tmp/$(BINARY_NAME)"
RUN go build -tags enableUpgrade -o "tmp/$(BINARY_NAME)"
RUN tar -C tmp -czf "binaries/$(BINARY_NAME)_$$(cat internal/core/VERSION)_darwin_amd64.tar.gz" --owner=0 --group=0 "$(BINARY_NAME)" mediamtx.yml LICENSE
FROM build-base AS build-darwin-arm64
ENV GOOS=darwin GOARCH=arm64
RUN go build -o "tmp/$(BINARY_NAME)"
RUN go build -tags enableUpgrade -o "tmp/$(BINARY_NAME)"
RUN tar -C tmp -czf "binaries/$(BINARY_NAME)_$$(cat internal/core/VERSION)_darwin_arm64.tar.gz" --owner=0 --group=0 "$(BINARY_NAME)" mediamtx.yml LICENSE
FROM build-base AS build-linux-armv6
ENV GOOS=linux GOARCH=arm GOARM=6
RUN go build -o "tmp/$(BINARY_NAME)"
RUN go build -tags enableUpgrade -o "tmp/$(BINARY_NAME)"
RUN tar -C tmp -czf "binaries/$(BINARY_NAME)_$$(cat internal/core/VERSION)_linux_armv6.tar.gz" --owner=0 --group=0 "$(BINARY_NAME)" mediamtx.yml LICENSE
FROM build-base AS build-linux-armv7
ENV GOOS=linux GOARCH=arm GOARM=7
RUN go build -o "tmp/$(BINARY_NAME)"
RUN go build -tags enableUpgrade -o "tmp/$(BINARY_NAME)"
RUN tar -C tmp -czf "binaries/$(BINARY_NAME)_$$(cat internal/core/VERSION)_linux_armv7.tar.gz" --owner=0 --group=0 "$(BINARY_NAME)" mediamtx.yml LICENSE
FROM build-base AS build-linux-arm64
ENV GOOS=linux GOARCH=arm64
RUN go build -o "tmp/$(BINARY_NAME)"
RUN go build -tags enableUpgrade -o "tmp/$(BINARY_NAME)"
RUN tar -C tmp -czf "binaries/$(BINARY_NAME)_$$(cat internal/core/VERSION)_linux_arm64.tar.gz" --owner=0 --group=0 "$(BINARY_NAME)" mediamtx.yml LICENSE
FROM $(BASE_IMAGE)

View file

@ -12,6 +12,7 @@ dockerhub:
-f docker/ffmpeg-rpi.Dockerfile . \
--platform=linux/arm/v6,linux/arm/v7,linux/arm64 \
-t $(DOCKER_REPOSITORY):$(VERSION)-ffmpeg-rpi \
-t $(DOCKER_REPOSITORY):1-ffmpeg-rpi \
-t $(DOCKER_REPOSITORY):latest-ffmpeg-rpi \
--push
@ -19,6 +20,7 @@ dockerhub:
-f docker/rpi.Dockerfile . \
--platform=linux/arm/v6,linux/arm/v7,linux/arm64 \
-t $(DOCKER_REPOSITORY):$(VERSION)-rpi \
-t $(DOCKER_REPOSITORY):1-rpi \
-t $(DOCKER_REPOSITORY):latest-rpi \
--push
@ -26,6 +28,7 @@ dockerhub:
-f docker/ffmpeg.Dockerfile . \
--platform=linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 \
-t $(DOCKER_REPOSITORY):$(VERSION)-ffmpeg \
-t $(DOCKER_REPOSITORY):1-ffmpeg \
-t $(DOCKER_REPOSITORY):latest-ffmpeg \
--push
@ -33,6 +36,7 @@ dockerhub:
-f docker/standard.Dockerfile . \
--platform=linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 \
-t $(DOCKER_REPOSITORY):$(VERSION) \
-t $(DOCKER_REPOSITORY):1 \
-t $(DOCKER_REPOSITORY):latest \
--push