From d96af31f860664dbcc899f203125e6242ca31d85 Mon Sep 17 00:00:00 2001 From: Alexey Khit Date: Sat, 20 Aug 2022 15:53:38 +0300 Subject: [PATCH] Adds builder action --- .github/workflows/builder.yml | 59 +++++++++++++++++++++++++++++++++++ build/hassio/Dockerfile | 11 +++++++ build/hassio/config.yaml | 6 ++++ cmd/app/app.go | 11 ++++++- 4 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/builder.yml create mode 100644 build/hassio/Dockerfile create mode 100644 build/hassio/config.yaml diff --git a/.github/workflows/builder.yml b/.github/workflows/builder.yml new file mode 100644 index 00000000..60b0fb48 --- /dev/null +++ b/.github/workflows/builder.yml @@ -0,0 +1,59 @@ +# https://github.com/home-assistant/builder +name: 'Builder' + +on: + push: + tags: [ 'v*' ] + workflow_dispatch: + +jobs: + hassio: + name: Hassio Addon + runs-on: ubuntu-latest + steps: + - name: Checkout the repository + uses: actions/checkout@v3 + + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Branch name + run: | + VERSION="${GITHUB_REF#refs/tags/v}" + echo "REPO=alexxit/go2rtc" >> $GITHUB_ENV + echo "TAG=${VERSION}" >> $GITHUB_ENV + echo "IMAGE=alexxit/go2rtc:${VERSION}" >> $GITHUB_ENV + + - name: Build amd64 + uses: home-assistant/builder@master + with: + args: --amd64 --target build/hassio --version $TAG-amd64 --no-latest --docker-hub-check + + - name: Build i386 + uses: home-assistant/builder@master + with: + args: --i386 --target build/hassio --version $TAG-i386 --no-latest --docker-hub-check + + - name: Build aarch64 + uses: home-assistant/builder@master + with: + args: --aarch64 --target build/hassio --version $TAG-aarch64 --no-latest --docker-hub-check + + - name: Build armv7 + uses: home-assistant/builder@master + with: + args: --armv7 --target build/hassio --version $TAG-armv7 --no-latest --docker-hub-check + + - name: Docker manifest + run: | + # thanks to https://github.com/aler9/rtsp-simple-server/blob/main/Makefile + docker manifest create "${IMAGE}" \ + "${IMAGE}-amd64" "${IMAGE}-i386" "${IMAGE}-aarch64" "${IMAGE}-armv7" + docker manifest push "${IMAGE}" + + docker manifest create "${REPO}:latest" \ + "${IMAGE}-amd64" "${IMAGE}-i386" "${IMAGE}-aarch64" "${IMAGE}-armv7" + docker manifest push "${REPO}:latest" diff --git a/build/hassio/Dockerfile b/build/hassio/Dockerfile new file mode 100644 index 00000000..28c9de26 --- /dev/null +++ b/build/hassio/Dockerfile @@ -0,0 +1,11 @@ +ARG BUILD_FROM +FROM $BUILD_FROM + +RUN apk add --no-cache git go + +WORKDIR app + +RUN git clone https://github.com/AlexxIT/go2rtc . +RUN CGO_ENABLED=0 go build -ldflags "-s -w" -trimpath + +CMD [ "/app/go2rtc", "-config", "/config/go2rtc.yaml" ] diff --git a/build/hassio/config.yaml b/build/hassio/config.yaml new file mode 100644 index 00000000..2447a06b --- /dev/null +++ b/build/hassio/config.yaml @@ -0,0 +1,6 @@ +# https://github.com/home-assistant/builder/blob/master/builder.sh +name: go2rtc +description: Ultimate camera streaming application +url: https://github.com/AlexxIT/go2rtc +image: alexxit/go2rtc +arch: [ amd64, aarch64, i386, armv7 ] \ No newline at end of file diff --git a/cmd/app/app.go b/cmd/app/app.go index a1704972..bea6dc9b 100644 --- a/cmd/app/app.go +++ b/cmd/app/app.go @@ -1,6 +1,7 @@ package app import ( + "flag" "github.com/rs/zerolog" "gopkg.in/yaml.v3" "io" @@ -9,7 +10,15 @@ import ( ) func Init() { - data, _ = os.ReadFile("go2rtc.yaml") + config := flag.String( + "config", + "go2rtc.yaml", + "Path to go2rtc configuration file", + ) + + flag.Parse() + + data, _ = os.ReadFile(*config) var cfg struct { Mod map[string]string `yaml:"log"`