#!/bin/bash # This script signs the deliverables from release-deb and release-rpm # with a designated GPG key. : ${DOCKER_RELEASE_DIR:=$DEST} : ${GPG_KEYID:=releasedocker} APTDIR=$DOCKER_RELEASE_DIR/apt/repo YUMDIR=$DOCKER_RELEASE_DIR/yum/repo if [ -z "$GPG_PASSPHRASE" ]; then echo >&2 'you need to set GPG_PASSPHRASE in order to sign artifacts' exit 1 fi if [ ! -d $APTDIR ] && [ ! -d $YUMDIR ]; then echo >&2 'release-rpm or release-deb must be run before sign-repos' exit 1 fi sign_packages(){ # sign apt repo metadata if [ -d $APTDIR ]; then # create file with public key gpg --armor --export "$GPG_KEYID" > "$DOCKER_RELEASE_DIR/apt/gpg" # sign the repo metadata for F in $(find $APTDIR -name Release); do if test "$F" -nt "$F.gpg" ; then gpg -u "$GPG_KEYID" --passphrase "$GPG_PASSPHRASE" \ --digest-algo "sha512" \ --armor --sign --detach-sign \ --batch --yes \ --output "$F.gpg" "$F" fi inRelease="$(dirname "$F")/InRelease" if test "$F" -nt "$inRelease" ; then gpg -u "$GPG_KEYID" --passphrase "$GPG_PASSPHRASE" \ --digest-algo "sha512" \ --clearsign \ --batch --yes \ --output "$inRelease" "$F" fi done fi # sign yum repo metadata if [ -d $YUMDIR ]; then # create file with public key gpg --armor --export "$GPG_KEYID" > "$DOCKER_RELEASE_DIR/yum/gpg" # sign the repo metadata for F in $(find $YUMDIR -name repomd.xml); do if test "$F" -nt "$F.asc" ; then gpg -u "$GPG_KEYID" --passphrase "$GPG_PASSPHRASE" \ --digest-algo "sha512" \ --armor --sign --detach-sign \ --batch --yes \ --output "$F.asc" "$F" fi done fi } sign_packages