| #!/usr/bin/env bash |
| |
| #Variables |
| SCRIPT_PATH=$0 |
| CMD=$(basename "$0") |
| |
| REPO_IMAGE=${1} |
| |
| #Server with connection to internet |
| SERVER=${2} |
| |
| #User and password for docker login on $SERVER |
| REMOTE_USER= |
| REMOTE_PASSWD= |
| |
| #User and password for docker login on localhost |
| LOCAL_USER= |
| LOCAL_PASSWD= |
| IMAGE=`sed 's/^[^/]*\///g' <<< ${1}` |
| |
| help() |
| { |
| cat <<EOF |
| ${CMD} - tool for downloading image and adding it to offline nexus repository |
| |
| Usage |
| $SCRIPT_PATH <repository>/<image>:<tag> <server> |
| |
| $SCRIPT_PATH <repository>/<image>:<tag> <server> --local-repo example.repository |
| |
| MANDATORY PARAMETERS: |
| <repository>/<image>:<tag> == image to be downloaded (e.g. nexus3.onap.org:10001/library/busybox:latest) |
| <server> == server with connection to internet and docker installed |
| |
| OPTIONAL PARAMETERS: |
| --remote-user == user for docker login on <server> |
| --remote-passwd == password for cicd-user |
| --local-user == user for docker login on localhost |
| --local-passwd == password for local-user |
| --local-repo == local repository where new image should be pushed |
| |
| EOF |
| } |
| |
| if [ $# -lt 2 ]; then |
| help |
| exit 1 |
| fi |
| |
| #Set up parameters |
| while [[ $# -gt 2 ]]; do |
| case $3 in |
| --remote-user) REMOTE_USER=$4 |
| ;; |
| --remote-passwd) REMOTE_PASSWD=$4 |
| ;; |
| --local-user) LOCAL_USER=$4 |
| ;; |
| --local-passwd) LOCAL_PASSWD=$4 |
| ;; |
| --local-repo) LOCAL_REPO=$4 |
| ;; |
| -h | --help) help |
| exit 0 |
| ;; |
| *) help |
| exit 1 |
| ;; |
| esac |
| shift 2 |
| done |
| |
| REMOTE_USER=${REMOTE_USER:-jenkins} |
| REMOTE_PASSWD=${REMOTE_PASSWD:-jenkins} |
| LOCAL_USER=${LOCAL_USER:-admin} |
| LOCAL_PASSWD=${LOCAL_PASSWD:-admin123} |
| LOCAL_REPO=${LOCAL_REPO:-nexus3.onap.org:10001} |
| |
| # Login to CICD server, pull image and push it into CICD nexus repo |
| /usr/bin/ssh -oStrictHostKeyChecking=no $SERVER << EOF |
| set -e |
| docker pull $REPO_IMAGE |
| docker tag $REPO_IMAGE $SERVER/$IMAGE |
| docker login -u $REMOTE_USER -p $REMOTE_PASSWD $SERVER |
| docker push $SERVER/$IMAGE |
| docker rmi $REPO_IMAGE |
| docker rmi $SERVER/$IMAGE |
| EOF |
| |
| if [ $? -eq 1 ] |
| then |
| exit 1 |
| fi |
| |
| # Download image from CICD nexus repo and push it into local repo |
| docker pull $SERVER/$IMAGE |
| docker tag $SERVER/$IMAGE $LOCAL_REPO/$IMAGE |
| docker login -u $LOCAL_USER -p $LOCAL_PASSWD $LOCAL_REPO |
| docker push $LOCAL_REPO/$IMAGE |
| docker rmi $SERVER/$IMAGE |
| docker rmi $LOCAL_REPO/$IMAGE |
| |
| echo 'Done Successfully' |