You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by wo...@apache.org on 2021/09/30 22:57:28 UTC

[couchdb-pkg] branch main updated: Switch from bintray to artifactory; remove build.sh support for SM (#84)

This is an automated email from the ASF dual-hosted git repository.

wohali pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/couchdb-pkg.git


The following commit(s) were added to refs/heads/main by this push:
     new d9e3c29  Switch from bintray to artifactory; remove build.sh support for SM (#84)
d9e3c29 is described below

commit d9e3c294e3e859203b8248d48f121a9e2a4c6931
Author: Joan Touzet <wo...@users.noreply.github.com>
AuthorDate: Thu Sep 30 18:57:24 2021 -0400

    Switch from bintray to artifactory; remove build.sh support for SM (#84)
---
 build.sh | 188 ++++++++++++++++++---------------------------------------------
 1 file changed, 52 insertions(+), 136 deletions(-)

diff --git a/build.sh b/build.sh
index b2b3513..b729ec1 100755
--- a/build.sh
+++ b/build.sh
@@ -27,13 +27,13 @@ set -e
 # otherwise, see https://stackoverflow.com/questions/59895/
 SCRIPTPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 
-# TODO derive these by interrogating the couchdb-ci repo rather than hard coding the list...
+# TODO derive these by interrogating the couchdb-ci repo rather than hard coding the list
 DEBIANS="debian-stretch debian-buster debian-bullseye"
 UBUNTUS="ubuntu-xenial ubuntu-bionic ubuntu-focal"
 CENTOSES="centos-7 centos-8"
 XPLAT_BASE="debian-buster"
 XPLAT_ARCHES="arm64v8 ppc64le"
-BINTRAY_API="https://api.bintray.com"
+BINARY_API="https://apache.jfrog.io/artifactory"
 ERLANGVERSION=${ERLANGVERSION:-20.3.8.26-1}
 
 split-os-ver() {
@@ -44,95 +44,6 @@ split-os-ver() {
   version=${tokens[1]}
 }
 
-build-js() {
-  # TODO: check if image is built first, if not, complain
-  # invoke as build-js <plat>
-  split-os-ver $1
-  if [[ ${TRAVIS} == "true" ]]; then
-    docker run \
-        --mount type=bind,src=${SCRIPTPATH},dst=/home/jenkins/couchdb-pkg \
-        -u 0 apache/couchdbci-${os}:${CONTAINERARCH}${version}-base \
-        /home/jenkins/couchdb-pkg/bin/build-js.sh
-  else
-    docker run \
-        --mount type=bind,src=${SCRIPTPATH},dst=/home/jenkins/couchdb-pkg \
-        apache/couchdbci-${os}:${CONTAINERARCH}${version}-base \
-        sudo /home/jenkins/couchdb-pkg/bin/build-js.sh
-  fi
-}
-
-build-all-js() {
-  rm -rf ${SCRIPTPATH}/pkgs/js/*
-  for plat in $DEBIANS $UBUNTUS $CENTOSES; do
-    build-js $plat
-  done
-  for arch in $XPLAT_ARCHES; do
-    CONTAINERARCH="${arch}-" build-js $XPLAT_BASE
-  done
-}
-
-bintray-check-credentials() {
-  if [[ ! ${BINTRAY_USER} || ! ${BINTRAY_API_KEY} ]]; then
-    echo "Please set your Bintray credentials before using this command:"
-    echo "  export BINTRAY_USER=<username>"
-    echo "  export BINTRAY_API_KEY=<key>"
-    exit 1
-  fi
-}
-
-bintray-upload() {
-  echo "Uploading ${PKG}..."
-  local ret="$(curl \
-      --request PUT \
-      --upload-file $PKG \
-      --user ${BINTRAY_USER}:${BINTRAY_API_KEY} \
-      --header "X-Bintray-Package: ${PKGNAME}" \
-      --header "X-Bintray-Version: ${PKGVERSION}" \
-      --header "X-Bintray-Publish: 1" \
-      --header "X-Bintray-Override: 1" \
-      --header "X-Bintray-Explode: 0" \
-      "${HEADERS[@]}" \
-      "${BINTRAY_API}/content/apache/${REPO}/${RELPATH}")"
-  if [[ ${ret} == '{"message":"success"}' ]]; then
-    echo "Uploaded successfully."
-  else
-    echo "Failed to upload $PKG, ${ret}"
-    exit 1
-  fi
-}
-
-upload-js() {
-  # invoke with $1 as plat, expect to find the binaries under pkgs/js/$plat/*
-  bintray-check-credentials
-  # Debian packages first
-  PKGNAME="spidermonkey"
-  PKGVERSION="1.8.5"
-  for PKG in $(ls pkgs/js/$1/*.deb 2>/dev/null); do
-    # Example filename: couch-libmozjs185-1.0_1.8.5-1.0.0+couch-2~bionic_amd64.deb
-    # TODO: pull this stuff from buildinfo / changes files, perhaps? Not sure it matters.
-    REPO="couchdb-deb"
-    fname=${PKG##*/}
-    DIST=$(echo $fname | cut -d~ -f 2 | cut -d_ -f 1)
-    PKGARCH=$(echo $fname | cut -d_ -f 3 | cut -d. -f 1)
-    RELPATH="pool/s/spidermonkey/${fname}"
-    HEADERS=("--header" "X-Bintray-Debian-Distribution: ${DIST}")
-    HEADERS+=("--header" "X-Bintray-Debian-Component: main")
-    HEADERS+=("--header" "X-Bintray-Debian-Architecture: ${PKGARCH}")
-    bintray-upload
-  done
-  for PKG in $(ls pkgs/js/$1/*.rpm 2>/dev/null); do
-    # Example filename: couch-js-1.8.5-21.el7.x86_64.rpm
-    REPO="couchdb-rpm"
-    fname=${PKG##*/}
-    # better not put any extra . in the filename...
-    DIST=$(echo $fname | cut -d. -f 4)
-    PKGARCH=$(echo $fname | cut -d. -f 5)
-    RELPATH="${DIST}/${PKGARCH}/${fname}"
-    HEADERS=()
-    bintray-upload
-  done
-}
-
 cannot-find-tarball() {
     echo Must supply path to tarball, either:
     echo '  - path/to/couchdb-VERSION.tar.gz or'
@@ -173,11 +84,19 @@ build-couch() {
   # We will be changing user to 'jenkins' - ensure it has write permissions
   chmod a+rwx pkgs pkgs/couch pkgs/js
   # $1 is plat, $2 is the optional path to a dist tarball
-  docker run \
-      --mount type=bind,src=${SCRIPTPATH},dst=/home/jenkins/couchdb-pkg \
-      -u 0 -w /home/jenkins/couchdb-pkg \
-      apache/couchdbci-${os}:${CONTAINERARCH}${version}-erlang-${ERLANGVERSION} \
-      make copy-couch $1 COUCHTARBALL=${COUCHTARBALL}
+  if [ -z ${CONTAINERARCH+x} ]; then
+    docker run \
+        --mount type=bind,src=${SCRIPTPATH},dst=/home/jenkins/couchdb-pkg \
+        -u 0 -w /home/jenkins/couchdb-pkg \
+        apache/couchdbci-${os}:${version}-erlang-${ERLANGVERSION} \
+        make copy-couch $1 COUCHTARBALL=${COUCHTARBALL}
+  else
+    docker run \
+        --mount type=bind,src=${SCRIPTPATH},dst=/home/jenkins/couchdb-pkg \
+        -u 0 -w /home/jenkins/couchdb-pkg \
+        apache/couchdbci-${os}:${CONTAINERARCH}-${version}-erlang-${ERLANGVERSION} \
+        make copy-couch ${CONTAINERARCH}-$1 COUCHTARBALL=${COUCHTARBALL}
+  fi
   make clean
 }
 
@@ -191,24 +110,41 @@ build-all-couch() {
   done
 }
 
+
+binary-upload() {
+  echo "Uploading ${PKG}..."
+  local ret="$(curl \
+      --request PUT \
+      --upload-file $PKG \
+      --user ${BINARY_CREDS} \
+      "${BINARY_API}/${REPO}/${RELPATH}${SUFFIX}")"
+  if [[ ${ret} =~ '"created" :' ]]; then
+    echo "Uploaded successfully."
+  else
+    echo "Failed to upload $PKG, ${ret}"
+    exit 1
+  fi
+}
+
 upload-couch() {
   # invoke with $1 as plat, expect to find the binaries under pkgs/couch/$plat/*
-  bintray-check-credentials
-  # Debian packages first
-  PKGNAME="CouchDB"
+  if [ -z ${BINARY_CREDS+x} ]; then
+    echo "Please set your upload credentials before using this command:"
+    echo "  export BINARY_CREDS=<user@domain:KEYGOESHERE>"
+    exit 1
+  fi
   for PKG in $(ls pkgs/couch/$1/*.deb 2>/dev/null); do
     # Example filename: couchdb_2.3.0~jessie_amd64.deb
-    # TODO: pull this stuff from buildinfo / changes files, perhaps? Not sure it matters.
     fname=${PKG##*/}
     REPO="couchdb-deb"
+    RELPATH="pool/C/CouchDB/${fname}"
     DIST=$(echo $fname | cut -d~ -f 2 | cut -d_ -f 1)
     PKGARCH=$(echo $fname | cut -d_ -f 3 | cut -d. -f 1)
     PKGVERSION=$(echo $fname | cut -d_ -f 2 | cut -d~ -f 1)
-    RELPATH="pool/C/CouchDB/${fname}"
-    HEADERS=("--header" "X-Bintray-Debian-Distribution: ${DIST}")
-    HEADERS+=("--header" "X-Bintray-Debian-Component: main")
-    HEADERS+=("--header" "X-Bintray-Debian-Architecture: ${PKGARCH}")
-    bintray-upload
+    SUFFIX=";deb.distribution=${DIST}"
+    SUFFIX+=";deb.component=main"
+    SUFFIX+=";deb.architecture=${PKGARCH}"
+    binary-upload
   done
   for PKG in $(ls pkgs/couch/$1/*.rpm 2>/dev/null); do
     # Example filename: couchdb-2.3.0-1.el7.x86_64.rpm.asc
@@ -219,9 +155,15 @@ upload-couch() {
     PKGARCH=$(echo $fname | cut -d. -f 5)
     PKGVERSION=$(echo $fname | cut -d- -f 2)
     RELPATH="${DIST}/${PKGARCH}/${fname}"
-    HEADERS=()
-    bintray-upload
+    SUFFIX=""
+    binary-upload
   done
+  echo "Recalculating Debian repo metadata..."
+  local ret="$(curl \
+    --request POST \
+    --user ${BINARY_CREDS} \
+    "${BINARY_API}/api/deb/reindex/couchdb-deb")"
+  echo "${ret}"
 }
 
 usage() {
@@ -230,22 +172,16 @@ $0 <command> [OPTIONS]
 
 Recognized commands:
   clean                 Remove all built package artefacts.
-
-  js <plat>             Builds the JS packages for <plat>.
-  js-all                Builds the JS packages for all platforms.
-  *js-upload <plat>     Uploads the JS packages for <plat> to bintray.
-  *js-upload-all        Uploads the JS packages for all platforms to bintray.
-
   couch <plat> <src>    Builds CouchDB packages for <plat>.
   couch-all <src>       Builds CouchDB packages for all platforms.
-  *couch-upload <plat>  Uploads the JS packages for <plat> to bintray.
-  *couch-upload-all     Uploads the JS packages for all platforms to bintray.
+  *couch-upload <plat>  Uploads the JS packages for <plat> to binary.
+  *couch-upload-all     Uploads the JS packages for all platforms to binary.
 
   <src> is either
     - a path/to/a/couchdb.tar.gz, or
     - a URL to http(s)://domain.com/to/couchdb.tar.gz
 
-  Commands marked with * require BINTRAY_USER and BINTRAY_API_KEY env vars.
+  Commands marked with * require BINARY_CREDS env var.
 EOF
 }
 
@@ -256,26 +192,6 @@ case "$1" in
     shift
     rm -rf ${SCRIPTPATH}/pkgs/js/* ${SCRIPTPATH}/pkgs/couch/*
     ;;
-  js)
-    # Build js packages for a given platform
-    shift
-    build-js $1
-    ;;
-  js-all)
-    # build all supported JS packages
-    shift
-    build-all-js
-    ;;
-  js-upload)
-    shift
-    upload-js $1
-    ;;
-  js-upload-all)
-    shift
-    for dir in $(ls pkgs/js); do
-      upload-js $dir
-    done
-    ;;
   couch)
     # build CouchDB pkgs for <plat>
     shift