diff options
author | Renato Botelho <renato@netgate.com> | 2016-08-12 14:11:57 -0300 |
---|---|---|
committer | Renato Botelho <renato@netgate.com> | 2016-08-12 14:16:57 -0300 |
commit | 5163c3ca42631ed0905f335282c9daf570fd66b1 (patch) | |
tree | cd8e7a8c99be3af45d846eff8792e5c99ad60a50 /tools/builder_common.sh | |
parent | 820b17e1da57d6bfff248e50b4f839682cbc734c (diff) | |
download | pfsense-5163c3ca42631ed0905f335282c9daf570fd66b1.zip pfsense-5163c3ca42631ed0905f335282c9daf570fd66b1.tar.gz |
Change build scripts to make it possible to rsync files to multiple locations
Diffstat (limited to 'tools/builder_common.sh')
-rw-r--r-- | tools/builder_common.sh | 132 |
1 files changed, 69 insertions, 63 deletions
diff --git a/tools/builder_common.sh b/tools/builder_common.sh index f21a378..e3f9cb0 100644 --- a/tools/builder_common.sh +++ b/tools/builder_common.sh @@ -1621,59 +1621,63 @@ pkg_repo_rsync() { return fi - # Make sure destination directory exist - ssh -p ${PKG_RSYNC_SSH_PORT} \ - ${PKG_RSYNC_USERNAME}@${PKG_RSYNC_HOSTNAME} \ - "mkdir -p ${PKG_RSYNC_DESTDIR}" - - echo -n ">>> Sending updated repository to ${PKG_RSYNC_HOSTNAME}... " | tee -a ${_logfile} - if script -aq ${_logfile} rsync -Have "ssh -p ${PKG_RSYNC_SSH_PORT}" \ - --timeout=60 --delete-delay ${_repo_path} \ - ${PKG_RSYNC_USERNAME}@${PKG_RSYNC_HOSTNAME}:${PKG_RSYNC_DESTDIR} >/dev/null 2>&1 - then - echo "Done!" | tee -a ${_logfile} - else - echo "Failed!" | tee -a ${_logfile} - echo ">>> ERROR: An error occurred sending repo to remote hostname" - print_error_pfS - fi - - if [ -z "${USE_PKG_REPO_STAGING}" -o -n "${_ignore_final_rsync}" ]; then - return - fi - - if [ -n "${_IS_RELEASE}" -o "${_repo_path_param}" = "${CORE_PKG_PATH}" ]; then - # Send .real* directories first to prevent having a broken repo while transfer happens - local _cmd="rsync -Have \"ssh -p ${PKG_FINAL_RSYNC_SSH_PORT}\" \ - --timeout=60 ${PKG_RSYNC_DESTDIR}/./${_repo_base%%-core}* \ - --include=\"/*\" --include=\"*/.real*\" --include=\"*/.real*/***\" \ - --exclude=\"*\" \ - ${PKG_FINAL_RSYNC_USERNAME}@${PKG_FINAL_RSYNC_HOSTNAME}:${PKG_FINAL_RSYNC_DESTDIR}" - - echo -n ">>> Sending updated packages to ${PKG_FINAL_RSYNC_HOSTNAME}... " | tee -a ${_logfile} - if script -aq ${_logfile} ssh -p ${PKG_RSYNC_SSH_PORT} \ - ${PKG_RSYNC_USERNAME}@${PKG_RSYNC_HOSTNAME} ${_cmd} >/dev/null 2>&1; then + for _pkg_rsync_hostname in ${PKG_RSYNC_HOSTNAME}; do + # Make sure destination directory exist + ssh -p ${PKG_RSYNC_SSH_PORT} \ + ${PKG_RSYNC_USERNAME}@${_pkg_rsync_hostname} \ + "mkdir -p ${PKG_RSYNC_DESTDIR}" + + echo -n ">>> Sending updated repository to ${_pkg_rsync_hostname}... " | tee -a ${_logfile} + if script -aq ${_logfile} rsync -Have "ssh -p ${PKG_RSYNC_SSH_PORT}" \ + --timeout=60 --delete-delay ${_repo_path} \ + ${PKG_RSYNC_USERNAME}@${_pkg_rsync_hostname}:${PKG_RSYNC_DESTDIR} >/dev/null 2>&1 + then echo "Done!" | tee -a ${_logfile} else echo "Failed!" | tee -a ${_logfile} - echo ">>> ERROR: An error occurred sending repo to final hostname" + echo ">>> ERROR: An error occurred sending repo to remote hostname" print_error_pfS fi - _cmd="rsync -Have \"ssh -p ${PKG_FINAL_RSYNC_SSH_PORT}\" \ - --timeout=60 --delete-delay ${PKG_RSYNC_DESTDIR}/./${_repo_base%%-core}* \ - ${PKG_FINAL_RSYNC_USERNAME}@${PKG_FINAL_RSYNC_HOSTNAME}:${PKG_FINAL_RSYNC_DESTDIR}" + if [ -z "${USE_PKG_REPO_STAGING}" -o -n "${_ignore_final_rsync}" ]; then + return + fi - echo -n ">>> Sending updated repositories metadata to ${PKG_FINAL_RSYNC_HOSTNAME}... " | tee -a ${_logfile} - if script -aq ${_logfile} ssh -p ${PKG_RSYNC_SSH_PORT} \ - ${PKG_RSYNC_USERNAME}@${PKG_RSYNC_HOSTNAME} ${_cmd} >/dev/null 2>&1; then - echo "Done!" | tee -a ${_logfile} - else - echo "Failed!" | tee -a ${_logfile} - echo ">>> ERROR: An error occurred sending repo to final hostname" - print_error_pfS + if [ -n "${_IS_RELEASE}" -o "${_repo_path_param}" = "${CORE_PKG_PATH}" ]; then + for _pkg_final_rsync_hostname in ${PKG_FINAL_RSYNC_HOSTNAME}; do + # Send .real* directories first to prevent having a broken repo while transfer happens + local _cmd="rsync -Have \"ssh -p ${PKG_FINAL_RSYNC_SSH_PORT}\" \ + --timeout=60 ${PKG_RSYNC_DESTDIR}/./${_repo_base%%-core}* \ + --include=\"/*\" --include=\"*/.real*\" --include=\"*/.real*/***\" \ + --exclude=\"*\" \ + ${PKG_FINAL_RSYNC_USERNAME}@${_pkg_final_rsync_hostname}:${PKG_FINAL_RSYNC_DESTDIR}" + + echo -n ">>> Sending updated packages to ${_pkg_final_rsync_hostname}... " | tee -a ${_logfile} + if script -aq ${_logfile} ssh -p ${PKG_RSYNC_SSH_PORT} \ + ${PKG_RSYNC_USERNAME}@${_pkg_rsync_hostname} ${_cmd} >/dev/null 2>&1; then + echo "Done!" | tee -a ${_logfile} + else + echo "Failed!" | tee -a ${_logfile} + echo ">>> ERROR: An error occurred sending repo to final hostname" + print_error_pfS + fi + + _cmd="rsync -Have \"ssh -p ${PKG_FINAL_RSYNC_SSH_PORT}\" \ + --timeout=60 --delete-delay ${PKG_RSYNC_DESTDIR}/./${_repo_base%%-core}* \ + ${PKG_FINAL_RSYNC_USERNAME}@${_pkg_final_rsync_hostname}:${PKG_FINAL_RSYNC_DESTDIR}" + + echo -n ">>> Sending updated repositories metadata to ${_pkg_final_rsync_hostname}... " | tee -a ${_logfile} + if script -aq ${_logfile} ssh -p ${PKG_RSYNC_SSH_PORT} \ + ${PKG_RSYNC_USERNAME}@${_pkg_rsync_hostname} ${_cmd} >/dev/null 2>&1; then + echo "Done!" | tee -a ${_logfile} + else + echo "Failed!" | tee -a ${_logfile} + echo ">>> ERROR: An error occurred sending repo to final hostname" + print_error_pfS + fi + done fi - fi + done } poudriere_possible_archs() { @@ -2129,24 +2133,26 @@ snapshots_scp_files() { pkg_repo_rsync "${CORE_PKG_PATH}" snapshots_update_status ">>> Finished copying core pkg repo" - snapshots_update_status ">>> Copying files to ${RSYNCIP}" + for _rsyncip in ${RSYNCIP}; do + snapshots_update_status ">>> Copying files to ${_rsyncip}" - # Ensure directory(s) are available - ssh ${RSYNCUSER}@${RSYNCIP} "mkdir -p ${RSYNCPATH}/installer" - ssh ${RSYNCUSER}@${RSYNCIP} "mkdir -p ${RSYNCPATH}/nanobsd" - if [ -d $IMAGES_FINAL_DIR/virtualization ]; then - ssh ${RSYNCUSER}@${RSYNCIP} "mkdir -p ${RSYNCPATH}/virtualization" - fi - # ensure permissions are correct for r+w - ssh ${RSYNCUSER}@${RSYNCIP} "chmod -R ug+rw ${RSYNCPATH}/." - rsync $RSYNC_COPY_ARGUMENTS $IMAGES_FINAL_DIR/installer/* \ - ${RSYNCUSER}@${RSYNCIP}:${RSYNCPATH}/installer/ - rsync $RSYNC_COPY_ARGUMENTS $IMAGES_FINAL_DIR/nanobsd/* \ - ${RSYNCUSER}@${RSYNCIP}:${RSYNCPATH}/nanobsd/ - if [ -d $IMAGES_FINAL_DIR/virtualization ]; then - rsync $RSYNC_COPY_ARGUMENTS $IMAGES_FINAL_DIR/virtualization/* \ - ${RSYNCUSER}@${RSYNCIP}:${RSYNCPATH}/virtualization/ - fi + # Ensure directory(s) are available + ssh ${RSYNCUSER}@${_rsyncip} "mkdir -p ${RSYNCPATH}/installer" + ssh ${RSYNCUSER}@${_rsyncip} "mkdir -p ${RSYNCPATH}/nanobsd" + if [ -d $IMAGES_FINAL_DIR/virtualization ]; then + ssh ${RSYNCUSER}@${_rsyncip} "mkdir -p ${RSYNCPATH}/virtualization" + fi + # ensure permissions are correct for r+w + ssh ${RSYNCUSER}@${_rsyncip} "chmod -R ug+rw ${RSYNCPATH}/." + rsync $RSYNC_COPY_ARGUMENTS $IMAGES_FINAL_DIR/installer/* \ + ${RSYNCUSER}@${_rsyncip}:${RSYNCPATH}/installer/ + rsync $RSYNC_COPY_ARGUMENTS $IMAGES_FINAL_DIR/nanobsd/* \ + ${RSYNCUSER}@${_rsyncip}:${RSYNCPATH}/nanobsd/ + if [ -d $IMAGES_FINAL_DIR/virtualization ]; then + rsync $RSYNC_COPY_ARGUMENTS $IMAGES_FINAL_DIR/virtualization/* \ + ${RSYNCUSER}@${_rsyncip}:${RSYNCPATH}/virtualization/ + fi - snapshots_update_status ">>> Finished copying files." + snapshots_update_status ">>> Finished copying files." + done } |