Pá. Zář 4th, 2026
ukázka zdrojového kódu bash skriptu

Máte on-premise azure devops server a potřebujete efektivně vše stáhnout k vám na disk?
Budete potřebovat PAT (personal access token) + ssh klíč na svého azure devops uživatele. Jakmile ho budete mít, uveďte ho do PAT, upravte si JmenoFirmy,NazevProjektu, PROJECT proměnné nahoře.

Skript byl testován a dělá co má. Tak snad vám ušetří trošku toho trápení a vymýšlení, jak stáhnout hromadně všechny repozitáře v azure devops projektu.

Ukázka výsledku:

⬇ Klonuji: názevRepa
Cloning into 'názevRepa'…
remote: Azure Repos
remote: Found xxyz objects to send. (75 ms)
Receiving objects: 100% (xxyz/xxyz), 720.54 KiB | 18.96 MiB/s, done.

Resolving deltas: 100% (xxyy/xxyy), done.

Hotovo! Všechny repozitáře jsou staženy.

Ukázka funkčního skriptu

Testováno na Lubuntu desktop 22.04 LTS. Testováno a promptěno v Gemini.

#!/bin/bash

# --- KONFIGURACE ---
BASE_URL="https://azure-devops-server.jmeno.domena.com/projects/jmenoFirmy/NazevProjektu"
ORG="jmenoFirmy"
PROJECT="NazevProjektu"
PAT="VášPersonalAccessToken"
SSH_BASE="ssh://azure-devops-server.jmeno.domena.com:22/projects/jmenoFirmy/NazevProjektu/_git/"
API_URL="https://azure-devops-server.jmeno.domena.com/projects/$ORG/$PROJECT/_apis/git/repositories?api-version=5.1"
# Kódování autentizace
# On-Premise servery někdy lépe snášejí, když je uživatel explicitně prázdný
# Vygenerujeme Base64 ručně pro jistotu
# Firmyrizace pro API
AUTH=$(echo -n ":$PAT" | base64)

echo "Získávám seznam repozitářů..."

# Získání jmen repozitářů (jq vytáhne jen pole "name")
REPOS=$(curl -s -k -L -H "Authorization: Basic $AUTH" -H "Accept: application/json" "$API_URL" | jq -r '.value[].name')

if [ -z "$REPOS" ]; then
    echo "❌ Nepodařilo se načíst seznam repozitářů přes API."
    exit 1
fi

echo "✅ Nalezeno repozitářů. Začínám klonovat přes SSH..."
echo "----------------------------------------------"

for repo_name in $REPOS; do
    # Sestavení SSH URL pro konkrétní repo
    # Výsledek: ssh://azure-devops-server.firma.adresa.com:22/projects/JmenoFirmy/JmenoProjektu/_git/NAZEV_REPO
    SSH_URL="$SSH_BASE/$repo_name"

    echo "⬇  Klonuji: $repo_name"

    # Klonování přes SSH
    git clone "$SSH_URL" "$repo_name"

    echo "----------------------------------------------"
done

echo "Hotovo! Všechny repozitáře jsou staženy."

Avatar

By Miro

Hardwaru a počítačům se věnuji již od roku 2003. Za tu dobu jsem poskládal stovky počítačů, opravil tisíce počítačů a vyřešil nespočetně problémů, vad a chyb, se kterými se setkávali uživatelé. Od roku 2005 se zabývám servery, nejen těmi herními, v roce 2007 jsem se začal věnovat Valve Source SDK level designu. Dnes spravuji v jedné osobě cca 100 serverů/diskových polí na univerzitě, řeším IT v malých, středních i mezinárodních firmách tak, aby firmy ušetřily nemalé částky při zlepšení kvality a soustředím se na snižování nákladů na IT od licencí až po hardware, software, provádím konsolidace a Quality Assurance za DevOps v on-premise i v cloudových prostředích, které firmám šetří rovněž nemalé peníze. Z velkých firem jsem měl příležitost s dalšími kolegy řešit správu 8000 serverů po celé západní Evropě s vysokou mírou automatizace a poznávání nejrůznějších evropských pracovních mentalit. Dále jsem řešil hybridní cloud ve velké firmě, orientované na trhy střední a východní Evropy. Posledních několik let se věnuji Devops pro velké zákazníky v Azure cloudu, spravuji kubernetes (AKS), Gitlab a soustřeďuji se na využití AI pro praktické účely.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

fourteen − four =