diff --git a/bin/deploy/horton_deploy.py b/bin/deploy/horton_deploy.py index 329f026..c9fde1d 100644 --- a/bin/deploy/horton_deploy.py +++ b/bin/deploy/horton_deploy.py @@ -164,17 +164,6 @@ def set_command_args(parser): "--variant", type=str, help="sdk variant", choices=utilities.all_variants ) - lkg_parser = target_subparsers.add_parser("lkg", help="deploy based on vsts LKG") - lkg_parser.add_argument( - "--language", - type=str, - help="sdk language", - required=True, - choices=utilities.all_languages, - ) - lkg_parser.add_argument( - "--variant", type=str, help="sdk variant", choices=utilities.all_variants - ) def handle_command_args(args): @@ -182,12 +171,6 @@ def handle_command_args(args): if args.target == "image": image = args.image_name print("Using new image: {}".format(image)) - elif args.target == "lkg": - if args.variant: - image = "{}-e2e-v3:lkg-{}".format(args.language, args.variant) - else: - image = "{}-e2e-v3:lkg".format(args.language) - print("Using LKG image: {}".format(image)) elif args.target == "vsts": if args.variant: image = "{}-e2e-v3:vsts-{}-{}".format( diff --git a/scripts/Tag-DockerImage.ps1 b/scripts/Tag-DockerImage.ps1 deleted file mode 100755 index 2ff677c..0000000 --- a/scripts/Tag-DockerImage.ps1 +++ /dev/null @@ -1,108 +0,0 @@ -#!/usr/bin/env pwsh -# Copyright (c) Microsoft. All rights reserved. -# Licensed under the MIT license. See LICENSE file in the project root for -# full license information. -# -# filename: Tag-DockerImage.ps1 -# author: v-greach@microsoft.com -# created: 03/11/2019 -# Rev: 03/11/2019 E - -Param -( - [Parameter(Position=0)] - [string]$Repository, - [Parameter(Position=1)] - [string]$TAG_OLD, - [Parameter(Position=2)] - [string]$TAG_NEW -) - -$EnvRepo = $Env:IOTHUB_E2E_REPO_ADDRESS -$UserName = $Env:IOTHUB_E2E_REPO_USER -$Password = $Env:IOTHUB_E2E_REPO_PASSWORD -$Registry = "https://" + $EnvRepo -if($TAG_OLD -eq "--ListAll") { - $TAG_NEW = " " -} - -if($Repository -eq "" -or $TAG_OLD -eq "" -or $TAG_NEW -eq "" -or - $EvnRepo -eq "" -or $UserName -eq "" -or - $Password -eq "") { - Write-Output "ERROR- Missing parameter or environment variable" - Write-Output "ENV must have IOTHUB_E2E_REPO_ADDRESS, IOTHUB_E2E_REPO_USER, IOTHUB_E2E_REPO_PASSWORD" - Write-Output "Usage:" - Write-Output "Tag-DockerImage.ps1 --VerifyTagExists" - Write-Output "Tag-DockerImage.ps1 --ListAll" - exit 1 - } - -$ContentType = 'application/vnd.docker.distribution.manifest.v2+json' - -if($TAG_OLD -eq "--ListAll") { - $TAG_URI = "$Registry/v2/$Repository/tags/list" -} -else { - $TAG_URI = "$Registry/v2/$Repository/manifests/$TAG_OLD" -} - -$Params = @{ - UseBasicParsing = $true - Method = 'Get' - Uri = "$TAG_URI" - Headers = @{ - Accept = $ContentType - } -} - -$pair = "$($UserName):$($Password)" -$encodedCredentials = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($Pair)) -$Params.Headers.Add('Authorization', "Basic $encodedCredentials") - -try { - $Response = Invoke-WebRequest @Params - if($TAG_OLD -eq "--ListAll") { - $tag_json = ConvertFrom-Json $Response.Content - foreach($tag in $tag_json.tags) { - Write-Output $tag - } - exit 0 - }else{ - $Manifest = ConvertFrom-ByteArray -Data $Response.Content -Encoding ASCII - } -} -catch { - Write-Output $_ - Write-Output "ERROR: Getting Tag [$TAG_OLD] in [$Repository]" - exit 1 -} - -if($TAG_NEW -eq "--VerifyTagExists") { - Write-Output "Tag [$TAG_OLD] exits in [$Repository]" - exit 0 - } - -$Params = @{ - UseBasicParsing = $true - Method = 'Put' - Uri = "$Registry/v2/$Repository/manifests/$TAG_NEW" - Headers = @{ - 'Content-Type' = $ContentType - } - Body = $Manifest -} -$Params.Headers.Add('Authorization', "Basic $encodedCredentials") - -try { - $Response = Invoke-WebRequest @Params - $RespCode = $Response.StatusCode - if($RespCode -eq 201) { - Write-Output "SUCCESS: Created new tag:$TAG_NEW from:$TAG_OLD in:$Repository" - } else { - Write-Output "FAILED: Status:$RespCode Creating new tag:$TAG_NEW from:$TAG_OLD in:$Repository" - } -} -catch { - Write-Output $Error[0] -} diff --git a/scripts/get-remote-source.sh b/scripts/get-remote-source.sh deleted file mode 100755 index 6cc4bc5..0000000 --- a/scripts/get-remote-source.sh +++ /dev/null @@ -1,55 +0,0 @@ -# Copyright (c) Microsoft. All rights teserved. -# Licensed under the MIT license. See LICENSE file in the project root for full license information. - -language=$1 -case "$language" in - node | c | csharp | java | pythonv2) - echo "running tests for for $language" - ;; - *) - echo "Usage: $0 [node | c | csharp | java | pythonv2]" - exit 1 - ;; -esac - -module=testMod -status=$(docker inspect --format='{{.State.Status}}' $module) -if [ $? -ne 0 ] || [ $status != "running" ]; then - echo $module is not running - exit 1 -fi - -dest=$(pwd)/${language}_source - -mkdir $dest - -echo "Copying source and ssh key for $language into $dest" - -docker cp $module:/sdk $dest/sdk -[ $? -eq 0 ] || { echo "failed copying sdk from container"; exit 1; } - -docker cp $module:/wrapper $dest/wrapper -[ $? -eq 0 ] || { echo "failed copying wrapper from container"; exit 1; } - -echo Source for $module is in $dest - -port=$(docker inspect --format='{{(index (index .NetworkSettings.Ports "22/tcp") 0).HostPort}}' $module) -if [ $? -ne 0 ]; then - echo "SSH port 22 is not exposed from $module" -else - docker cp $module:/root/.ssh/remote-debug $dest/remote-debug-ssh-key - [ $? -eq 0 ] || { echo "failed copying ssh key from container"; exit 1; } - - echo "" - echo "SSH key for $module is in $dest/remote-debug-ssh-key" - echo "$module has ssh exposed on port $port" - echo "" - echo "to connect to $module, call:" - echo "ssh -i ${dest}/remote-debug-ssh-key root@$(hostname) -p $port" - echo "" - echo "Before using SSH, connect with docker exec:" - echo "docker exec -it $module /bin/bash" - echo "Then restart the sshd service:" - echo "service ssh restart" -fi - diff --git a/scripts/new/install-azure-cli.sh b/scripts/new/install-azure-cli.sh new file mode 100755 index 0000000..98246b2 --- /dev/null +++ b/scripts/new/install-azure-cli.sh @@ -0,0 +1,23 @@ +# Copyright (c) Microsoft. All rights reserved. +# Licensed under the MIT license. See LICENSE file in the project root for full license information. + +script_dir=$(cd "$(dirname "$0")" && pwd) +set -o pipefail + +echo "Checking for azure CLI" +which az +if [ $? -eq 0 ]; then + echo "Azure CLI installed" +else + echo "Installing Azure CLI" + + curl -L https://aka.ms/InstallAzureCli | bash + [ $? -eq 0 ] || { echo "install-microsoft-apt-repo failed"; exit 1; } +fi + +az --version +[ $? -eq 0 ] || { echo "az --version failed"; exit 1; } + +az extension add --name azure-iot +[ $? -eq 0 ] || { echo "az extension add failed"; exit 1; } + diff --git a/scripts/setup/setup-iotedge.sh b/scripts/new/install-iotedge.sh similarity index 74% rename from scripts/setup/setup-iotedge.sh rename to scripts/new/install-iotedge.sh index 6a0028b..7d0c734 100755 --- a/scripts/setup/setup-iotedge.sh +++ b/scripts/new/install-iotedge.sh @@ -3,8 +3,8 @@ script_dir=$(cd "$(dirname "$0")" && pwd) -$script_dir/setup-microsoft-apt-repo.sh -[ $? -eq 0 ] || { echo "setup-microsoft-apt-repo failed"; exit 1; } +$script_dir/install-microsoft-apt-repo.sh +[ $? -eq 0 ] || { echo "install-microsoft-apt-repo failed"; exit 1; } # install iotedge sudo apt-get install -y aziot-edge diff --git a/scripts/setup/setup-microsoft-apt-repo.sh b/scripts/new/install-microsoft-apt-repo.sh similarity index 62% rename from scripts/setup/setup-microsoft-apt-repo.sh rename to scripts/new/install-microsoft-apt-repo.sh index 3c92458..06c3690 100755 --- a/scripts/setup/setup-microsoft-apt-repo.sh +++ b/scripts/new/install-microsoft-apt-repo.sh @@ -2,13 +2,12 @@ # Licensed under the MIT license. See LICENSE file in the project root for full license information. script_dir=$(cd "$(dirname "$0")" && pwd) -source "$script_dir/../colorecho.sh" source /etc/os-release -colorecho $_yellow "Checking for Microsoft APT repo registration" -if [ -f /etc/apt/sources.list.d/microsoft-prod.list ]; then - colorecho $_green "Microsoft APT repo already registered. Done." +echo "Checking for Microsoft APT repo registration" +if [ -f /etc/apt/sources.list.d/microsoft-prod.list ]; then + echo "Microsoft APT repo already registered. Done." exit 0 fi @@ -32,7 +31,7 @@ case $ID in raspbian) if [ "$VERSION_CODENAME" == "bullseye" ] || [ "$VERSION_ID" == "11" ]; then - os_platform="$ID_LIKE/11" + os_platform="$ID_LIKE/11" else os_platform="$ID_LIKE/stretch/multiarch" fi @@ -40,30 +39,30 @@ case $ID in esac if [ "${os_platform}" == "" ]; then - colorecho $_red "ERROR: This script only works on Ubunto and Raspbian distros" + echo "ERROR: This script only works on Ubunto and Raspbian distros" exit 1 fi curl https://packages.microsoft.com/config/${os_platform}/prod.list > ./microsoft-prod.list -[ $? -eq 0 ] || { colorecho $_red "curl failed"; exit 1; } +[ $? -eq 0 ] || { echo "curl failed"; exit 1; } # Register the Microsoft repository GPG keys sudo cp ./microsoft-prod.list /etc/apt/sources.list.d/ -[ $? -eq 0 ] || { colorecho $_red "sudo cp microsoft-prod.list failed"; exit 1; } +[ $? -eq 0 ] || { echo "sudo cp microsoft-prod.list failed"; exit 1; } rm microsoft-prod.list curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg -[ $? -eq 0 ] || { colorecho $_red "curl microsoft.asc failed"; exit 1; } +[ $? -eq 0 ] || { echo "curl microsoft.asc failed"; exit 1; } sudo cp ./microsoft.gpg /etc/apt/trusted.gpg.d/ -[ $? -eq 0 ] || { colorecho $_red "cp microsoft.gpg failed"; exit 1; } +[ $? -eq 0 ] || { echo "cp microsoft.gpg failed"; exit 1; } rm microsoft.gpg # Update the list of products sudo apt-get update -[ $? -eq 0 ] || { colorecho $_red "apt update failed"; exit 1; } +[ $? -eq 0 ] || { echo "apt update failed"; exit 1; } -colorecho $_green "Microsoft APT repo successfully registered" +echo "Microsoft APT repo successfully registered" diff --git a/scripts/setup/setup-moby.sh b/scripts/new/install-moby.sh similarity index 58% rename from scripts/setup/setup-moby.sh rename to scripts/new/install-moby.sh index 58e19d9..2c1f112 100755 --- a/scripts/setup/setup-moby.sh +++ b/scripts/new/install-moby.sh @@ -2,9 +2,8 @@ # Licensed under the MIT license. See LICENSE file in the project root for full license information. script_dir=$(cd "$(dirname "$0")" && pwd) -source "$script_dir/../colorecho.sh" -colorecho $_yellow "Checking for moby install" +echo "Checking for moby install" unset moby_cli_installed dpkg -s moby-cli | grep -q "install ok installed" if [ $? -eq 0 ]; then moby_cli_installed=true; fi @@ -15,44 +14,44 @@ if [ $? -eq 0 ]; then moby_engine_installed=true; fi need_moby=true if [ $moby_engine_installed ] && [ $moby_cli_installed ]; then - colorecho $_yellow "moby is already installed" - unset need_moby + echo "moby is already installed" + unset need_moby fi -if [ "$need_moby" ]; then - colorecho $_yellow "checking for docker install" +if [ "$need_moby" ]; then + echo "checking for docker install" which docker > /dev/null if [ $? -eq 0 ]; then - colorecho $_yellow "docker is already installed" + echo "docker is already installed" unset need_moby fi fi -if [ "$need_moby" ]; then - $script_dir/setup-microsoft-apt-repo.sh - [ $? -eq 0 ] || { echo "setup-microsoft-apt-repo failed"; exit 1; } +if [ "$need_moby" ]; then + $script_dir/install-microsoft-apt-repo.sh + [ $? -eq 0 ] || { echo "install-microsoft-apt-repo failed"; exit 1; } - colorecho $_yellow "installing moby" + echo "installing moby" sudo apt-get install -y moby-engine - [ $? -eq 0 ] || { colorecho $_red "apt-get failed"; exit 1; } + [ $? -eq 0 ] || { echo "apt-get failed"; exit 1; } sudo apt-get install -y moby-cli - [ $? -eq 0 ] || { colorecho $_red "apt-get failed"; exit 1; } + [ $? -eq 0 ] || { echo "apt-get failed"; exit 1; } # wait for the docker engine to start. sleep 10s fi # add a group called 'docker' so we can add ourselves to it. Sometimes it gets automatically created, sometimes not. -colorecho $_yellow "creating docker group" +echo "creating docker group" sudo groupadd docker # allowed to fail if the group already exists # add ourselves to the docker group. The user will have to restart the bash prompt to run docker, so we'll just # sudo all of our docker calls in this script. -colorecho $_yellow "adding $USER to docker group" +echo "adding $USER to docker group" sudo usermod -aG docker $USER -[ $? -eq 0 ] || { colorecho $_yellow "usermod failed"; exit 1; } +[ $? -eq 0 ] || { echo "usermod failed"; exit 1; } -colorecho $_green "Moby/Docker successfully installed" +echo "Moby/Docker successfully installed" diff --git a/scripts/new/install-prereqs.sh b/scripts/new/install-prereqs.sh new file mode 100755 index 0000000..590311b --- /dev/null +++ b/scripts/new/install-prereqs.sh @@ -0,0 +1,13 @@ +# Copyright (c) Microsoft. All rights reserved. +# Licensed under the MIT license. See LICENSE file in the project root for full license information. + +script_dir=$(cd "$(dirname "$0")" && pwd) + +$script_dir/install-azure-cli.sh +[ $? -eq 0 ] || { echo "install-azure-cli.sh failed"; exit 1; } + +$script_dir/install-moby.sh +[ $? -eq 0 ] || { echo "install-moby.sh failed"; exit 1; } + +$script_dir/install-iotedge.sh +[ $? -eq 0 ] || { echo "install-moby.sh failed"; exit 1; } diff --git a/scripts/setup/setup-registry.sh b/scripts/new/setup-registry.sh similarity index 100% rename from scripts/setup/setup-registry.sh rename to scripts/new/setup-registry.sh diff --git a/scripts/new/wait-for-container.sh b/scripts/new/wait-for-container.sh new file mode 100755 index 0000000..43bf334 --- /dev/null +++ b/scripts/new/wait-for-container.sh @@ -0,0 +1,11 @@ +# wait for a docker container to be running +CONTAINER_NAME=$1 +while true; do + state=$(docker inspect -f {{.State.Running}} ${CONTAINER_NAME}) + if [ $? -eq 0 ] && [ "${state}" == "true" ]; then + echo ${CONTAINER_NAME} is running + exit 0 + else + sleep 5 + fi +done; diff --git a/scripts/pwsh-helpers.ps1 b/scripts/pwsh-helpers.ps1 deleted file mode 100755 index f50cefb..0000000 --- a/scripts/pwsh-helpers.ps1 +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env pwsh -# Copyright (c) Microsoft. All rights reserved. -# Licensed under the MIT license. See LICENSE file in the project root for full license information. - -function IsWin32 { - if("$env:OS" -ne "") { - if ($env:OS.Indexof('Windows') -ne -1) { - return $true - } - } - return $false -} - -function Invoke-PyCmd($py_cmd) { - $py = "" - if(IsWin32) { - $py = "python $py_cmd" - } - else { - $py = "python3 $py_cmd" - } - Invoke-Expression $py -} diff --git a/scripts/setup/build_python.sh b/scripts/setup/build_python.sh deleted file mode 100755 index e923798..0000000 --- a/scripts/setup/build_python.sh +++ /dev/null @@ -1,79 +0,0 @@ -#!/bin/bash -#------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -#-------------------------------------------------------------------------- - -if [ "${BASH_SOURCE-}" = "$0" ]; then - echo "ERROR: You must source this script: source $0" >&2 - exit 33 -fi - -pushd . - -RUNTIME=3.7.7 - -sudo apt-get update -[ $? -eq 0 ] || { echo "APT failed"; return 1; } - -sudo apt-get install -y make build-essential zlib1g-dev libbz2-dev \ - libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \ - xz-utils tk-dev libffi-dev liblzma-dev dos2unix libssl1.0-dev dos2unix -[ $? -eq 0 ] || { echo "APT failed"; return 1; } - -which pyenv &> /dev/null -if [ $? -ne 0 ]; then - curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash - [ $? -eq 0 ] || { echo "failed installing pyenv"; return 1; } - - cd ${HOME}/.pyenv - [ $? -eq 0 ] || { echo "failed cd ${HOME}/.pyenv"; return 1; } - - # pyenv-installer gives us CRLF when we just want LF. Force LF - find -type f -a -not \( -path './versions/*' \) -print0 | \ - xargs -0 -I @@ bash -c 'file "$@" | grep ASCII &>/dev/null && dos2unix $@' -- @@ - - export PATH="${HOME}/.pyenv/bin:${PATH}" - eval "$(pyenv init -)" - eval "$(pyenv virtualenv-init -)" - eval "$(pyenv init -)" -fi - -pyenv install -s $RUNTIME -[ $? -eq 0 ] || { echo "failed installing Python $RUNTIME"; build_failure_help; return 1; } - -pyenv shell $RUNTIME -[ $? -eq 0 ] || { echo "failed calling pyenv to use Python $RUNTIME for this script"; return 1; } - -python -m pip install --upgrade pip -[ $? -eq 0 ] || { echo "failed upgrading PIP for Python $RUNTIME"; return 1; } - -python -m pip install virtualenv -[ $? -eq 0 ] || { echo "failed installing virtualenv for Python $RUNTIME"; return 1; } - -python -m virtualenv "${HOME}/env/Python-${RUNTIME}" -[ $? -eq 0 ] || { echo "failed setting up a virtual environment for Python $RUNTIME"; return 1; } - - -echo Success! -echo -echo "Use the following commands to switch python versions (or use the aliases below):" -echo "source ~/env/Python-${RUNTIME}/bin/activate" -echo -echo "Add the following to your .bashrc file:" -echo "export PATH=\"${HOME}/.pyenv/bin:\$PATH\"" -echo "eval \"\$(pyenv init -)\"" -echo "eval \"\$(pyenv virtualenv-init -)\"" -echo "alias pip='python -m pip $@'" -echo "alias py-${RUNTIME}='source ~/env/Python-${RUNTIME}/bin/activate'" - - -source ~/env/Python-${RUNTIME}/bin/activate - -popd - - - - - diff --git a/scripts/setup/docker-login.sh b/scripts/setup/docker-login.sh deleted file mode 100755 index e10ae98..0000000 --- a/scripts/setup/docker-login.sh +++ /dev/null @@ -1,4 +0,0 @@ -# Copyright (c) Microsoft. All rights reserved. -# Licensed under the MIT license. See LICENSE file in the project root for full license information. -docker login -u $IOTHUB_E2E_REPO_USER -p $IOTHUB_E2E_REPO_PASSWORD $IOTHUB_E2E_REPO_ADDRESS -[ $? -eq 0 ] || { echo "docker login failed"; exit 1; } diff --git a/scripts/setup/setup-powershell.sh b/scripts/setup/setup-powershell.sh deleted file mode 100755 index c369bbe..0000000 --- a/scripts/setup/setup-powershell.sh +++ /dev/null @@ -1,31 +0,0 @@ -# Copyright (c) Microsoft. All rights reserved. -# Licensed under the MIT license. See LICENSE file in the project root for full license information. - -script_dir=$(cd "$(dirname "$0")" && pwd) -source "$script_dir/../colorecho.sh" - -colorecho $_yellow "Checking for powershell install" -pwsh -v > /dev/null -if [ $? -eq 0 ]; then - colorecho $_green "Powershell is already installed. done" - exit 0 -fi - -# Register the Microsoft repository -$script_dir/setup-microsoft-apt-repo.sh -[ $? -eq 0 ] || { echo "setup-microsoft-apt-repo failed"; exit 1; } - -# Enable the "universe" repositories -sudo add-apt-repository universe -[ $? -eq 0 ] || { colorecho $_red "add-apt-repository failed"; exit 1; } - -# Update the list of products -sudo apt-get update -[ $? -eq 0 ] || { colorecho $_red "apt update failed"; exit 1; } - -# Install PowerShell -sudo apt-get install -y powershell -[ $? -eq 0 ] || { colorecho $_red "apt install powershell failed"; exit 1; } - -colorecho $_green "powershell successfully installed" - diff --git a/scripts/setup/setup-ubuntu.sh b/scripts/setup/setup-ubuntu.sh deleted file mode 100755 index f9f1afd..0000000 --- a/scripts/setup/setup-ubuntu.sh +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright (c) Microsoft. All rights reserved. -# Licensed under the MIT license. See LICENSE file in the project root for full license information. - -script_dir=$(cd "$(dirname "$0")" && pwd) - -source "$script_dir/../colorecho.sh" - -function header { - color="$1" - shift - colorecho $color "----------------------------------------------------------" - colorecho $color $@ - colorecho $color "----------------------------------------------------------" -} - -function failure { - header $_red $@ - exit 1 -} - -header $_cyan "installing moby" -$script_dir/setup-moby.sh -[ $? -eq 0 ] || failure "setup-moby failed" - -header $_cyan "installing local container registry" -$script_dir/setup-registry.sh -[ $? -eq 0 ] || failure "setup-registry failed" - -header $_cyan "installing iotedge" -$script_dir/setup-iotedge.sh -[ $? -eq 0 ] || failure "setup-iotedge failed" - -header $_green "\n\ -setup-ubuntu succeeded\n\ -\n\ -Please open a new bash prompt before continuing\n\ -\n\ -If you get permission errors from docker, reboot your VM\n\ -for group changes to take effect\n\ -\n\ -" - - diff --git a/scripts/tag-lkg.sh b/scripts/tag-lkg.sh deleted file mode 100755 index 426f251..0000000 --- a/scripts/tag-lkg.sh +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright (c) Microsoft. All rights reserved. -# Licensed under the MIT license. See LICENSE file in the project root for full license information. - -language=$1 -tag=$2 - -function usage { - echo "Usage: $0 [node | c | csharp | java | pythonv2] [tag]" - echo "eg: $0 pythonv2 vsts-12345" -} - -if [ "$language" == "" ] || [ "$tag" == "" ]; then - usage - exit 1 -fi - -case "$language" in - node | c | csharp | java | pythonv2) - echo "tagging ${language} ${tag} as LKG" - ;; - *) - usage - exit 1 - ;; -esac - -variants="" -case "$language" in - node) - variants="node18" - ;; - pythonv2) - variants="py37 py38 py39 py310" - ;; -esac - -base=${IOTHUB_E2E_REPO_ADDRESS}/${language}-e2e-v3 - -docker login -u ${IOTHUB_E2E_REPO_USER} -p ${IOTHUB_E2E_REPO_PASSWORD} ${IOTHUB_E2E_REPO_ADDRESS} -[ $? -eq 0 ] || { echo "docker login failed"; exit 1; } - -docker pull ${base}:${tag} -[ $? -eq 0 ] || { echo "docker pull ${base}:${tag} failed"; exit 1; } - -docker tag ${base}:${tag} ${base}:lkg -[ $? -eq 0 ] || { echo "docker tag ${base}:${tag} ${base}:lkg failed"; exit 1; } - -docker push ${base}:lkg -[ $? -eq 0 ] || { echo "docker push ${base}:lkg failed"; exit 1; } - -for variant in ${variants}; do - docker pull ${base}:${tag}-${variant} - [ $? -eq 0 ] || { echo "docker pull ${base}:${tag}-${variant} failed"; exit 1; } - - docker tag ${base}:${tag}-${variant} ${base}:lkg-${variant} - [ $? -eq 0 ] || { echo "docker tag ${base}:${tag}-${variant} ${base}:lkg-${variant} failed"; exit 1; } - - docker push ${base}:lkg-${variant} - [ $? -eq 0 ] || { echo "docker push ${base}:lkg failed"; exit 1; } -done - diff --git a/scripts/verify-deployment.ps1 b/scripts/verify-deployment.ps1 deleted file mode 100755 index 13c8ea5..0000000 --- a/scripts/verify-deployment.ps1 +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env pwsh -# Copyright (c) Microsoft. All rights reserved. -# Licensed under the MIT license. See LICENSE file in the project root for full license information. - -Param -( - [Parameter(Position=0)] - [AllowEmptyString()] - [string]$container_name="", - - [Parameter(Position=1)] - [AllowEmptyString()] - [string]$image_name="" -) - -$path = $MyInvocation.MyCommand.Path -if (!$path) {$path = $psISE.CurrentFile.Fullpath} -if ( $path) {$path = split-path $path -Parent} -. $path/pwsh-helpers.ps1 -$isWin32 = IsWin32 - -if( "$container_name" -eq "" -or "$image_name" -eq "") { - Write-Host "Usage: verify-deployment [container_name] [image_name]" -ForegroundColor Red - Write-Host "eg: verify-deployment nodeMod localhost:5000/node-test-image:latest" -ForegroundColor Red - exit 1 -} - -$expectedImg = "" -$actualImg = "" -$expectedImg = "" -$running = $true -$out_progress = "." -$expectedImg = "" - -if($isWin32) { - $container_name = $container_name.ToLower() - $image_name = $image_name.ToLower() -} -Write-Host "getting image ID for Image:($image_name) Container:($container_name)" -ForegroundColor Green -$ErrorActionPreference = "SilentlyContinue" -foreach($i in 1..37) { - if("$out_progress" -eq ".") { - Write-Host "calling docker inspect ($image_name)" -ForegroundColor Green - } - - if($isWin32) { - $expectedImg = docker image inspect $image_name --format="{{.Id}}" - } - else { - $expectedImg = sudo docker image inspect $image_name --format="{{.Id}}" - } - - if("$expectedImg" -ne "") { - if("$out_progress" -eq ".") { - Write-Host "Inspecting Image ($container_name) for .State.Running" -ForegroundColor Green - } - if($isWin32) { - $running = docker image inspect --format="{{.State.Running}}" $container_name - } - else { - $running = sudo docker inspect --format="{{.State.Running}}" $container_name - } - if($running) { - Write-Host "Container is running. Checking image" -ForegroundColor Green - if($isWin32) { - $actualImg = docker inspect $container_name --format="{{.Image}}" - } - else { - $actualImg = sudo docker inspect $container_name --format="{{.Image}}" - } - if($expectedImg -eq $actualImg) { - Write-Host "IDs match. Deployment is complete" -ForegroundColor Green - exit 0 - } - else { - Write-Host "container is not running. Waiting" -ForegroundColor Yellow - } - } - } - Write-Host "Waiting$out_progress" -ForegroundColor Blue - $out_progress += "." - Start-Sleep -s 10 -} - -exit 1 diff --git a/vsts/nightly-pythonv2.yaml b/vsts/nightly-pythonv2.yaml index bf622de..e77f1a3 100644 --- a/vsts/nightly-pythonv2.yaml +++ b/vsts/nightly-pythonv2.yaml @@ -104,12 +104,3 @@ jobs: forced_image: $(Horton.ForcedImage) suite: $(suite) -- job: "tag_lkg_amd64" - pool: - vmImage: 'ubuntu-20.04' - dependsOn: - "test_linux_amd64" - steps: - - template: templates/steps-tag-lkg.yaml - parameters: - language: pythonv2 diff --git a/vsts/templates/steps-build-docker-image.yaml b/vsts/templates/steps-build-docker-image.yaml index 9eacc14..0e91814 100644 --- a/vsts/templates/steps-build-docker-image.yaml +++ b/vsts/templates/steps-build-docker-image.yaml @@ -84,7 +84,11 @@ steps: } if ( $CommitToPass -like "master" ) { - $CommitToPass="main" + if ($LanguageToPass -like 'pythonv2') { + $CommitToPass="v2" + } else { + $CommitToPass="main" + } } $Architecture=GetArchitecture diff --git a/vsts/templates/steps-pre-test.yaml b/vsts/templates/steps-pre-test.yaml index d1bb57e..fe126e6 100644 --- a/vsts/templates/steps-pre-test.yaml +++ b/vsts/templates/steps-pre-test.yaml @@ -11,8 +11,8 @@ parameters: deployment_type: '' steps: -- bash: ${HORTON_FRAMEWORKROOT}/scripts/setup/setup-iotedge.sh - displayName: 'Install iotedge packages' +- bash: ${HORTON_FRAMEWORKROOT}/scripts/new/install-prereqs.sh + displayName: 'Install prerequisites' condition: and(succeeded(), ne(variables['skipTest'],'yes'), eq(variables['deploymentType'], 'iotedge')) - bash: | @@ -23,18 +23,6 @@ steps: displayName: 'docker login' condition: and(succeeded(), ne(variables['skipTest'],'yes'), eq(variables['usesDocker'], 'yes')) -- bash: | - docker pull ${{ parameters.image_testMod }} || docker pull ${{ parameters.image_testMod }} - displayName: 'pre-cache test image' - condition: and(succeeded(), ne(variables['skipTest'],'yes'), eq(variables['usesDocker'],'yes')) - -- bash: | - ( docker pull ${{ parameters.image_edgeAgent }} || docker pull ${{ parameters.image_edgeAgent }} ) && - ( docker pull ${{ parameters.image_edgeHub }} || docker pull ${{ parameters.image_edgeHub }} ) && - ( docker pull ${{ parameters.image_friendmod }} || docker pull ${{ parameters.image_friendmod }} ) - displayName: 'pre-cache edge images' - condition: and(succeeded(), ne(variables['skipTest'],'yes'), eq(variables['deploymentType'], 'iotedge')) - - bash: ${HORTON_FRAMEWORKROOT}/bin/horton deploy ${{ parameters.deployment_type }} image ${{ parameters.image_testMod }} displayName: 'Create new identites and deploy containers (docker)' @@ -46,38 +34,24 @@ steps: IOTEDGE_DEBUG_LOG: $(IOTEDGE_DEBUG_LOG) condition: and(succeeded(), ne(variables['skipTest'],'yes'), eq(variables['usesDocker'],'yes')) -- powershell: $(Horton.FrameworkRoot)/scripts/verify-deployment.ps1 edgeHub ${{ parameters.image_edgeHub }} - displayName: 'Verify edgeHub deployment' +- bash: | + cd ${HORTON_FRAMEWORKROOT}/scripts/new/ && + ./wait-for-container.sh edgeHub && + ./wait-for-container.sh edgeAgent && + ./wait-for-container.sh friendMod + displayName: 'wait for iot edge containers' condition: and(succeeded(), ne(variables['skipTest'],'yes'), eq(variables['deploymentType'], 'iotedge')) -- powershell: $(Horton.FrameworkRoot)/scripts/verify-deployment.ps1 edgeAgent ${{ parameters.image_edgeAgent }} - displayName: 'Verify edgeAgent deployment' - condition: and(succeeded(), ne(variables['skipTest'],'yes'), eq(variables['deploymentType'], 'iotedge')) - -- powershell: $(Horton.FrameworkRoot)/scripts/verify-deployment.ps1 friendMod ${{ parameters.image_friendMod }} - displayName: 'Verify friendMod deployment' - condition: and(succeeded(), ne(variables['skipTest'],'yes'), eq(variables['deploymentType'], 'iotedge')) - -- powershell: $(Horton.FrameworkRoot)/scripts/verify-deployment.ps1 testMod ${{ parameters.image_testMod }} - displayName: 'Verify testMod deployment' +- bash: | + cd ${HORTON_FRAMEWORKROOT}/scripts/new/ && + ./wait-for-container.sh testMod + displayName: 'wait for testMod container' condition: and(succeeded(), ne(variables['skipTest'],'yes'), eq(variables['usesDocker'],'yes')) -- bash: - source ${HORTON_FRAMEWORKROOT}/bin/activate_horton && - python pyscripts/ensure_container.py testMod - displayName: 'Verify that testMod is responding' - condition: and(succeeded(), ne(variables['skipTest'],'yes'), eq(variables['usesDocker'],'yes')) - -- bash: - source ${HORTON_FRAMEWORKROOT}/bin/activate_horton && - python pyscripts/ensure_container.py friendMod - displayName: 'Verify that friendMod is responding' - condition: and(succeeded(), ne(variables['skipTest'],'yes'), eq(variables['deploymentType'], 'iotedge')) - - bash: sleep 30 - displayName: 'give edgeHub 30 seconds to start up' - condition: and(succeeded(), ne(variables['skipTest'],'yes'), eq(variables['deploymentType'], 'iotedge')) - + displayName: '30 seconds to start up' + condition: and(succeeded(), ne(variables['skipTest'],'yes')) + - bash: ${HORTON_FRAMEWORKROOT}/bin/horton get_credentials displayName: 'Get credentials' diff --git a/vsts/templates/steps-tag-lkg.yaml b/vsts/templates/steps-tag-lkg.yaml deleted file mode 100644 index 520c1a3..0000000 --- a/vsts/templates/steps-tag-lkg.yaml +++ /dev/null @@ -1,12 +0,0 @@ -parameters: - langauge: '' - -steps: -- bash: | - ${HORTON_FRAMEWORKROOT}/scripts/tag-lkg.sh ${{ parameters.language }} vsts-${BUILD_BUILDID} - displayName: "tag LKG ${{ parameters.language }}" - env: - IOTHUB_E2E_REPO_ADDRESS: $(IOTHUB-E2E-REPO-ADDRESS) - IOTHUB_E2E_REPO_USER: $(IOTHUB-E2E-REPO-USER) - IOTHUB_E2E_REPO_PASSWORD: $(IOTHUB-E2E-REPO-PASSWORD) - condition: and(succeeded(), or(eq(variables['Horton.Commit'],'master'), eq(variables['Horton.Commit'],'main')))