Preserve local macOS client state during installs
Build and Deploy Gateway / build-and-push (push) Successful in 18s
Build and Deploy Gateway / deploy (push) Successful in 7s

This commit is contained in:
2026-08-09 13:18:53 +03:00
parent 5da9686c27
commit 03b2ed5fb0
3 changed files with 16 additions and 2 deletions
+6 -1
View File
@@ -260,7 +260,11 @@ copy_source() {
[ -f "$source_dir/docker-compose.client.yml" ] || die "invalid Harbor source archive"
log "installing files to $INSTALL_DIR"
mkdir -p "$INSTALL_DIR"
cp -R "$source_dir/." "$INSTALL_DIR/"
rsync -a --delete \
--exclude='.env' \
--exclude='.runtime' \
--exclude='.git' \
"$source_dir/" "$INSTALL_DIR/"
}
download_source() {
@@ -282,6 +286,7 @@ fi
need docker
need curl
need rsync
need tar
docker compose version >/dev/null 2>&1 || die "Docker Compose plugin is required"
+1 -1
View File
@@ -1,5 +1,5 @@
export const HARBOR_VERSIONS = Object.freeze({
macClient: '0.21.2',
macClient: '0.21.3',
gatewayClient: '0.22.0',
gatewayBackend: '0.22.3',
});
+9
View File
@@ -40,3 +40,12 @@ test('one-line installer extracts the archive and hands it to the macOS installe
fs.rmSync(tmp, { recursive: true, force: true });
}
});
test('macOS installer removes stale archive files without deleting local state', () => {
const installer = fs.readFileSync(path.join(root, 'scripts', 'install-macos-client.sh'), 'utf8');
assert.match(installer, /rsync -a --delete/);
assert.match(installer, /--exclude='\.env'/);
assert.match(installer, /--exclude='\.runtime'/);
assert.match(installer, /--exclude='\.git'/);
});