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

bcall pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/trafficserver-ci.git


The following commit(s) were added to refs/heads/main by this push:
     new e4814fd  scripts for ci
e4814fd is described below

commit e4814fd74457b56c2ca8c36e3d185100b7d9a3ce
Author: Bryan Call <[email protected]>
AuthorDate: Thu Feb 25 15:53:16 2021 -0800

    scripts for ci
---
 bin/RTD.sh              |   8 +++
 bin/alpine38.sh         |   3 +
 bin/ats_conf.pl         | 103 +++++++++++++++++++++++++++++++
 bin/backtrace.sh        |  13 ++++
 bin/btrfs-snap          | 118 ++++++++++++++++++++++++++++++++++++
 bin/build_master.sh     |  13 ++++
 bin/centos6.sh          |   3 +
 bin/centos7.sh          |   3 +
 bin/centos8.sh          |   3 +
 bin/clean               | 158 ++++++++++++++++++++++++++++++++++++++++++++++++
 bin/clean-autest.sh     |  17 ++++++
 bin/clean-clang.sh      |  27 +++++++++
 bin/clean-github.sh     |   6 ++
 bin/cleanup.sh          |   6 ++
 bin/coad-6_1_x.pl       |  41 +++++++++++++
 bin/compare-yum.sh      |  21 +++++++
 bin/cov-submit.sh       |  13 ++++
 bin/dbash               |   3 +
 bin/debian7.sh          |   3 +
 bin/debian8.sh          |   3 +
 bin/debian9.sh          |   3 +
 bin/docker              |   5 ++
 bin/docker-all.sh       |  25 ++++++++
 bin/docker-clean.sh     |   4 ++
 bin/fedora30.sh         |   3 +
 bin/fedora31.sh         |   3 +
 bin/fedora32.sh         |   3 +
 bin/fedora33.sh         |   3 +
 bin/freebsd.sh          |  32 ++++++++++
 bin/gd-sync.sh          |  11 ++++
 bin/gh-mirror.sh        |  62 +++++++++++++++++++
 bin/invoker_wrap.sh     |   2 +
 bin/iptables.sh         |  11 ++++
 bin/make-machines.sh    |  28 +++++++++
 bin/master-sync.sh      |   9 +++
 bin/on-all.sh           |   7 +++
 bin/on-docker.sh        |  60 ++++++++++++++++++
 bin/on-gd.sh            |  60 ++++++++++++++++++
 bin/pull-all.sh         |  16 +++++
 bin/purge.sh            |   6 ++
 bin/push-all.sh         |  16 +++++
 bin/quic.sh             |   3 +
 bin/rate_limit.sh       |   3 +
 bin/rax.sh              |  36 +++++++++++
 bin/rsync.sh            |   7 +++
 bin/scp-all.sh          |   9 +++
 bin/site_sync.sh        |   5 ++
 bin/src_watcher.sh      |   7 +++
 bin/start-ats.sh        |  18 ++++++
 bin/start-registry.sh   |   9 +++
 bin/ubuntu1404.sh       |   3 +
 bin/ubuntu1604.sh       |   3 +
 bin/ubuntu1710.sh       |   3 +
 bin/ubuntu1804.sh       |   3 +
 bin/ubuntu1810.sh       |   3 +
 bin/ubuntu1904.sh       |   3 +
 bin/ubuntu1910.sh       |   3 +
 bin/ubuntu2004.sh       |   3 +
 bin/ubuntu2010.sh       |   3 +
 bin/update-rpm-links.sh |  13 ++++
 bin/update.sh           |  16 +++++
 bin/version-all.sh      |  25 ++++++++
 62 files changed, 1112 insertions(+)

diff --git a/bin/RTD.sh b/bin/RTD.sh
new file mode 100755
index 0000000..59ff33f
--- /dev/null
+++ b/bin/RTD.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+cd /home/jenkins/RTD
+
+wget -O MathJax.js 
'http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'
+
+wget -O extensions/MathMenu.js 
'http://cdn.mathjax.org/mathjax/latest/extensions/MathMenu.js?config=TeX-AMS-MML_HTMLorMML'
+wget -O extensions/MathZoom.js 
'http://cdn.mathjax.org/mathjax/latest/extensions/MathZoom.js?config=TeX-AMS-MML_HTMLorMML'
diff --git a/bin/alpine38.sh b/bin/alpine38.sh
new file mode 100755
index 0000000..ba7f466
--- /dev/null
+++ b/bin/alpine38.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
docker.io/alpine:3.8  /bin/sh
diff --git a/bin/ats_conf.pl b/bin/ats_conf.pl
new file mode 100755
index 0000000..38c7309
--- /dev/null
+++ b/bin/ats_conf.pl
@@ -0,0 +1,103 @@
+#!/usr/bin/perl
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+use lib '/opt/ats/share/perl5';
+use Apache::TS::Config::Records;
+use File::Copy;
+
+#chdir("/usr/local");
+chdir("/opt/ats");
+
+my $recedit = new Apache::TS::Config::Records(file => 
"etc/trafficserver/records.config.default");
+
+$recedit->append(line => "");
+$recedit->append(line => "# My local stuff");
+$recedit->append(line => "CONFIG proxy.config.proxy_binary_opts STRING -M 
--disable_freelist");
+#$recedit->append(line => "CONFIG proxy.config.crash_log_helper STRING 
/home/admin/bin/invoker_wrap.sh");
+
+# Port setup
+$recedit->set(conf => "proxy.config.http.server_ports", val => "80 80:ipv6 
443:ssl 443:ipv6:ssl");
+
+# Threads
+$recedit->set(conf => "proxy.config.exec_thread.autoconfig", val => "0");
+$recedit->set(conf => "proxy.config.exec_thread.limit", val => "8");
+$recedit->set(conf => "proxy.config.cache.threads_per_disk", val => "8");
+$recedit->set(conf => "proxy.config.accept_threads", val => "0");
+$recedit->set(conf => "proxy.config.exec_thread.affinity", val => "1");
+
+# TLS
+$recedit->set(conf => "proxy.config.ssl.hsts_max_age", val => "17280000");
+#$recedit->set(conf => "proxy.config.ssl.max_record_size", val => "-1");
+$recedit->set(conf => "proxy.config.ssl.session_cache", val => "2");
+$recedit->set(conf => "proxy.config.ssl.ocsp.enabled", val => "1");
+$recedit->set(conf => "proxy.config.http2.stream_priority_enabled", val => 
"1");
+$recedit->set(conf => "proxy.config.ssl.max_record_size", val => "-1");
+$recedit->set(conf => "proxy.config.ssl.server.max_early_data", val => 
"16384");
+
+# Cache setup
+$recedit->set(conf => "proxy.config.cache.ram_cache.size", val => "1536M");
+$recedit->set(conf => "proxy.config.cache.ram_cache_cutoff", val => "4M");
+$recedit->set(conf => "proxy.config.cache.limits.http.max_alts", val => "4");
+$recedit->set(conf => "proxy.config.cache.dir.sync_frequency", val => "600"); 
# 10 minutes intervals
+$recedit->set(conf => "proxy.config.http.cache.ignore_client_cc_max_age", val 
=> "1");
+$recedit->set(conf => "proxy.config.allocator.hugepages", val => "1");
+
+# HTTP caching related stuff
+$recedit->set(conf => "proxy.config.http.normalize_ae", val => "2");
+$recedit->set(conf => "proxy.config.http.cache.required_headers", val => "1");
+$recedit->set(conf => "proxy.config.http.insert_request_via_str", val => "1");
+$recedit->set(conf => "proxy.config.http.insert_response_via_str", val => "2");
+$recedit->set(conf => "proxy.config.http.negative_caching_enabled", val => 
"1");
+$recedit->set(conf => "proxy.config.http.negative_caching_lifetime", val => 
"60");
+$recedit->set(conf => "proxy.config.http.chunking.size", val => "64k");
+$recedit->set(conf => "proxy.config.url_remap.pristine_host_hdr", val => "1");
+$recedit->set(conf => "proxy.config.http.cache.open_write_fail_action", val => 
"2");
+
+# Timeouts
+$recedit->set(conf => "proxy.config.http.keep_alive_no_activity_timeout_in", 
val => "300");
+$recedit->set(conf => "proxy.config.http.keep_alive_no_activity_timeout_out", 
val => "300");
+$recedit->set(conf => "proxy.config.http.transaction_no_activity_timeout_out", 
val => "180");
+$recedit->set(conf => "proxy.config.http.transaction_no_activity_timeout_in", 
val => "180");
+$recedit->set(conf => "proxy.config.http.transaction_active_timeout_in", val 
=> "180");
+$recedit->set(conf => "proxy.config.http.transaction_active_timeout_out", val 
=> "180");
+$recedit->set(conf => "proxy.config.http.accept_no_activity_timeout", val => 
"30");
+
+# DNS / HostDB
+$recedit->set(conf => "proxy.config.cache.hostdb.sync_frequency",  val => "0");
+
+# Logging
+$recedit->set(conf => "proxy.config.log.logging_enabled", val => "3");
+$recedit->set(conf => "proxy.config.log.max_space_mb_for_logs",  val => 
"4096");
+$recedit->set(conf => "proxy.config.log.max_space_mb_headroom",  val => "64");
+
+# Network
+$recedit->set(conf => "proxy.config.net.connections_throttle", val => "10000");
+#$recedit->set(conf => "proxy.config.net.sock_send_buffer_size_in", val => 
"2M");
+#$recedit->set(conf => "proxy.config.net.sock_recv_buffer_size_out", val => 
"2M");
+$recedit->set(conf => "proxy.config.net.poll_timeout",  val => "30");
+
+# Local additions (typically not found in the records.config.default)
+$recedit->set(conf => "proxy.config.dns.dedicated_thread", val => "0");
+$recedit->set(conf => "proxy.config.http_ui_enabled", val => "3");
+$recedit->set(conf => "proxy.config.http.server_max_connections", val =>"250");
+$recedit->set(conf => "proxy.config.http.allow_multi_range", val =>"0");
+
+#$recedit->set(conf => "proxy.config.mlock_enabled", val => "2");
+
+# Write it all out
+$recedit->write(file => "etc/trafficserver/records.config");
diff --git a/bin/backtrace.sh b/bin/backtrace.sh
new file mode 100755
index 0000000..7cf60c7
--- /dev/null
+++ b/bin/backtrace.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+DM=/var/backtrace/ats
+CF=/usr/local/etc/coroner.cf
+PATH=/opt/backtrace/bin:/usr/bin:/bin:$PATH
+
+TAG=$(/opt/ats/bin/traffic_ctl metric get proxy.node.version.manager.short|cut 
-d ' ' -f 2)
+
+mkdir -p ${DM}/
+ptrace --kv="tag:${TAG}" $1 -O ${DM}/ats
+if test "$?" == "0"; then
+    coroner -c $CF put -u ats ats ${DM}/*.btt
+fi
diff --git a/bin/btrfs-snap b/bin/btrfs-snap
new file mode 100755
index 0000000..1f9ab0e
--- /dev/null
+++ b/bin/btrfs-snap
@@ -0,0 +1,118 @@
+#!/bin/bash
+#
+# btrfs-snap - make periodic snapshots of btrfs filesystem
+#
+# Copyright (C) 2010 Birger Monsen [email protected]
+#
+# This program is distributed under the GNU General Public License
+# http://www.gnu.org/licenses/gpl.txt
+#
+
+LOG_FACILITY=local0
+VERSION="1.0"
+prog=${0##*/}
+
+USAGE="Usage: ${prog} -h for usage help
+       ${prog} -V for version
+       ${prog} <mountpoint> <prefix> <count>"
+SYNOPSIS="${prog} <mountpoint> <prefix> <count>
+<mountpoint> is the mountpoint of the btrfs file system to make a
+             snapshot of
+<prefix>     is the prefix to be used in the name of the snapshot.
+             E.g. hourly, daily, weekly...
+<count>      The number of snapshots with the given prefix to keep.
+
+btrfs-snap / hourly 24
+would make a snapshot in /.snapshot called hourly_<date>_<time>
+where <date> is on the form YYYY-MM-DD and <time> is on the form
+HH:MM:SS. This format makes shure snapshot names sort correctly in
+cronological order even when sorted alphabetically. The 24 newest
+snapshots matching the prefix are kept around. The rest are deleted.
+
+Snapshots are always created in a directory called .snapshot at the
+top level of the given mount point.
+
+Example usage for a system with 2 btrfs file systems mounted as
+/ and /home (remember to make these scripts executable):
+
+/etc/cron.hourly/btrfs-snap
+
+#!/bin/bash
+${0} / hourly 24
+${0} /home hourly 24
+
+/etc/cron.daily/btrfs-snap
+
+#!/bin/bash
+${0} / daily 7
+${0} /home daily 7
+
+/etc/cron.weekly/btrfs-snap
+
+#!/bin/bash
+${0} /home weekly 4
+
+Remember that at the moment snapshots cannot be made read-only, but you
+should not modify the snapshots created by this script, as they will
+get deleted without any notice. To restore a file, just copy it back from
+a snapshot to the main branch."
+
+while getopts "hV" arg; do
+       case "${arg}" in
+               h )
+                       echo "$SYNOPSIS"
+                       exit 0
+                       ;;
+               V )
+                       echo "${prog} Version ${VERSION}"
+                       exit 0
+                       ;;
+               * )
+                       echo "$USAGE"
+                       exit 1
+                       ;;
+       esac
+done
+
+
+if [ $# -ne 3 ] ; then
+       echo "$USAGE"
+       exit 1
+fi
+
+if [ -f /etc/sysconfig/btrfs-snap ] ; then
+       . /etc/sysconfig/btrfs-snap
+fi
+
+mp=$1
+pf=$2
+cnt=$(( $3+1 ))
+
+mount -t btrfs | cut -d " " -f 3 | grep "^${mp}$" > /dev/null
+if [ $? -ne 0 ] ; then
+       echo "Error: ${mp} is not a btrfs mountpoint"
+       exit 1
+fi
+
+if [ ! -d "${mp}/.snapshot" ]; then
+       logger -p ${LOG_FACILITY}.info -t ${prog} "Creating ${mp}/.snapshot"
+       mkdir "${mp}/.snapshot"
+fi
+
+dt=`date +'%Y-%m-%d_%H:%M:%S'`
+out=`/sbin/btrfs subvol snapshot ${mp} ${mp}/.snapshot/${pf}_${dt} 2>&1`
+if [ $? -eq 0 ] ; then
+       logger -p ${LOG_FACILITY}.info -t ${prog} "${out}"
+else
+       logger -p ${LOG_FACILITY}.err -t ${prog} "${out}"
+fi
+
+ls -dr ${mp}/.snapshot/${pf}_* | tail -n +${cnt} | while read snap ; do
+       out=`/sbin/btrfs subvolume delete ${snap} 2>&1`
+if [ $? -eq 0 ] ; then
+       logger -p ${LOG_FACILITY}.info -t ${prog} "${out}"
+else
+       logger -p ${LOG_FACILITY}.err -t ${prog} "${out}"
+fi
+done
+
diff --git a/bin/build_master.sh b/bin/build_master.sh
new file mode 100755
index 0000000..d7578c1
--- /dev/null
+++ b/bin/build_master.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+ulimit -c unlimited
+cd /usr/local/src/trafficserver
+git stash
+git pull --rebase
+git stash pop
+
+gmake  -j4
+[ $? -ne 0 ] && exit
+
+/usr/local/bin/trafficserver stop && mv /var/log/trafficserver/traffic.out 
/var/log/trafficserver/traffic.out.$(date '+%s')
+/usr/local/bin/trafficserver start
diff --git a/bin/centos6.sh b/bin/centos6.sh
new file mode 100755
index 0000000..22f2d46
--- /dev/null
+++ b/bin/centos6.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp/ccache:/var/tmp/ccache -i -t 
ci.trafficserver.apache.org/ats/centos:6  /bin/bash
diff --git a/bin/centos7.sh b/bin/centos7.sh
new file mode 100755
index 0000000..ef072d7
--- /dev/null
+++ b/bin/centos7.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp/ccache:/var/tmp/ccache -i -t 
ci.trafficserver.apache.org/ats/centos:7  /bin/bash
diff --git a/bin/centos8.sh b/bin/centos8.sh
new file mode 100755
index 0000000..b49f8a6
--- /dev/null
+++ b/bin/centos8.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp/ccache:/var/tmp/ccache -i -t 
ci.trafficserver.apache.org/ats/centos:8  /bin/bash
diff --git a/bin/clean b/bin/clean
new file mode 100755
index 0000000..80ec690
--- /dev/null
+++ b/bin/clean
@@ -0,0 +1,158 @@
+#!/usr/bin/perl
+######################################################################
+# @(#)clean.pl 1.5.4 ([email protected]) 05/20/96
+#
+# AUTHOR: Leif Hedstrom <[email protected]>
+#
+# SYNOPSIS:
+#    clean [ -adefmnpruvFT] [-i [yn]] [-s string] [names ...]
+#
+# HISTORY:
+#    21-Jul-1991   Leif    Initial version
+#    23-Mar-1992   Leif    Bugs, makeregexp, framemaker, -b option, ver 1.1
+#     5-Apr-1992   Leif    Added -a and -n option, ver 1.2
+#    26-Sep-1993   Leif    Added -u and cleaned man page, ver 1.3
+#    25-Jan-1994   Leif    Fixed NFS mount points traversal, fixed a bug in
+#                          answer, added -T, cleaned up, ver 1.4
+#     5-Feb-1994   Leif    Added -m for deleted MH files, performance boost,
+#                          ignore symbolic links, ver. 1.5
+#    22-Oct-1994   Leif    Fixed %-bug, ver. 1.5.1
+#    16-Jan-1995   Leif    Works with Perl ver. 5.000 now.
+#    22-Jan-1995   Leif    Added `-c' option, and changed `%' matching.
+#    20-May-1996   Leif    Added `-e' switch, to remove emacs .save files. I
+#                          also moved the other emacs regexp's to $emexp.
+#    14-Mar-2012   Leif    Wow, I've used this tool for 21 years... It finally
+#                          broke, sort of, with the deprecation of getopts.pl.
+#    
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+use Getopt::Std;
+
+
+#
+# Global variables.
+#
+$USAGE   = "clean [ -acdefmnprtvuFT] [-i [yn]] [-s string] [names ...]";
+$stdexp  = '[^%]*\%$|^core$';
+$emexp   = '^\.saves-[0-9]+|.*\~$|^\#.*\#$';
+$texexp  = '.*\.(cp|fn|ky|pg|tp|vr|aux|log|toc|fns)$';
+$sysexp  = '^\.nfs.*';
+$framexp = '.*\.backup$|.*\.lck';
+$mhexp   = '^[,#][0-9]+$';
+%anslist = ('^[yY]([eE][sS])?$', 1, '^[Nn]([oO])?$', 0);
+
+
+#
+# Subroutines.
+#
+sub answer {                   # answer(STR prompt, STR default)
+   local($regexp);              # STR: Holds a reg. exp.
+   local($retval);              # INT: Return value of reg. exp.
+   local($value) = -1;         # INT: Calculated return value
+
+   print $_[0];
+   chop($_ = <>);
+   $_ = $_[1] if /^$/o;                # Default choice
+   while(($regexp, $retval) = each %anslist){
+      $value = $retval if $_ =~ /$regexp/ ;
+   }
+   return $value;
+}
+
+
+sub makeregexp {               # makeregexp(STR regexp)
+   $_ = "^core$|" if $opt_c;
+   $_ = "$stdexp|" if $opt_d || $opt_a;
+   $_ .= "$texexp|" if $opt_t || $opt_a;
+   $_ .= "$framexp|" if $opt_f || $opt_a;
+   $_ .= "$sysexp|" if $opt_u || $opt_a;
+   $_ .= "$mhexp|" if $opt_m || $opt_a;
+   $_ .= "$emexp|" if $opt_e || $opt_a;
+   $_ .= $_[0] if $_[0];
+   chop if !$_[0];
+
+   $_ = $stdexp if $_ eq "";
+   s/ //g;                     # Don't allow space in filenames
+   $stdexp = $_;
+   print "Searchstring is:  $stdexp\n" if $opt_v;
+}
+
+
+sub handledir {                        # handledir(STR directory)
+   local(@files);              # ARR[STR]: Files in directory
+
+   if (opendir(thedir, $_[0]) == 0) {
+      print STDERR "WARNING:can't access directory $_[0]\n";
+      return 0;
+   }
+   print "Now processing directory \'$_[0]\'\n" if $opt_v;
+   @files = readdir(thedir);   # No close, will be done on next open!
+   grep(substr($_, 0, 0) = "$_[0]/", @files);
+   foreach (@files) {
+      next if /\/\.$/ || /\/\.\.$/;
+      if (-d) {
+        next if (-l && !$opt_F);
+        next if (!$opt_T && ($org_dev != (stat(_))[0]));
+        &handledir($_) if $opt_r;
+      } else {
+        &handlefile($_);
+      }
+   }
+}
+
+
+sub handlefile {               # handlefile(STR file)
+   $file = substr($_[0], rindex($_[0], "/") + 1);
+   if ($file =~ /$stdexp/o) {
+      print "$_[0]\n" if (!$opt_i && ($opt_p || $opt_v || $opt_n));
+      return if $opt_n;
+      if ($opt_i) {            # Interactive mode
+        $key = -1;
+        $key = &answer("Delete $_[0] [$opt_i]? ", "$opt_i") while $key < 0;
+        return if ($key != 1); # Don't remove anything!
+      }
+      unlink $_[0] || print STDERR "Could not delete $_[0]\n";
+   }
+}
+
+
+#
+# Here starts the main program.
+#
+unshift (@ARGV, split(/ /, $ENV{"CLEAN_OPTIONS"})); # Env. options
+
+&getopts('acdefmnprtuvFTi:s:') || die "Usage: $USAGE\n";
+$opt_i = 'n' if (defined ($opt_i) && $opt_i eq "");
+
+&makeregexp($opt_s);
+
+if ($#ARGV  < $[) {
+   ($org_dev) = stat(".");
+   &handledir(".");
+} else {
+    foreach (@ARGV) {
+      if (-f) {
+        ($org_dev) = stat(".");
+        &handlefile($_);
+      } elsif (-d) { # Recursive
+        ($org_dev) = stat(_);
+        &handledir($_);
+      } else {
+        print STDERR "$_: file not found!\n";
+      }
+   }
+}
diff --git a/bin/clean-autest.sh b/bin/clean-autest.sh
new file mode 100755
index 0000000..27481d8
--- /dev/null
+++ b/bin/clean-autest.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+cd /tmp
+cd /CA/autest || exit
+
+# Nuke all core files
+find . -name core.\* -exec rm {} \;
+
+touch .
+find . -maxdepth 1 -mtime +14 -exec rm -rf {} \;
+for autest in autest-github autest-master autest-9.0.x; do
+    cd /tmp
+    if [ -d /var/jenkins/workspace/$autest ]; then 
+       cd /var/jenkins/workspace/$autest || exit
+       find . -maxdepth 1 -mtime +16 -exec rm -rf {} \;
+    fi
+done
diff --git a/bin/clean-clang.sh b/bin/clean-clang.sh
new file mode 100755
index 0000000..f8bb929
--- /dev/null
+++ b/bin/clean-clang.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+cd /CA/clang-analyzer || exit
+
+# Cleanup some empty dirs
+rmdir github/*/* 2> /dev/null
+
+for dir in *; do
+    if [ -d $dir ]; then
+       cd ${dir} || exit # Shouldn't exit here, but safe ...
+       for old in $(/usr/bin/ls -1t | egrep '^[0-9\-]+$' | tail -n +21); do
+           rm -rf $old
+       done
+
+       # Setup the symlink to the latest report
+       latest=$(/usr/bin/ls -1t | egrep '^[0-9\-]+$' | head -1)
+       if [ "$latest" != "" -a ! "$(readlink latest)" -ef "$latest" ]; then
+           rm -f latest
+           ln -s $latest latest
+           [ ! -f latest/index.html ] && touch latest/No\ Errors\ Reported
+
+           # Purge the cached URL
+           curl -o /dev/null -s -X PURGE 
https://ci.trafficserver.apache.org/files/clang-analyzer/${dir}/latest/
+       fi
+    cd ..
+    fi
+done
diff --git a/bin/clean-github.sh b/bin/clean-github.sh
new file mode 100755
index 0000000..3325944
--- /dev/null
+++ b/bin/clean-github.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+ssh github1-int rm -rf /var/jenkins/workspace/Github*/src
+ssh github2-int rm -rf /var/jenkins/workspace/Github*/src
+ssh github3-int rm -rf /var/jenkins/workspace/Github*/src
+ssh github4-int rm -rf /var/jenkins/workspace/Github*/src
diff --git a/bin/cleanup.sh b/bin/cleanup.sh
new file mode 100755
index 0000000..cad4a29
--- /dev/null
+++ b/bin/cleanup.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+cd /var/jenkins/workspace || exit 1
+
+rm -rf in_tree-*/src
+rm -rf out_of_tree-*/src
diff --git a/bin/coad-6_1_x.pl b/bin/coad-6_1_x.pl
new file mode 100755
index 0000000..24696e7
--- /dev/null
+++ b/bin/coad-6_1_x.pl
@@ -0,0 +1,41 @@
+#!/bin/env perl
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+use lib '/opt/ats-6.1.x/share/perl5';
+
+use Apache::TS::Config::Records;
+use File::Copy;
+
+chdir("/opt/ats-6.1.x");
+
+my $recedit = new Apache::TS::Config::Records(file => 
"etc/trafficserver/records.config");
+
+$recedit->set(conf => "proxy.config.exec_thread.autoconfig",  val => "0");
+$recedit->set(conf => "proxy.config.exec_thread.limit",  val => "4");
+$recedit->set(conf => "proxy.config.cache.ram_cache.size",  val => "256M");
+$recedit->set(conf => "proxy.config.cache.ram_cache_cutoff",  val => "32M");
+$recedit->set(conf => "proxy.config.url_remap.remap_required",  val => "0");
+#$recedit->set(conf => "proxy.config.url_remap.pristine_host_hdr",  val => 
"0");
+$recedit->set(conf => "proxy.config.http.insert_response_via_str",  val => 
"1");
+$recedit->set(conf => "proxy.config.http.insert_request_via_str",  val => "1");
+$recedit->set(conf => "proxy.config.http.cache.ignore_client_cc_max_age",  val 
=> "0");
+$recedit->set(conf => "proxy.config.http.normalize_ae_gzip",  val => "0");
+$recedit->set(conf => "proxy.config.dns.search_default_domains",  val => "0");
+$recedit->set(conf => "proxy.config.http.response_server_enabled",  val => 
"2");
+
+$recedit->write(file => "etc/trafficserver/records.config");
diff --git a/bin/compare-yum.sh b/bin/compare-yum.sh
new file mode 100755
index 0000000..b4598e3
--- /dev/null
+++ b/bin/compare-yum.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+HOSTS=$(/usr/bin/mktemp --suffix .on-gd)
+PSSH="/usr/bin/pssh -i -h $HOSTS"
+trap "rm -f $HOSTS" 0 1 2 5 15
+
+/usr/sbin/fping -q -a -f /admin/etc/gd-hosts.txt 2>&1 | cut -d:  -f 1 > $HOSTS
+$PSSH  "rpm -qa | sort > /tmp/yum.txt"
+
+for h in $(cat $HOSTS); do
+    scp $h:/tmp/yum.txt /tmp/yum-${h}.txt
+done
+
+for h in $(cat $HOSTS); do
+    echo "Diffing $h"
+    for h2 in $(cat $HOSTS); do
+       diff /tmp/yum-${h}.txt /tmp/yum-${h2}.txt | grep -v gpg
+    done
+    echo "Done"; echo; echo
+done
+    
diff --git a/bin/cov-submit.sh b/bin/cov-submit.sh
new file mode 100755
index 0000000..4ab5a29
--- /dev/null
+++ b/bin/cov-submit.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+#
+# NOTE NOTE: Do not commit this script into any source repository!!!
+#
+
+curl --form project=Apache+Traffic+Server \
+  --form token=rXAv468n \
+  --form [email protected] \
+  --form file=@${1} \
+  --form version=${2} \
+  --form description="ATS master branch" \
+  https://scan.coverity.com/builds?project=Apache+Traffic+Server
diff --git a/bin/dbash b/bin/dbash
new file mode 100755
index 0000000..f9a2bee
--- /dev/null
+++ b/bin/dbash
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run  -v /home:/home -i -t $* /bin/bash
diff --git a/bin/debian7.sh b/bin/debian7.sh
new file mode 100755
index 0000000..38b2940
--- /dev/null
+++ b/bin/debian7.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA   -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/debian:7  /bin/bash
diff --git a/bin/debian8.sh b/bin/debian8.sh
new file mode 100755
index 0000000..b12cc7b
--- /dev/null
+++ b/bin/debian8.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA   -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/debian:8  /bin/bash
diff --git a/bin/debian9.sh b/bin/debian9.sh
new file mode 100755
index 0000000..2f972e9
--- /dev/null
+++ b/bin/debian9.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA   -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/debian:9  /bin/bash
diff --git a/bin/docker b/bin/docker
new file mode 100755
index 0000000..da83e89
--- /dev/null
+++ b/bin/docker
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+export HOSTALIASES=/etc/hosts.docker
+
+/usr/bin/docker $@
diff --git a/bin/docker-all.sh b/bin/docker-all.sh
new file mode 100755
index 0000000..56a46e1
--- /dev/null
+++ b/bin/docker-all.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+# Fedora
+for x in 27 28 29 30; do
+    echo -n "Fedora${x}: "
+    docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/fedora:${x} "$@"
+done
+
+# CentOs
+for x in 6 7; do
+    echo -n "CentOS${x}: "
+    docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/centos:${x} "$@"
+done
+
+# Debian
+for x in 7 8 9; do
+    echo -n "Debian${x}: "
+    docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/debian:${x} "$@"
+done
+
+# Ubuntu
+for x in 14.04 16.04 17.04 17.10 18.04 18.10 19.04; do
+    echo -n "Ubuntu${x}: "
+    docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/ubuntu:${x} "$@"
+done
diff --git a/bin/docker-clean.sh b/bin/docker-clean.sh
new file mode 100755
index 0000000..250484d
--- /dev/null
+++ b/bin/docker-clean.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+docker rm $(docker ps -q -f status=exited)
+docker rmi $(docker images | awk '/<none>/ {print $3}')
diff --git a/bin/fedora30.sh b/bin/fedora30.sh
new file mode 100755
index 0000000..04d2235
--- /dev/null
+++ b/bin/fedora30.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/fedora:30  /bin/bash
diff --git a/bin/fedora31.sh b/bin/fedora31.sh
new file mode 100755
index 0000000..49666fc
--- /dev/null
+++ b/bin/fedora31.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/fedora:31  /bin/bash
diff --git a/bin/fedora32.sh b/bin/fedora32.sh
new file mode 100755
index 0000000..1930318
--- /dev/null
+++ b/bin/fedora32.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/fedora:32  /bin/bash
diff --git a/bin/fedora33.sh b/bin/fedora33.sh
new file mode 100755
index 0000000..aa44262
--- /dev/null
+++ b/bin/fedora33.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/fedora:33  /bin/bash
diff --git a/bin/freebsd.sh b/bin/freebsd.sh
new file mode 100755
index 0000000..783b27e
--- /dev/null
+++ b/bin/freebsd.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+pkg update
+pkg upgrade -y
+pkg install -y emacs-nox11 py27-fail2ban gcc gcc49 openjdk bzip2 gmake ccache 
openssl tcl86 expat pcre p5-ExtUtils-MakeMaker hwloc autoconf automake libtool 
bison flex git bash
+
+ln -s /usr/local/bin/git /usr/bin
+ln -s /usr/local/bin/bash /bin
+
+echo "mount -t fdescfs fdesc /dev/fd" >> /etc/fstab
+echo "mount -t procfs proc /proc" >> /etc/fstab
+
+
+pw groupadd jenkins -g 665
+pw useradd jenkins -g jenkins -u 665,665
+
+mkdir /var/jenkins && chown jenkins /var/jenkins && chgrp jenkins /var/jenkins
+mkdir -p /home/jenkins/.ssh
+chmod -R 700 /home/jenkins
+
+echo 'from="23.253.81.82,192.168.3.*",no-X11-forwarding ssh-rsa 
AAAAB3NzaC1yc2EAAAADAQABAAACAQCnOsr+q3xlFQZ3Z2cH8fpZynAWCmOZkbjBXH19c6C3KzA9cUPe8v7YnBq3tmfKtnMJYv42ZYz4n0ddHfbU91qqEwr6It7xN0kQeqtW0oGzLPWHun90YabKGeLVONFzlWzQG9Wv2R2se3W1qX8PKpAEyaocyujP94dc2tFQUkQ9tIj3fjVBj8SzrggnkC76MXojMHcPSZEYB4jZWxVlgWkX2vN2Te4qVJy6MlCEDOkYQW62TkfowZclNOu+OJvD7/kxOPLggWM9id9SWYvyMfJF8qd+xY1o9XY/kcnuGCCxnkGrNaOVeHsdKq87rhe2nGltZOnfucYN+S3pThYVUAJsB7bmmCwY/h4N2OXjUv/Rhg+NUERvU2Lc3I0z99aMvbBCK9EgKKIWxUAl
 [...]
+
+chmod 600 /home/jenkins/.ssh/authorized_keys
+chown -R jenkins /home/jenkins
+chgrp -R jenkins /home/jenkins
+
+sudo -u jenkins ccache -M 10G -F 0
+
+echo 'ntpd_enable="YES"' >> /etc/rc.conf
+echo 'firewall_enable="YES"' >> /etc/rc.conf
+echo 'firewall_type="client"'>> /etc/rc.conf
+echo 'fail2ban_enable="YES"' >> /etc/rc.conf
diff --git a/bin/gd-sync.sh b/bin/gd-sync.sh
new file mode 100755
index 0000000..1ea02b4
--- /dev/null
+++ b/bin/gd-sync.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+GD_HOSTS="gd-1 gd-2 gd-3 gd-4 gd-5 gd-6 gd-7 gd-8 gd-9"
+HOME_DIRS="/home/jenkins /home/trafficserver /home/admin"
+CA_DIRS="/CA/autest /CA/clang-analyzer /CA/RAT"
+
+if [ "fetch" == "$1" ]; then
+    parallel  'rsync --exclude="core.*" -av {2}:{1} /CA' ::: $CA_DIRS ::: 
$GD_HOSTS
+else
+    parallel  'rsync --exclude=.ccache --delete -av {1} {2}:/home' ::: 
$HOME_DIRS ::: $GD_HOSTS
+fi
diff --git a/bin/gh-mirror.sh b/bin/gh-mirror.sh
new file mode 100755
index 0000000..caeadd0
--- /dev/null
+++ b/bin/gh-mirror.sh
@@ -0,0 +1,62 @@
+#!/bin/sh
+#
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
+GIT=${GIT:-/usr/bin/git}
+GREP=${GREP:-/usr/bin/grep}
+
+# This should probably be configurable ...
+cd /home/mirror/trafficserver.git || exit
+
+# Check that we got a token for Jenkins access
+if [ "" == "$1" ]; then
+    echo "Must provide the auth token for Jenkins"
+    exit 1
+fi
+
+# Prep the URLs
+URL="https://ci.trafficserver.apache.org/view/master/job";
+TOKEN="build?token=$1"
+
+# Save away previous ref-specs
+REF_4_2=$(${GIT} show-ref -s  refs/heads/4.2.x)
+REF_5_3=$(${GIT} show-ref -s  refs/heads/5.3.x)
+REF_6_2=$(${GIT} show-ref -s  refs/heads/6.2.x)
+REF_master=$(${GIT} show-ref -s  refs/heads/master)
+
+${GIT} remote update > /dev/null 2>&1
+${GIT} update-server-info
+
+# Now find the changes
+DIFF_4_2=$(${GIT} log --name-only --pretty=format: 
${REF_4_2}..refs/heads/4.2.x| ${GREP} -v '^$')
+DIFF_5_3=$(${GIT} log --name-only --pretty=format: 
${REF_5_3}..refs/heads/5.3.x | ${GREP} -v '^$')
+DIFF_6_2=$(${GIT} log --name-only --pretty=format: 
${REF_6_2}..refs/heads/6.2.x | ${GREP} -v '^$')
+DIFF_master=$(${GIT} log --name-only --pretty=format: 
${REF_master}..refs/heads/master | ${GREP} -v '^$')
+
+# Check master, we have to diff twice, because some commits could trigger both
+echo -n "$DIFF_master" | ${GREP} -F -e doc/ > /dev/null
+if [ 0 == $? ]; then
+    echo "Triggerd Docs build for master"
+    curl -o /dev/null -s ${URL}/docs-master/${TOKEN}
+fi
+
+echo -n "$DIFF_master" | ${GREP} -F -v -e doc/ > /dev/null
+if [ 0 == $? ]; then
+    echo "Triggered main build for master"
+    curl -o /dev/null -s ${URL}/in_tree-master/${TOKEN}
+    curl -o /dev/null -s ${URL}/out_of_tree-master/${TOKEN}
+fi
diff --git a/bin/invoker_wrap.sh b/bin/invoker_wrap.sh
new file mode 100755
index 0000000..58cd55f
--- /dev/null
+++ b/bin/invoker_wrap.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /opt/backtrace/bin/invoker $@ -t "/admin/bin/backtrace.sh %p"
diff --git a/bin/iptables.sh b/bin/iptables.sh
new file mode 100755
index 0000000..a4972f9
--- /dev/null
+++ b/bin/iptables.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Allow Apple buildbot
+iptables -I INPUT -i eth0 -s 17.244.0.0/14 -p tcp -m tcp --dport 40649 -j 
ACCEPT
+
+# Restrict SSH
+iptables -I INPUT -p tcp -m tcp -s 24.9.49.85/32 --dport 22 -j ACCEPT
+iptables -I INPUT -p tcp -m tcp -s 24.56.188.103/32 --dport 22 -j ACCEPT
+iptables -I INPUT -p tcp -m tcp --dport 22 -m state --state new -m limit 
--limit 20/hour --limit-burst 6 -j ACCEPT
+iptables -I INPUT -m tcp -p tcp --dport 22 -j LOG --log-prefix "IPTABLES 
SSH-LIMIT: "
+iptables -I INPUT -m tcp -p tcp --dport 22 -j DROP
diff --git a/bin/make-machines.sh b/bin/make-machines.sh
new file mode 100755
index 0000000..0fb43e4
--- /dev/null
+++ b/bin/make-machines.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+cd /home/jenkins/BuildMachines
+
+# FreeBSD
+for h in FreeBSD11; do 
+    curl -s -X PURGE 
https://ci.trafficserver.apache.org/files/BuildMachines/${h}
+    ssh ${h}-int freebsd-version > ${h}
+    echo >> ${h}
+    ssh ${h}-int pkg info | sort >> ${h}
+done
+exit
+
+# CentOS / Fedora based systems
+for h in CentOS6 CentOS7 Fedora24 Fedora25 Fedora26 Fedora27; do
+    curl -s -X PURGE 
https://ci.trafficserver.apache.org/files/BuildMachines/${h}
+    ssh ${h}-int cat /etc/redhat-release > ${h}
+    echo >> ${h}
+    ssh ${h}-int rpm -qa | sort >> ${h}
+done
+
+# Debian/Ubuntu systems
+for h in Ubuntu1204 Ubuntu1404 Ubuntu1604 Ubuntu1704 Debian7 Debian8; do
+    curl -s -X PURGE 
https://ci.trafficserver.apache.org/files/BuildMachines/${h}
+    ssh ${h}-int cat /etc/debian_version > ${h}
+    echo >> ${h}
+    ssh ${h}-int dpkg -l  >> ${h}
+done
diff --git a/bin/master-sync.sh b/bin/master-sync.sh
new file mode 100755
index 0000000..e33e1e2
--- /dev/null
+++ b/bin/master-sync.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+rsync --delete -av /var/jenkins/jobs jenkins:/var/jenkins
+rsync --delete --exclude '.snapshot' -av /var/lib/jenkins jenkins:/var/lib
+rsync --delete --exclude '.snapshot' -av /home jenkins:/
+rsync --delete -av /admin jenkins:/
+
+echo "Only run this once"
+echo "rsync -av /etc/httpd jenkins:/etc"
diff --git a/bin/on-all.sh b/bin/on-all.sh
new file mode 100755
index 0000000..1f9226e
--- /dev/null
+++ b/bin/on-all.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+for host in $(awk '/\-int/ {print $2}' /etc/hosts); do
+    echo "${host}:"
+    ssh $host "$*"
+    echo
+done
diff --git a/bin/on-docker.sh b/bin/on-docker.sh
new file mode 100755
index 0000000..13261b0
--- /dev/null
+++ b/bin/on-docker.sh
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+#!/bin/bash
+
+HOSTS=$(/usr/bin/mktemp --suffix .on-docker)
+PSSH="/usr/bin/pssh -i -h $HOSTS"
+trap "rm -f $HOSTS" 0 1 2 5 15
+
+/usr/sbin/fping -q -a -f /admin/etc/docker-hosts.txt 2>&1 | cut -d:  -f 1 > 
$HOSTS
+
+NUM_ARGS=$(($#-1))
+
+case "$1" in
+    #
+    # DNF (yum) commands
+    #
+    install)
+    ;&
+    debuginfo-install)
+    ;&
+    remove)
+    ;&
+    update)
+    ;&
+    clean)
+    ;&
+    upgrade)
+    $PSSH "yum -y $*"
+    ;;
+    #
+    # systemd (systemctl) comamands
+    #
+    enable)
+    ;&
+    disable)
+    ;&
+    status)
+    ;&
+    stop)
+    ;&
+    start)
+    ;&
+    restart)
+    $PSSH "systemctl $*"
+    ;;
+    #
+    # scp
+    #
+    scp)
+    dest=${@: -1}
+    files=${@:2:$NUM_ARGS-1}
+    pscp.pssh -h ${HOSTS} "$files" "${dest}"
+    ;;
+    #
+    # Everything else
+    #
+    *)
+    $PSSH -X "-x" "$*"
+    ;;
+esac
diff --git a/bin/on-gd.sh b/bin/on-gd.sh
new file mode 100755
index 0000000..c5d4350
--- /dev/null
+++ b/bin/on-gd.sh
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+#!/bin/bash
+
+HOSTS=$(/usr/bin/mktemp --suffix .on-gd)
+PSSH="/usr/bin/pssh -i -h $HOSTS"
+trap "rm -f $HOSTS" 0 1 2 5 15
+
+/usr/sbin/fping -q -a -f /admin/etc/gd-hosts.txt 2>&1 | cut -d:  -f 1 > $HOSTS
+
+NUM_ARGS=$(($#-1))
+
+case "$1" in
+    #
+    # DNF (yum) commands
+    #
+    install)
+    ;&
+    debuginfo-install)
+    ;&
+    remove)
+    ;&
+    update)
+    ;&
+    clean)
+    ;&
+    upgrade)
+    $PSSH "yum -y $*"
+    ;;
+    #
+    # systemd (systemctl) comamands
+    #
+    enable)
+    ;&
+    disable)
+    ;&
+    status)
+    ;&
+    stop)
+    ;&
+    start)
+    ;&
+    restart)
+    $PSSH "systemctl $*"
+    ;;
+    #
+    # scp
+    #
+    scp)
+    dest=${@: -1}
+    files=${@:2:$NUM_ARGS-1}
+    pscp.pssh -h ${HOSTS} "$files" "${dest}"
+    ;;
+    #
+    # Everything else
+    #
+    *)
+    $PSSH -X "-x" "$*"
+    ;;
+esac
diff --git a/bin/pull-all.sh b/bin/pull-all.sh
new file mode 100755
index 0000000..9188cd4
--- /dev/null
+++ b/bin/pull-all.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+docker pull ci.trafficserver.apache.org/ats/fedora:33
+docker pull ci.trafficserver.apache.org/ats/fedora:32
+docker pull ci.trafficserver.apache.org/ats/fedora:31
+docker pull ci.trafficserver.apache.org/ats/ubuntu:20.10
+docker pull ci.trafficserver.apache.org/ats/ubuntu:20.04
+docker pull ci.trafficserver.apache.org/ats/ubuntu:19.04
+docker pull ci.trafficserver.apache.org/ats/ubuntu:18.04
+docker pull ci.trafficserver.apache.org/ats/ubuntu:16.04
+docker pull ci.trafficserver.apache.org/ats/ubuntu:14.04
+docker pull ci.trafficserver.apache.org/ats/centos:8
+docker pull ci.trafficserver.apache.org/ats/centos:7
+docker pull ci.trafficserver.apache.org/ats/centos:6
+docker pull ci.trafficserver.apache.org/ats/debian:9
+docker pull ci.trafficserver.apache.org/ats/debian:8
diff --git a/bin/purge.sh b/bin/purge.sh
new file mode 100755
index 0000000..25f2399
--- /dev/null
+++ b/bin/purge.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+for u in $*; do
+    echo "Purging $u..."
+    curl --resolve ci.trafficserver.apache.org:443:192.168.3.14 -X PURGE "$u"
+done
diff --git a/bin/push-all.sh b/bin/push-all.sh
new file mode 100755
index 0000000..c6bdec7
--- /dev/null
+++ b/bin/push-all.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+docker push ci.trafficserver.apache.org/ats/fedora:33
+docker push ci.trafficserver.apache.org/ats/fedora:32
+docker push ci.trafficserver.apache.org/ats/fedora:31
+docker push ci.trafficserver.apache.org/ats/ubuntu:20.10
+docker push ci.trafficserver.apache.org/ats/ubuntu:20.04
+docker push ci.trafficserver.apache.org/ats/ubuntu:19.04
+docker push ci.trafficserver.apache.org/ats/ubuntu:18.04
+docker push ci.trafficserver.apache.org/ats/ubuntu:16.04
+docker push ci.trafficserver.apache.org/ats/ubuntu:14.04
+docker push ci.trafficserver.apache.org/ats/centos:8
+docker push ci.trafficserver.apache.org/ats/centos:7
+docker push ci.trafficserver.apache.org/ats/centos:6
+docker push ci.trafficserver.apache.org/ats/debian:9
+docker push ci.trafficserver.apache.org/ats/debian:8
diff --git a/bin/quic.sh b/bin/quic.sh
new file mode 100755
index 0000000..f9f6411
--- /dev/null
+++ b/bin/quic.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/quic  /bin/bash
diff --git a/bin/rate_limit.sh b/bin/rate_limit.sh
new file mode 100755
index 0000000..fe33225
--- /dev/null
+++ b/bin/rate_limit.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+curl -s -u psudaemon:7ba4b68c2dcbf525dd0db1f3cda09dd50a51ca22  
https://api.github.com/rate_limit
diff --git a/bin/rax.sh b/bin/rax.sh
new file mode 100755
index 0000000..d5d301c
--- /dev/null
+++ b/bin/rax.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# Packages
+yum -y install emacs-nox fail2ban nfs-utils java bzip2 btrfs-progs deltarpm 
yum-cron yum-plugin-fastestmirror ccache make pkgconfig gcc-c++ openssl-devel 
tcl-devel expat-devel pcre-devel perl-ExtUtils-MakeMaker libcap libcap-devel 
hwloc hwloc-devel autoconf automake libtool bison flex git ntp clang rsyslog
+
+groupadd  -g 665 jenkins
+useradd -g jenkins -u 989 -s /bin/bash -M -d /home/jenkins -c "Jenkins 
Continuous Build server" jenkins
+mkdir /var/jenkins
+chown jenkins.jenkins /var/jenkins
+
+echo "ZONE=public" >> /etc/sysconfig/network-scripts/ifcfg-eth0
+echo "ZONE=public" >> /etc/sysconfig/network-scripts/ifcfg-eth1
+echo "ZONE=internal" >> /etc/sysconfig/network-scripts/ifcfg-eth2
+
+firewall-cmd --permanent --zone=internal --add-service=rpc-bind
+firewall-cmd --permanent --zone=internal --add-service=nfs
+firewall-cmd --permanent --zone=internal --remove-service=samba-client
+firewall-cmd --complete-reload
+
+echo "[sshd]" > /etc/fail2ban/jail.local
+echo "enabled = true" >> /etc/fail2ban/jail.local
+
+mount | grep /home > /dev/null  || echo "192.168.3.1:/home /home nfs  
rw,noatime,intr   0 0" >> /etc/fstab
+mount /home
+
+# ccache
+mkdir -p /var/tmp/ccache && chown jenkins.jenkins /var/tmp/ccache
+sudo -u jenkins ccache -M 8G -F 0
+
+
+# For systemctl
+#systemctl enable ntpd
+#systemctl restart ntpd
+
+systemctl enable fail2ban
+systemctl restart fail2ban
diff --git a/bin/rsync.sh b/bin/rsync.sh
new file mode 100755
index 0000000..3a7f51b
--- /dev/null
+++ b/bin/rsync.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+cd /home
+
+# This is for QA2 and QA3
+rsync -av jenkins admin 104.130.229.236:/home
+rsync -av jenkins admin 119.9.104.189:/home
diff --git a/bin/scp-all.sh b/bin/scp-all.sh
new file mode 100755
index 0000000..e461cb5
--- /dev/null
+++ b/bin/scp-all.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+SRC=$1
+DEST=$2
+
+for host in $(awk '/\-int/ {print $2}' /etc/hosts); do
+    echo "${host}:"
+    scp $SRC ${host}:$DEST
+done
diff --git a/bin/site_sync.sh b/bin/site_sync.sh
new file mode 100755
index 0000000..c763c2d
--- /dev/null
+++ b/bin/site_sync.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+cd /opt
+rsync -av openssl qa1-int:/opt
+rsync -av openssl qa2-int:/opt
diff --git a/bin/src_watcher.sh b/bin/src_watcher.sh
new file mode 100755
index 0000000..dd8c091
--- /dev/null
+++ b/bin/src_watcher.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+while [ 1 ]; do
+    inotifywait /CA/src > /dev/null 2>&1
+    sleep 1
+    rsync -av --delete /CA/src docker-gd-1:/CA > /dev/null 2>&1
+done
diff --git a/bin/start-ats.sh b/bin/start-ats.sh
new file mode 100755
index 0000000..36df54a
--- /dev/null
+++ b/bin/start-ats.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+: ${DIALOG=dialog}
+DIAGFILE=/tmp/transient-ats.txt
+
+# Don't use this, it gets removed in the pass "exec" from ATS startup
+#trap "rm -f $DIAGFILE" 0 1 2 5 15
+
+# Make sure it's empty
+rm -f $DIAGFILE
+cp /dev/null $DIAGFILE
+chmod og= $DIAGFILE
+chown nobody.nobody $DIAGFILE
+
+$DIALOG --title "Apache Traffic Server" --clear --passwordbox "Enter password 
(transient)" 10 50  2> $DIAGFILE
+
+/usr/local/bin/trafficserver stop
+/usr/local/bin/trafficserver start
diff --git a/bin/start-registry.sh b/bin/start-registry.sh
new file mode 100755
index 0000000..b8047a8
--- /dev/null
+++ b/bin/start-registry.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+fail()
+{
+    echo $1
+    exit 1
+}
+[ "$EUID" -eq 0 ] || fail "This must be run as root."
+docker-compose -f /admin/etc/docker-compose.yml up -d
diff --git a/bin/ubuntu1404.sh b/bin/ubuntu1404.sh
new file mode 100755
index 0000000..75ea60f
--- /dev/null
+++ b/bin/ubuntu1404.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/ubuntu:14.04  /bin/bash
diff --git a/bin/ubuntu1604.sh b/bin/ubuntu1604.sh
new file mode 100755
index 0000000..f240ab4
--- /dev/null
+++ b/bin/ubuntu1604.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/ubuntu:16.04  /bin/bash
diff --git a/bin/ubuntu1710.sh b/bin/ubuntu1710.sh
new file mode 100755
index 0000000..749865e
--- /dev/null
+++ b/bin/ubuntu1710.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/ubuntu:17.10  /bin/bash
diff --git a/bin/ubuntu1804.sh b/bin/ubuntu1804.sh
new file mode 100755
index 0000000..ee47d50
--- /dev/null
+++ b/bin/ubuntu1804.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/ubuntu:18.04  /bin/bash
diff --git a/bin/ubuntu1810.sh b/bin/ubuntu1810.sh
new file mode 100755
index 0000000..84e8cd5
--- /dev/null
+++ b/bin/ubuntu1810.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/ubuntu:18.10  /bin/bash
diff --git a/bin/ubuntu1904.sh b/bin/ubuntu1904.sh
new file mode 100755
index 0000000..3e68260
--- /dev/null
+++ b/bin/ubuntu1904.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/ubuntu:19.04  /bin/bash
diff --git a/bin/ubuntu1910.sh b/bin/ubuntu1910.sh
new file mode 100755
index 0000000..fe24dde
--- /dev/null
+++ b/bin/ubuntu1910.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/ubuntu:19.10  /bin/bash
diff --git a/bin/ubuntu2004.sh b/bin/ubuntu2004.sh
new file mode 100755
index 0000000..7f410d0
--- /dev/null
+++ b/bin/ubuntu2004.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/ubuntu:20.04  /bin/bash
diff --git a/bin/ubuntu2010.sh b/bin/ubuntu2010.sh
new file mode 100755
index 0000000..1492cf2
--- /dev/null
+++ b/bin/ubuntu2010.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/ubuntu:20.10  /bin/bash
diff --git a/bin/update-rpm-links.sh b/bin/update-rpm-links.sh
new file mode 100755
index 0000000..47bced3
--- /dev/null
+++ b/bin/update-rpm-links.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+cd /home/jenkins/RPMS || exit
+
+rm -f CentOS6/*
+rm -f CentOS7/*
+rm -f F26/*
+rm -f F27/*
+
+cd CentOS6 && ln -s ../v7.1.2/*.el6.* . && cd ..
+cd CentOS7 && ln -s ../v7.1.2/*.el7.* . && cd ..
+cd F26 && ln -s ../v7.1.2/*.fc26.* . && cd ..
+cd F27 && ln -s ../v7.1.2/*.fc27.* . && cd ..
diff --git a/bin/update.sh b/bin/update.sh
new file mode 100755
index 0000000..8b28bca
--- /dev/null
+++ b/bin/update.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+# 192.168.3.12freebsd10-int
+
+YUM="fedora22-int fedora-latest-int centos5-int centos6-int devel-int znc qa1 
qa2"
+APT="debian7-int debian8-int ubuntu1204-int ubuntu1404-int ubuntu1505-int 
ubuntu-latest-int"
+
+for h in $YUM; do
+    echo "Doing $h..."
+    ssh $h "yum update -y; yum clean all"
+done
+
+for h in $APT; do
+    echo "Doing $h..."
+    ssh $h "apt-get update; apt-get -y dist-upgrade; apt-get -y autoremove"
+done
diff --git a/bin/version-all.sh b/bin/version-all.sh
new file mode 100755
index 0000000..24e0fde
--- /dev/null
+++ b/bin/version-all.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+# Fedora
+for x in 31 32; do
+    echo -n "Fedora${x}: "
+    docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/fedora:${x}  cat /etc/redhat-release
+done
+
+# CentOs
+for x in 6 7 8; do
+    echo -n "CentOS${x}: "
+    docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/centos:${x}  cat /etc/redhat-release
+done
+
+# Debian
+for x in 8 9; do
+    echo -n "Debian${x}: "
+    docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/debian:${x}  cat /etc/debian_version
+done
+
+# Ubuntu
+for x in 14.04 16.04 18.04 19.04 20.04 20.10; do
+    echo -n "Ubuntu${x}: "
+    docker run -v /home:/home -v /CA:/CA -v /var/tmp:/var/tmp -i -t 
ci.trafficserver.apache.org/ats/ubuntu:${x}  grep DISTRIB_RELEASE 
/etc/lsb-release
+done

Reply via email to