diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..3c7c0e1 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,17 @@ +name: Release + +on: + workflow_dispatch: + pull_request: + push: + +permissions: {} + +jobs: + release: + uses: hansmi/ghactions-goreleaser-workflow/.github/workflows/release.yaml@v0.3 + permissions: + contents: write + packages: write + +# vim: set sw=2 sts=2 et : diff --git a/.goreleaser.yml b/.goreleaser.yml new file mode 100644 index 0000000..9dbedbf --- /dev/null +++ b/.goreleaser.yml @@ -0,0 +1,51 @@ +# Configuration for GoReleaser +# https://goreleaser.com/ +# +# Local test: contrib/build-all +# + +version: 2 + +project_name: dossier + +builds: + - id: dossiercli + main: ./cmd/dossiercli/ + binary: dossiercli + env: + - CGO_ENABLED=0 + targets: + - linux_amd64_v1 + flags: + - -trimpath + +dockers: + - ids: + - dossiercli + use: buildx + dockerfile: contrib/Dockerfile.goreleaser + extra_files: + - LICENSE + - README.md + - internal/testfiles/acme-invoice-11321-19.pdf + - pkg/sketch/testdata/acme-invoice.textproto + image_templates: + - ghcr.io/hansmi/dossier:{{.Tag}}-cli + - ghcr.io/hansmi/dossier:v{{.Major}}-cli + - ghcr.io/hansmi/dossier:latest-cli + build_flag_templates: + - --pull + - --label=org.opencontainers.image.created={{.Date}} + - --label=org.opencontainers.image.name={{.ProjectName}} + - --label=org.opencontainers.image.revision={{.FullCommit}} + - --label=org.opencontainers.image.version={{.Version}} + - --label=org.opencontainers.image.source={{.GitURL}} + +release: + draft: true + prerelease: auto + +snapshot: + version_template: '{{ incpatch .Version }}-snapshot{{ replace (replace .Date ":" "") "-" "" }}+g{{ .ShortCommit }}' + +# vim: set sw=2 sts=2 et : diff --git a/contrib/Dockerfile.goreleaser b/contrib/Dockerfile.goreleaser new file mode 100644 index 0000000..035bacb --- /dev/null +++ b/contrib/Dockerfile.goreleaser @@ -0,0 +1,22 @@ +FROM docker.io/library/alpine:latest + +RUN apk add --no-cache ca-certificates tzdata mupdf-tools + +LABEL org.opencontainers.image.licenses=BSD-3-Clause +LABEL org.opencontainers.image.description="Extract information from PDF documents" + +WORKDIR / + +COPY LICENSE README.md / +COPY dossiercli / + +# Trivial test +RUN --mount=type=bind,source=./,target=/src \ + /dossiercli analyze-sketch \ + /src/internal/testfiles/acme-invoice-11321-19.pdf \ + /src/pkg/sketch/testdata/acme-invoice.textproto | \ + grep -q -w -e textMatchGroups + +ENTRYPOINT ["/dossiercli"] + +# vim: set sw=2 sts=2 et ft=dockerfile : diff --git a/contrib/build-all b/contrib/build-all new file mode 100755 index 0000000..bb84adc --- /dev/null +++ b/contrib/build-all @@ -0,0 +1,16 @@ +#!/bin/bash + +set -e -u -o pipefail + +package=github.com/hansmi/dossier +docker_gid=$(getent group docker | cut -d: -f3) + +docker run --rm \ + --user "$(id -u):$(id -g)" --group-add="$docker_gid" \ + --env HOME=/tmp \ + -v "${PWD}:/go/src/${package}" \ + -v /var/run/docker.sock:/var/run/docker.sock \ + -w "/go/src/${package}" \ + goreleaser/goreleaser:latest release --snapshot --clean --skip=publish + +# vim: set sw=2 sts=2 et :