From bc335ccf1fa358122058aadeedd5ad61124d9cd7 Mon Sep 17 00:00:00 2001 From: ze0s <43699394+zze0s@users.noreply.github.com> Date: Thu, 13 Oct 2022 20:31:43 +0200 Subject: [PATCH] build: images with goreleaser (#496) * build: images with goreleaser * build: cleanup workflow --- .github/workflows/release.yml | 72 ++++++++--------------------------- .goreleaser.yml | 60 +++++++++++++++++++++++++++++ goreleaser.Dockerfile | 21 ++++++++++ 3 files changed, 97 insertions(+), 56 deletions(-) create mode 100644 goreleaser.Dockerfile diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7fe06db..483dda9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -61,7 +61,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v3 with: - go-version: '1.19.1' + go-version: '1.19.2' cache: true - name: Run GoReleaser build @@ -80,7 +80,7 @@ jobs: path: dist/* goreleaser: - name: Build and publish Go binaries + name: Build & publish binaries and images if: startsWith(github.ref, 'refs/tags/') runs-on: ubuntu-latest needs: web @@ -90,6 +90,19 @@ jobs: with: fetch-depth: 0 + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Download web production build uses: actions/download-artifact@v3 with: @@ -99,7 +112,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v3 with: - go-version: '1.19.1' + go-version: '1.19.2' cache: true - name: Run GoReleaser build and publish tags @@ -116,56 +129,3 @@ jobs: with: name: autobrr path: dist/* - - docker: - name: Build and publish Docker images - runs-on: ubuntu-latest - needs: web - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Download web production build - uses: actions/download-artifact@v3 - with: - name: web-build - path: web/build - - - name: Login to GitHub Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Extract metadata - id: meta - uses: docker/metadata-action@v4 - with: - images: ghcr.io/autobrr/autobrr - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Build and publish image - id: docker_build - uses: docker/build-push-action@v3 - with: - context: . - file: ./Dockerfile.ci - platforms: linux/amd64,linux/arm/v7,linux/arm64/v8 - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - build-args: | - BUILDTIME=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }} - VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }} - REVISION=${{ github.event.pull_request.head.sha }} - - - name: Image digest - run: echo ${{ steps.docker_build.outputs.digest }} diff --git a/.goreleaser.yml b/.goreleaser.yml index b5d61e2..bcfda99 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -64,6 +64,66 @@ archives: replacements: amd64: x86_64 +dockers: + - use: buildx + goos: linux + goarch: amd64 + ids: + - autobrr + - autobrrctl + dockerfile: goreleaser.Dockerfile + image_templates: + - "ghcr.io/autobrr/autobrr:{{ .Tag }}" + - "ghcr.io/autobrr/autobrr:latest" + build_flag_templates: + - "--pull" + - "--platform=linux/amd64" + - "--label=org.opencontainers.image.created={{.Date}}" + - "--label=org.opencontainers.image.title={{.ProjectName}}" + - "--label=org.opencontainers.image.revision={{.FullCommit}}" + - "--label=org.opencontainers.image.version={{.Version}}" + - use: buildx + goos: linux + goarch: arm64 + goarm: 6 + ids: + - autobrr + - autobrrctl + dockerfile: goreleaser.Dockerfile + image_templates: + - "ghcr.io/autobrr/autobrr:{{ .Tag }}" + - "ghcr.io/autobrr/autobrr:latest" + build_flag_templates: + - "--pull" + - "--platform=linux/arm64/v8" + - "--label=org.opencontainers.image.created={{.Date}}" + - "--label=org.opencontainers.image.title={{.ProjectName}}" + - "--label=org.opencontainers.image.revision={{.FullCommit}}" + - "--label=org.opencontainers.image.version={{.Version}}" + - use: buildx + goos: linux + goarch: arm + goarm: 6 + ids: + - autobrr + - autobrrctl + dockerfile: goreleaser.Dockerfile + image_templates: + - "ghcr.io/autobrr/autobrr:{{ .Tag }}" + - "ghcr.io/autobrr/autobrr:latest" + build_flag_templates: + - "--pull" + - "--platform=linux/arm/v7" + - "--label=org.opencontainers.image.created={{.Date}}" + - "--label=org.opencontainers.image.title={{.ProjectName}}" + - "--label=org.opencontainers.image.revision={{.FullCommit}}" + - "--label=org.opencontainers.image.version={{.Version}}" +docker_manifests: + - name_template: ghcr.io/autobrr/autobrr:{{ .Tag }} + image_templates: + - ghcr.io/autobrr/autobrr:{{ .Tag }} + - ghcr.io/autobrr/autobrr:latest + release: prerelease: auto footer: | diff --git a/goreleaser.Dockerfile b/goreleaser.Dockerfile new file mode 100644 index 0000000..9fcf676 --- /dev/null +++ b/goreleaser.Dockerfile @@ -0,0 +1,21 @@ +FROM alpine:latest + +LABEL org.opencontainers.image.source = "https://github.com/autobrr/autobrr" + +ENV HOME="/config" \ +XDG_CONFIG_HOME="/config" \ +XDG_DATA_HOME="/config" + +#RUN ["apk", "--no-cache", "add", "ca-certificates","curl"] + +COPY autobrr /usr/local/bin/autobrr +COPY autobrrctl /usr/local/bin/autobrrctl + +WORKDIR /config + +VOLUME /config + +EXPOSE 7474 + +ENTRYPOINT ["/usr/local/bin/autobrr", "--config", "/config"] +#CMD ["--config", "/config"]