From 86c94d3e3068bfb66f1108d8f95e9d6aa1ab3985 Mon Sep 17 00:00:00 2001 From: Tycho Andersen Date: Wed, 9 Aug 2017 15:39:37 -0600 Subject: [PATCH] add a deb package for pass/secret service backends Note that this single source package produces two binary packages: one for -pass, and one for -secretservice, so that users can install whichever password backend (and thus deps) that they want. Signed-off-by: Tycho Andersen --- Makefile | 14 +++++++++- deb/Dockerfile | 19 ++++++++++++++ deb/build-deb | 26 +++++++++++++++++++ deb/debian/compat | 1 + deb/debian/control | 25 ++++++++++++++++++ deb/debian/docker-credential-pass.install | 1 + .../docker-credential-secretservice.install | 1 + deb/debian/rules | 17 ++++++++++++ 8 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 deb/Dockerfile create mode 100755 deb/build-deb create mode 100644 deb/debian/compat create mode 100644 deb/debian/control create mode 100644 deb/debian/docker-credential-pass.install create mode 100644 deb/debian/docker-credential-secretservice.install create mode 100755 deb/debian/rules diff --git a/Makefile b/Makefile index 1f3549e..b4715db 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: all deps osxkeychain secretservice test validate wincred pass +.PHONY: all deps osxkeychain secretservice test validate wincred pass deb TRAVIS_OS_NAME ?= linux VERSION := $(shell grep 'const Version' credentials/version.go | awk -F'"' '{ print $$2 }') @@ -68,3 +68,15 @@ fmt: gofmt -s -l `ls **/*.go | grep -v vendor` validate: vet lint fmt + + +BUILDIMG:=docker-credential-secretservice-$(VERSION) +deb: + mkdir -p release + docker build -f deb/Dockerfile \ + --build-arg VERSION=$(VERSION) \ + --build-arg DISTRO=xenial \ + --tag $(BUILDIMG) \ + . + docker run --rm --net=none $(BUILDIMG) tar cf - /release | tar xf - + docker rmi $(BUILDIMG) diff --git a/deb/Dockerfile b/deb/Dockerfile new file mode 100644 index 0000000..1e97b96 --- /dev/null +++ b/deb/Dockerfile @@ -0,0 +1,19 @@ +FROM ubuntu:xenial + +ARG VERSION +ARG DISTRO + +RUN apt-get update && apt-get install -yy debhelper dh-make golang-go libsecret-1-dev +RUN mkdir -p /build + +WORKDIR /build +ENV GOPATH /build + +COPY Makefile . +COPY credentials credentials +COPY secretservice secretservice +COPY pass pass +COPY deb/debian ./debian +COPY deb/build-deb . + +RUN /build/build-deb ${VERSION} ${DISTRO} diff --git a/deb/build-deb b/deb/build-deb new file mode 100755 index 0000000..dbb9172 --- /dev/null +++ b/deb/build-deb @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +set -x +set -e + +version=$1 +distro=$2 + +maintainer=$(awk -F ': ' '$1 == "Maintainer" { print $2; exit }' debian/control) + +cat > "debian/changelog" <<-EOF +docker-credential-helpers ($version) $DISTRO; urgency=low + + * New upstream version + + -- $maintainer $(date --rfc-2822) +EOF + +mkdir -p src/github.com/docker/docker-credential-helpers +ln -s /build/credentials /build/src/github.com/docker/docker-credential-helpers/credentials +ln -s /build/secretservice /build/src/github.com/docker/docker-credential-helpers/secretservice +ln -s /build/pass /build/src/github.com/docker/docker-credential-helpers/pass + +dpkg-buildpackage -us -uc + +mkdir /release +mv /docker-credential-* /release diff --git a/deb/debian/compat b/deb/debian/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/deb/debian/compat @@ -0,0 +1 @@ +9 diff --git a/deb/debian/control b/deb/debian/control new file mode 100644 index 0000000..33f2041 --- /dev/null +++ b/deb/debian/control @@ -0,0 +1,25 @@ +Source: docker-credential-helpers +Section: admin +Priority: optional +Maintainer: Docker +Homepage: https://dockerproject.org +Standards-Version: 3.9.6 +Vcs-Browser: https://github.com/docker/docker-credential-helpers +Vcs-Git: git://github.com/docker/docker-credential-helpers.git +Build-Depends: debhelper + , dh-make + , libsecret-1-dev + +Package: docker-credential-secretservice +Architecture: any +Depends: libsecret-1-0 + , ${misc:Depends} +Description: docker-credential-secretservice is a credential helper backend + which uses libsecret to keep Docker credentials safe. + +Package: docker-credential-pass +Architecture: any +Depends: pass + , ${misc:Depends} +Description: docker-credential-secretservice is a credential helper backend + which uses the pass utility to keep Docker credentials safe. diff --git a/deb/debian/docker-credential-pass.install b/deb/debian/docker-credential-pass.install new file mode 100644 index 0000000..fb17479 --- /dev/null +++ b/deb/debian/docker-credential-pass.install @@ -0,0 +1 @@ +debian/tmp/usr/bin/docker-credential-pass diff --git a/deb/debian/docker-credential-secretservice.install b/deb/debian/docker-credential-secretservice.install new file mode 100644 index 0000000..4a17630 --- /dev/null +++ b/deb/debian/docker-credential-secretservice.install @@ -0,0 +1 @@ +debian/tmp/usr/bin/docker-credential-secretservice diff --git a/deb/debian/rules b/deb/debian/rules new file mode 100755 index 0000000..e3421e9 --- /dev/null +++ b/deb/debian/rules @@ -0,0 +1,17 @@ +#!/usr/bin/make -f + +DESTDIR := $(CURDIR)/debian/tmp + +override_dh_auto_build: + make secretservice pass + +override_dh_auto_install: + install -D bin/docker-credential-secretservice $(DESTDIR)/usr/bin/docker-credential-secretservice + install -D bin/docker-credential-pass $(DESTDIR)/usr/bin/docker-credential-pass + +%: + dh $@ + +override_dh_auto_test: + # no tests +