update-rpm.sh 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #!/usr/bin/env bash
  2. RELEASE_TYPE="${1:-}"
  3. GPG_PASS="${2:-}"
  4. RELEASE_TAG="${3:-}"
  5. DIST_PATH="${4:-}"
  6. GCP_REPO_BUCKET="${5:-grafana-repo}"
  7. REPO="rpm"
  8. if [ -z "$RELEASE_TYPE" ] || [ -z "$GPG_PASS" ] || [ -z "$DIST_PATH" ]; then
  9. echo "Both RELEASE_TYPE (arg 1), GPG_PASS (arg 2) and DIST_PATH (arg 4) has to be set"
  10. exit 1
  11. fi
  12. if [[ "$RELEASE_TYPE" != "oss" && "$RELEASE_TYPE" != "enterprise" ]]; then
  13. echo "RELEASE_TYPE (arg 1) must be either oss or enterprise."
  14. exit 1
  15. fi
  16. if echo "$RELEASE_TAG" | grep -q "beta"; then
  17. REPO="rpm-beta"
  18. fi
  19. set -e
  20. # Setup environment
  21. BUCKET="gs://$GCP_REPO_BUCKET/$RELEASE_TYPE/$REPO"
  22. mkdir -p /rpm-repo
  23. # Download the database
  24. gsutil -m rsync -r "$BUCKET" /rpm-repo
  25. # Add the new release to the repo
  26. cp "$DIST_PATH"/*.rpm /rpm-repo # adds to many files for enterprise
  27. rm /rpm-repo/grafana-latest-1*.rpm || true
  28. createrepo /rpm-repo
  29. # Setup signing and sign the repo
  30. echo "allow-loopback-pinentry" > ~/.gnupg/gpg-agent.conf
  31. echo "pinentry-mode loopback" > ~/.gnupg/gpg.conf
  32. rm /rpm-repo/repodata/repomd.xml.asc || true
  33. pkill gpg-agent || true
  34. ./scripts/build/update_repo/sign-rpm-repo.sh "$GPG_PASS"
  35. # Update the repo and db on gcp
  36. gsutil -m cp /rpm-repo/*.rpm "$BUCKET" # sync binaries first to avoid cache misses
  37. gsutil -m rsync -r -d /rpm-repo "$BUCKET"
  38. # usage:
  39. # [grafana]
  40. # name=grafana
  41. # baseurl=https://packages.grafana.com/oss/rpm
  42. # repo_gpgcheck=1
  43. # enabled=1
  44. # gpgcheck=1
  45. # gpgkey=https://packages.grafana.com/gpg.key
  46. # sslverify=1
  47. # sslcacert=/etc/pki/tls/certs/ca-bundle.crt