| #!/bin/bash |
| set -e |
| |
| # This script creates the yum repos for the .rpm files generated by hack/make/build-rpm |
| # |
| # The following can then be used as a yum repo: |
| # http://yum.dockerproject.org/repo/$release/$distro/$distro-version |
| # |
| # For example: |
| # http://yum.dockerproject.org/repo/main/fedora/22 |
| # http://yum.dockerproject.org/repo/testing/centos/6 |
| # http://yum.dockerproject.org/repo/experimental/fedora/21 |
| # http://yum.dockerproject.org/repo/main/centos/7 |
| # |
| # ... and so on and so forth for the builds created by hack/make/build-rpm |
| |
| : ${DOCKER_RELEASE_DIR:=$DEST} |
| YUMDIR=$DOCKER_RELEASE_DIR/yum/repo |
| |
| # manage the repos for each distribution seperately |
| distros=( fedora centos oraclelinux ) |
| |
| # get the release |
| release="main" |
| |
| if [[ "$VERSION" == *-rc* ]]; then |
| release="testing" |
| fi |
| |
| if [ $DOCKER_EXPERIMENTAL ] || [[ "$VERSION" == *-dev ]] || [ -n "$(git status --porcelain)" ]; then |
| release="experimental" |
| fi |
| |
| for distro in "${distros[@]}"; do |
| # Setup the yum repo |
| REPO=$YUMDIR/$release/$distro |
| |
| for dir in contrib/builder/rpm/$distro-*/; do |
| version="$(basename "$dir")" |
| suite="${version##*-}" |
| |
| # if the directory does not exist, intialize the yum repo |
| if [[ ! -d $REPO/$suite/Packages ]]; then |
| mkdir -p "$REPO/$suite/Packages" |
| |
| createrepo --pretty "$REPO/$suite" |
| fi |
| |
| # path to rpms |
| RPMFILE=( "bundles/$VERSION/build-rpm/$version/RPMS/x86_64/docker-engine"*.rpm "bundles/$VERSION/build-rpm/$version/SRPMS/docker-engine"*.rpm ) |
| |
| # if we have a $GPG_PASSPHRASE we may as well |
| # sign the rpms before adding to repo |
| if [ ! -z $GPG_PASSPHRASE ]; then |
| # export our key to rpm import |
| gpg --armor --export releasedocker > /tmp/gpg |
| rpm --import /tmp/gpg |
| |
| # sign the rpms |
| rpm \ |
| --define '_gpg_name releasedocker' \ |
| --define '_signature gpg' \ |
| --define '__gpg_check_password_cmd /bin/true' \ |
| --define '__gpg_sign_cmd %{__gpg} gpg --batch --no-armor --passphrase '$GPG_PASSPHRASE' --no-secmem-warning -u "%{_gpg_name}" --sign --detach-sign --output %{__signature_filename} %{__plaintext_filename}' \ |
| --resign "${RPMFILE[@]}" |
| fi |
| |
| # copy the rpms to the packages folder |
| cp "$RPMFILE" "$REPO/$suite/Packages" |
| |
| # update the repo |
| createrepo --pretty --update "$REPO/$suite" |
| done |
| done |