release-rpm 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #!/usr/bin/env bash
  2. set -e
  3. # This script creates the yum repos for the .rpm files generated by hack/make/build-rpm
  4. #
  5. # The following can then be used as a yum repo:
  6. # http://yum.dockerproject.org/repo/$release/$distro/$distro-version
  7. #
  8. # For example:
  9. # http://yum.dockerproject.org/repo/main/fedora/23
  10. # http://yum.dockerproject.org/repo/testing/centos/7
  11. # http://yum.dockerproject.org/repo/experimental/fedora/23
  12. # http://yum.dockerproject.org/repo/main/centos/7
  13. #
  14. # ... and so on and so forth for the builds created by hack/make/build-rpm
  15. : ${DOCKER_RELEASE_DIR:=$DEST}
  16. YUMDIR=$DOCKER_RELEASE_DIR/yum/repo
  17. : ${GPG_KEYID:=releasedocker}
  18. # get the release
  19. release="main"
  20. if [[ "$VERSION" == *-rc* ]]; then
  21. release="testing"
  22. fi
  23. if [[ "$VERSION" == *-dev ]] || [ -n "$(git status --porcelain)" ]; then
  24. release="experimental"
  25. fi
  26. # Setup the yum repo
  27. for dir in bundles/$VERSION/build-rpm/*/; do
  28. version="$(basename "$dir")"
  29. suite="${version##*-}"
  30. distro="${version%-*}"
  31. REPO=$YUMDIR/$release/$distro
  32. # if the directory does not exist, initialize the yum repo
  33. if [[ ! -d $REPO/$suite/Packages ]]; then
  34. mkdir -p "$REPO/$suite/Packages"
  35. createrepo --pretty "$REPO/$suite"
  36. fi
  37. # path to rpms
  38. RPMFILE=( "bundles/$VERSION/build-rpm/$version/RPMS/"*"/docker-engine"*.rpm "bundles/$VERSION/build-rpm/$version/SRPMS/docker-engine"*.rpm )
  39. # if we have a $GPG_PASSPHRASE we may as well
  40. # sign the rpms before adding to repo
  41. if [ ! -z $GPG_PASSPHRASE ]; then
  42. # export our key to rpm import
  43. gpg --armor --export "$GPG_KEYID" > /tmp/gpg
  44. rpm --import /tmp/gpg
  45. # sign the rpms
  46. echo "yes" | setsid rpm \
  47. --define "_gpg_name $GPG_KEYID" \
  48. --define "_signature gpg" \
  49. --define "__gpg_check_password_cmd /bin/true" \
  50. --define "__gpg_sign_cmd %{__gpg} gpg --batch --no-armor --digest-algo 'sha512' --passphrase '$GPG_PASSPHRASE' --no-secmem-warning -u '%{_gpg_name}' --sign --detach-sign --output %{__signature_filename} %{__plaintext_filename}" \
  51. --resign "${RPMFILE[@]}"
  52. fi
  53. # copy the rpms to the packages folder
  54. cp "${RPMFILE[@]}" "$REPO/$suite/Packages"
  55. # update the repo
  56. createrepo --pretty --update "$REPO/$suite"
  57. done