#!/bin/bash # Variabelen SOURCE_HARBOR=harbor-kfc.ilionx-ocp.com #TARGET_HARBOR=harbor-kfc.ilionx-ocp.com SOURCE_PROJECT=cp4ba #TARGET_PROJECT=cp4ba_amd64 ARCH=amd64 OUTPUT_DIR=/home/Images # Credentials (gebruik veilige opslag in productie) SRC_USER= SRC_PASS= #DST_USER= #DST_PASS= # Alle repositories in het bronproject ophalen page=1 while :; do repos_page=$(curl -s -u $SRC_USER:$SRC_PASS "https://$SOURCE_HARBOR/api/v2.0/projects/$SOURCE_PROJECT/repositories?page=$page&page_size=50" | jq -r .[].name) [ -z "$repos_page" ] && break repos="$repos $repos_page" page=$((page+1)) done for repo in $repos; do echo $repo # Alle tags van de repository ophalen repo_short="${repo#${SOURCE_PROJECT}/}" api_repo=$(echo "$repo_short" | sed 's/\//%252F/g') #echo $(curl -s -u $SRC_USER:$SRC_PASS $art_out ) page=1 while :; do art_out=$(echo "https://$SOURCE_HARBOR/api/v2.0/projects/$SOURCE_PROJECT/repositories/$api_repo/artifacts?page=$page&page_size=50") echo $art_out tags=$(curl -s -u $SRC_USER:$SRC_PASS $art_out | jq -r '.[] | select (.tags !=null) | .tags[] |.name') [ -z "$tags" ] && break for tag in $tags; do echo Copying $repo:$tag for architecture $ARCH DEST_PATH="$OUTPUT_DIR/$repo_short/$tag" mkdir -p "$DEST_PATH" skopeo copy --src-creds $SRC_USER:$SRC_PASS \ --override-arch $ARCH \ --preserve-digests \ docker://$SOURCE_HARBOR/$SOURCE_PROJECT/$repo_short:$tag \ dir:$DEST_PATH done page=$((page+1)) done done