diff --git a/.vsts-ci/install-ps.yml b/.vsts-ci/install-ps.yml new file mode 100644 index 00000000000..04331a01741 --- /dev/null +++ b/.vsts-ci/install-ps.yml @@ -0,0 +1,47 @@ +name: PR-$(System.PullRequest.PullRequestNumber)-$(Date:yyyyMMdd)$(Rev:.rr) +trigger: + branches: + include: + - master + - release* + paths: + include: + - /tools/install-powershell.sh + - /tools/installpsh-amazonlinux.sh + - /tools/installpsh-debian.sh + - /tools/installpsh-osx.sh + - /tools/installpsh-redhat.sh + - /tools/installpsh-suse.sh +pr: + branches: + include: + - master + - release* + paths: + include: + - /tools/install-powershell.sh + - /tools/installpsh-amazonlinux.sh + - /tools/installpsh-debian.sh + - /tools/installpsh-osx.sh + - /tools/installpsh-redhat.sh + - /tools/installpsh-suse.sh + +variables: + DOTNET_CLI_TELEMETRY_OPTOUT: 1 + POWERSHELL_TELEMETRY_OPTOUT: 1 + +resources: +- repo: self + clean: true +phases: +- template: templates/install-ps-phase.yml + parameters: + scriptName: ./tools/install-powershell.sh + jobName: InstallPowerShellUbuntu + pool: Hosted Ubuntu 1604 + +- template: templates/install-ps-phase.yml + parameters: + scriptName: ./tools/install-powershell.sh + jobName: InstallPowerShellMacOS + pool: Hosted macOS diff --git a/.vsts-ci/templates/install-ps-phase.yml b/.vsts-ci/templates/install-ps-phase.yml new file mode 100644 index 00000000000..22149640e48 --- /dev/null +++ b/.vsts-ci/templates/install-ps-phase.yml @@ -0,0 +1,29 @@ +parameters: + pool: 'Hosted Ubuntu 1604' + jobName: 'none' + scriptName: '' + +jobs: +- job: ${{ parameters.jobName }} + variables: + scriptName: ${{ parameters.scriptName }} + + pool: + name: ${{ parameters.pool }} + + displayName: ${{ parameters.jobName }} + + steps: + - powershell: | + Get-ChildItem -Path env: + displayName: Capture environment + condition: succeededOrFailed() + + - powershell: Write-Host "##vso[build.updatebuildnumber]$env:BUILD_SOURCEBRANCHNAME-$env:BUILD_SOURCEVERSION-$((get-date).ToString("yyyyMMddhhmmss"))" + displayName: Set Build Name for Non-PR + condition: ne(variables['Build.Reason'], 'PullRequest') + + - bash: | + $(scriptName) + displayName: Run Script - $(scriptName) + condition: succeededOrFailed() diff --git a/tools/install-powershell.sh b/tools/install-powershell.sh index 673a861dc85..ab22c01994e 100755 --- a/tools/install-powershell.sh +++ b/tools/install-powershell.sh @@ -1,10 +1,12 @@ #!/bin/bash +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. install(){ #Companion code for the blog https://cloudywindows.com #call this code direction from the web with: - #bash <(wget -O - https://raw.githubusercontent.com/PowerShell/PowerShell/master/tools/install-powershell.sh) + #bash <(wget -qO - https://raw.githubusercontent.com/PowerShell/PowerShell/master/tools/install-powershell.sh) #wget -O - https://raw.githubusercontent.com/PowerShell/PowerShell/master/tools/install-powershell.sh | bash -s #bash <(curl -s https://raw.githubusercontent.com/PowerShell/PowerShell/master/tools/install-powershell.sh) @@ -123,29 +125,41 @@ install(){ if [[ "'$*'" =~ appimage ]] ; then if [ -f $SCRIPTFOLDER/appimage.sh ]; then - #Script files were copied local - use them - . $SCRIPTFOLDER/appimage.sh + #Script files were copied local - use them + . $SCRIPTFOLDER/appimage.sh else - #Script files are not local - pull from remote - echo "Could not find \"appimage.sh\" next to this script..." - echo "Pulling it from \"$gitreposcriptroot/appimage.sh\"" - bash <(wget -qO- $gitreposcriptroot/appimage.sh) $@ - fi + #Script files are not local - pull from remote + echo "Could not find \"appimage.sh\" next to this script..." + echo "Pulling and executing it from \"$gitreposcriptroot/appimage.sh\"" + if [ -n "$(command -v curl)" ]; then + echo "found and using curl" + bash <(curl -s $gitreposcriptroot/appimage.sh) $@ + elif [ -n "$(command -v wget)" ]; then + echo "found and using wget" + bash <(wget -qO- $gitreposcriptroot/appimage.sh) $@ + else + echo "Could not find curl or wget, install one of these or manually download \"$gitreposcriptroot/appimage.sh\"" + fi + fi elif [ "$DistroBasedOn" == "redhat" ] || [ "$DistroBasedOn" == "debian" ] || [ "$DistroBasedOn" == "osx" ] || [ "$DistroBasedOn" == "suse" ] || [ "$DistroBasedOn" == "amazonlinux" ]; then echo "Configuring PowerShell Core Environment for: $DistroBasedOn $DIST $REV" if [ -f $SCRIPTFOLDER/installpsh-$DistroBasedOn.sh ]; then - #Script files were copied local - use them - . $SCRIPTFOLDER/installpsh-$DistroBasedOn.sh + #Script files were copied local - use them + . $SCRIPTFOLDER/installpsh-$DistroBasedOn.sh else - #Script files are not local - pull from remote - echo "Could not find \"installpsh-$DistroBasedOn.sh\" next to this script..." - echo "Pulling it from \"$gitreposcriptroot/installpsh-$DistroBasedOn.sh\"" - if [ "$OS" == "osx" ]; then - bash <(curl -s $gitreposcriptroot/installpsh-$DistroBasedOn.sh) $@ - else - bash <(wget -qO- $gitreposcriptroot/installpsh-$DistroBasedOn.sh) $@ + #Script files are not local - pull from remote + echo "Could not find \"installpsh-$DistroBasedOn.sh\" next to this script..." + echo "Pulling and executing it from \"$gitreposcriptroot/installpsh-$DistroBasedOn.sh\"" + if [ -n "$(command -v curl)" ]; then + echo "found and using curl" + bash <(curl -s $gitreposcriptroot/installpsh-$DistroBasedOn.sh) $@ + elif [ -n "$(command -v wget)" ]; then + echo "found and using wget" + bash <(wget -qO- $gitreposcriptroot/installpsh-$DistroBasedOn.sh) $@ + else + echo "Could not find curl or wget, install one of these or manually download \"$gitreposcriptroot/installpsh-$DistroBasedOn.sh\"" + fi fi - fi else echo "Sorry, your operating system is based on $DistroBasedOn and is not supported by PowerShell Core or this installer at this time." fi