#!/usr/bin/env bash set -euo pipefail RPM_DIR="${1%/}" : "${RPM_DIR:?usage: $0 }" : "${FEDORA_VERSION:?}" REMOTE_DIR="/var/www/rpm/fedora/${FEDORA_VERSION}/x86_64" # sign each rpm with the imported gpg key echo "--- rpmmacros ---" cat ~/.rpmmacros echo "--- macro check ---" rpm -E '%{_openpgp_sign_id}' || true rpm -E '%{_gpg_name}' || true echo "--- signing ---" for rpm in "${RPM_DIR}"/*.rpm; do echo "signing ${rpm}..." set +e rpm --addsign "${rpm}" 2>&1 rc=$? set -e echo "exit code: ${rc}" if [ "${rc}" -ne 0 ]; then echo "failed to sign ${rpm}" >&2 exit 1 fi done echo "setting up ssh..." install --directory --mode 700 ~/.ssh echo "${RSYNC_SSH_KEY}" | install --mode 600 /dev/stdin ~/.ssh/id_ed25519 ssh-keyscan -H oolon.kosherinata.internal > ~/.ssh/known_hosts 2>/dev/null echo "rsyncing to ${RSYNC_TARGET}:${REMOTE_DIR}/..." rsync \ --archive \ --verbose \ --chmod D755,F644 \ "${RPM_DIR}/"*.rpm \ "${RSYNC_TARGET}:${REMOTE_DIR}/" echo "updating repo metadata..." ssh "${RSYNC_TARGET}" "cd ${REMOTE_DIR} && createrepo_c --update ." echo "Published $(ls ${RPM_DIR}/*.rpm | wc -l) RPMs"