<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-infrastructure.
</pre>
<p><a href="https://github.com/macports/macports-infrastructure/commit/aa3a9d21a2b11a903c5d7427f6c83810b6dbf64a">https://github.com/macports/macports-infrastructure/commit/aa3a9d21a2b11a903c5d7427f6c83810b6dbf64a</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new aa3a9d2 buildbot: rsync upload improvements
</span>aa3a9d2 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit aa3a9d21a2b11a903c5d7427f6c83810b6dbf64a
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Tue Mar 4 23:39:55 2025 +1100
<span style='display:block; white-space:pre;color:#404040;'> buildbot: rsync upload improvements
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Allow configuring ssh port and path to uploaded archives on the master.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Also simplify code with dict.get().
</span>---
buildbot/master.cfg | 50 ++++++++++++++++++++------------------------------
1 file changed, 20 insertions(+), 30 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/buildbot/master.cfg b/buildbot/master.cfg
</span><span style='display:block; white-space:pre;color:#808080;'>index a5febf9..3d54146 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/buildbot/master.cfg
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/buildbot/master.cfg
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -449,34 +449,23 @@ if config['production']:
</span> else:
prefix = config['slaveprefix']
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if 'dlhost' in config:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dlhost = config['dlhost']
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dlhost = 'packages@packages-origin.macports.org' if config['production'] else ''
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+dlhost = config.get('dlhost',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 'packages@packages-origin.macports.org' if config['production'] else '')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+dlhost_private = config.get('dlhost_private', dlhost)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+dlpath = config.get('dlpath',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ '/var/www/html/packages' if config['production'] else './deployed_archives')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+dlpath_private = config.get('dlpath_private',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ '/var/www/html/packages-private' if config['production'] else './deployed_archives_private')
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if 'dlhost_private' in config:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dlhost_private = config['dlhost_private']
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dlhost_private = dlhost
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Path to upload archives from on the builder.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ulpath = config.get('ulpath', 'archive_staging')
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if 'dlpath' in config:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dlpath = config['dlpath']
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dlpath = '/var/www/html/packages' if config['production'] else './deployed_archives'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Per-builder path to target when uploading archives.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ulpath_unique = config.get('ulpath_unique',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ulpath+'-%(buildername)s')
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if 'dlpath_private' in config:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dlpath_private = config['dlpath_private']
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dlpath_private = '/var/www/html/packages-private' if config['production'] else './deployed_archives_private'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if 'ulpath' in config:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ulpath = config['ulpath']
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ulpath = 'archive_staging'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if 'ulpath_unique' in config:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ulpath_unique = config['ulpath_unique']
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ulpath_unique = ulpath+'-%(buildername)s'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Where the uploaded archives are found in the master's filesystem.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ulpath_master = config.get('ulpath_master', ulpath_unique)
</span>
@util.renderer
def make_build_url(props):
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -629,8 +618,8 @@ class RsyncDeployStep(steps.ShellCommand):
</span> name='rsync',
description=['deploying'],
descriptionDone=['deploy'],
<span style='display:block; white-space:pre;background:#ffe0e0;'>- command=['rsync', '-avzhC', '--delay-updates', '--delete-delay', '%s' % srcpath, util.WithProperties('%s@%s:%s/' % (user, host, destpath))],
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- env={'RSYNC_RSH': 'ssh -i ssh_key -oUserKnownHostsFile=ssh_known_hosts'},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ command=['rsync', '-avzhC', '--delay-updates', '--delete-delay', srcpath, util.WithProperties('%s@%s:%s/' % (user, host, destpath))],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ env={'RSYNC_RSH': 'ssh -i ssh_key -oUserKnownHostsFile=ssh_known_hosts -p %d' % kwargs.get('sshport', 22)},
</span> **kwargs)
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -681,19 +670,20 @@ elif config['upload_method'] == 'rsync':
</span> host=config['deploy']['archives']['host'],
user=config['deploy']['archives']['user'],
srcpath=ulpath,
<span style='display:block; white-space:pre;background:#ffe0e0;'>- destpath=ulpath_unique))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ destpath=ulpath_unique,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sshport=config['deploy']['archives'].get('sshport', 22)))
</span>
# XXX: move deploy_archives.sh functionality to mpbb
# sign generated binaries and sync to download server (if distributable)
if config['production'] or config['deploy_archives']:
portbuilder_factory.addStep(steps.MasterShellCommand(
<span style='display:block; white-space:pre;background:#ffe0e0;'>- command=['./deploy_archives.sh', util.WithProperties(os.path.join(ulpath_unique, 'public'))],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ command=['./deploy_archives.sh', util.WithProperties(os.path.join(ulpath_master, 'public'))],
</span> name='deploy-archives',
description=['deploying', 'public', 'archives'],
descriptionDone=['deploy', 'public', 'archives'],
env={'PRIVKEY': config['privkey'], 'DLHOST': dlhost, 'DLPATH': dlpath}))
portbuilder_factory.addStep(steps.MasterShellCommand(
<span style='display:block; white-space:pre;background:#ffe0e0;'>- command=['./deploy_archives.sh', util.WithProperties(os.path.join(ulpath_unique, 'private'))],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ command=['./deploy_archives.sh', util.WithProperties(os.path.join(ulpath_master, 'private'))],
</span> name='deploy-archives-private',
description=['deploying', 'private', 'archives'],
descriptionDone=['deploy', 'private', 'archives'],
</pre><pre style='margin:0'>
</pre>