Skip to content

check_install_script #2093

check_install_script

check_install_script #2093

name: check_install_script
on:
push:
branches:
- master
pull_request:
schedule:
- cron : '0 0 * * *' # Every midnight check the released version of default branch
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
install-macos-full:
name: install-macos-full
runs-on: macos-latest
steps:
- name: test_install_on_macos
run: |
if [ $GITHUB_EVENT_NAME = "pull_request" ]; then
script_source=${GITHUB_HEAD_REF}
else
script_source=${GITHUB_REF#refs/heads/}
fi
export TIPI_DISTRO_MODE=all
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/tipi-build/cli/${script_source}/install/install_for_macos_linux.sh)"
# Test install succeeeded
pathsToTest=(/usr/local/bin/tipi
/usr/local/bin/cmake-re
/usr/local/share/.tipi/clang/*/bin/clang
/usr/local/share/.tipi/cmake/*/bin/cmake
/usr/local/share/.tipi/emsdk/*/emsdk
/usr/local/share/.tipi/environments/*/linux.cmake
/usr/local/share/.tipi/go/*/bin/go
/usr/local/share/.tipi/jdk/*/Contents/Home/bin/jar
/usr/local/share/.tipi/nodejs/*/bin/node
/usr/local/share/.tipi/openapi/*/openapi-generator-cli-5.1.1.jar
/usr/local/share/.tipi/openapi-generator-script/*/openapi-generator-cli
/usr/local/share/.tipi/python/*/bin/python3)
for element in "${pathsToTest[@]}"
do
echo "[TESTING] $element should be on disk."
test -f $element
done
install-macos-light:
name: install-macos-light
runs-on: macos-latest
steps:
- name: test_install_on_macos
run: |
if [ $GITHUB_EVENT_NAME = "pull_request" ]; then
script_source=${GITHUB_HEAD_REF}
else
script_source=${GITHUB_REF#refs/heads/}
fi
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/tipi-build/cli/${script_source}/install/install_for_macos_linux.sh)"
# Test install succeeeded
pathsToTest=(/usr/local/bin/tipi
/usr/local/bin/cmake-re
/usr/local/share/.tipi/environments/*/linux.cmake)
for element in "${pathsToTest[@]}"
do
echo "[TESTING] $element should be on disk."
test -f $element
done
pathsToTest_negative=(~/.tipi/clang/*/bin/clang
/usr/local/share/.tipi/emsdk/*/emsdk
/usr/local/share/.tipi/go/*/bin/go
/usr/local/share/.tipi/jdk/*/bin/jar
/usr/local/lib/cmake-re.cpp.o
/usr/local/lib/libz.a
/usr/local/lib/*.a)
for element in "${pathsToTest_negative[@]}"
do
echo "[TESTING] $element should NOT be on disk."
test ! -f $element
done
install-linux-full:
name: install-linux-full
runs-on: ubuntu-latest
steps:
- name: test_install_on_linux
run: |
if [ $GITHUB_EVENT_NAME = "pull_request" ]; then
script_source=${GITHUB_HEAD_REF}
else
script_source=${GITHUB_REF#refs/heads/}
fi
echo "Script source : ${script_source}"
export TIPI_DISTRO_MODE=all
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/tipi-build/cli/${script_source}/install/install_for_macos_linux.sh)"
# Test install succeeeded
pathsToTest=(/usr/local/bin/tipi
/usr/local/bin/cmake-re
/usr/local/share/.tipi/clang/*/bin/clang
/usr/local/share/.tipi/cmake/*/bin/cmake
/usr/local/share/.tipi/emsdk/*/emsdk
/usr/local/share/.tipi/environments/*/linux.cmake
/usr/local/share/.tipi/go/*/bin/go
/usr/local/share/.tipi/jdk/*/bin/jar
/usr/local/share/.tipi/nodejs/*/bin/node
/usr/local/share/.tipi/openapi/*/openapi-generator-cli-5.1.1.jar
/usr/local/share/.tipi/openapi-generator-script/*/openapi-generator-cli)
for element in "${pathsToTest[@]}"
do
echo "[TESTING] $element should be on disk."
test -f $element
done
install-linux-light:
name: install-linux-light
runs-on: ubuntu-latest
steps:
- name: compute script source
id: compute-script-source
run: |
if [ $GITHUB_EVENT_NAME = "pull_request" ]; then
script_source=${GITHUB_HEAD_REF}
else
script_source=${GITHUB_REF#refs/heads/}
fi
echo "Script source : ${script_source}"
echo "::set-output name=SCRIPT_SOURCE::$script_source"
- name: test_install_on_linux
run: |
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/tipi-build/cli/${{ steps.compute-script-source.outputs.SCRIPT_SOURCE }}/install/install_for_macos_linux.sh)"
# Test install succeeeded
pathsToTest=(/usr/local/bin/tipi
/usr/local/share/.tipi/environments/*/linux.cmake)
for element in "${pathsToTest[@]}"
do
echo "[TESTING] $element should be on disk."
test -f $element
done
pathsToTest_negative=(~/.tipi/clang/*/bin/clang
/usr/local/share/.tipi/emsdk/*/emsdk
/usr/local/share/.tipi/go/*/bin/go
/usr/local/share/.tipi/jdk/*/Contents/Home/bin/jar
/usr/local/lib/cmake-re.cpp.o
/usr/local/lib/libz.a
/usr/local/lib/*.a)
for element in "${pathsToTest_negative[@]}"
do
echo "[TESTING] $element should NOT be on disk."
test ! -f $element
done
- name: Test TIPI_INSTALL_SOURCE feature
run: |
set +e
###
# testing the install from TIPI_INSTALL_SOURCE path
echo "[TESTING] TIPI_INSTALL_SOURCE feature"
rm $(which tipi)
which tipi
if [ $? -ne 1 ]; then
echo "[FAILED] tipi still found on path"
echo ::set-output name=exit_status::$?
exit 1
fi
export INSTALL_SRC_TEST_OUTFILE=tipiv0.0.30.zip
wget https://github.com/tipi-build/cli/releases/download/v0.0.30/tipi-v0.0.30-linux-x86_64.zip -O $INSTALL_SRC_TEST_OUTFILE
export TIPI_INSTALL_SOURCE=file://$(realpath $INSTALL_SRC_TEST_OUTFILE)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/tipi-build/cli/${{ steps.compute-script-source.outputs.SCRIPT_SOURCE }}/install/install_for_macos_linux.sh)" | grep "$TIPI_INSTALL_SOURCE"
if [ $? -ne 0 ]; then
echo "[FAILED] didn't find expected string '$TIPI_INSTALL_SOURCE' in the output of the install script"
echo ::set-output name=exit_status::$?
exit 1
fi
tipi --help --dont-upgrade | grep "v0.0.30"
if [ $? -ne 0 ]; then
echo "[FAILED] Expected to find tipi 'v0.0.30'"
echo ::set-output name=exit_status::$?
exit 1
fi
- name: Neg test TIPI_INSTALL_SOURCE feature
run: |
# do not stop on nonzero return codes
set +e
###
# negative test / install from TIPI_INSTALL_SOURCE should fail if path doesn't exist
echo "[TESTING] Negative test for TIPI_INSTALL_SOURCE"
rm $(which tipi)
which tipi
if [ $? -ne 1 ]; then
echo "[FAILED] tipi still found on path"
echo ::set-output name=exit_status::$?
fi
export TIPI_INSTALL_SOURCE=file:///tmp/rAnDoMfiLe.noknownext
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/tipi-build/cli/${{ steps.compute-script-source.outputs.SCRIPT_SOURCE }}/install/install_for_macos_linux.sh)"
if [ $? -ne 1 ]; then
echo "[FAILED] Unexpected success return code: install script did not fail as expected"
echo ::set-output name=exit_status::$?
fi
which tipi
if [ $? -ne 1 ]; then
echo "[FAILED] tipi still found on path"
echo ::set-output name=exit_status::$?
fi
install-windows-powershell-full:
name: install-windows-powershell-full
runs-on: windows-latest
steps:
- name: test_install_on_windows_powershell
run: |
if ($env:GITHUB_EVENT_NAME -eq "pull_request") {
$script_source = $env:GITHUB_HEAD_REF.replace('refs/heads/', '')
} else {
$script_source = $env:GITHUB_REF.replace('refs/heads/', '')
}
$Env:TIPI_DISTRO_MODE="all"
. { iwr -useb https://raw.githubusercontent.com/tipi-build/cli/$script_source/install/install_for_windows.ps1 } | iex
if (!($?)) {exit 1}
# Test install succeeeded
$expected_install_folder = Join-Path -Path ([Environment]::GetFolderPath('LocalApplicationData')) -ChildPath "\tipi\tipi.exe"
$expected_install_folder_cmake_re = Join-Path -Path ([Environment]::GetFolderPath('LocalApplicationData')) -ChildPath "\tipi\cmake-re.exe"
$pathsToTest = @(
$expected_install_folder
$expected_install_folder_cmake_re
"C:\.tipi\clang\*\bin\clang.exe"
"C:\.tipi\cmake\*\bin\cmake.exe"
"C:\.tipi\emsdk\*\emsdk.bat"
"C:\.tipi\environments\*\linux.cmake"
"C:\.tipi\go\*\bin\go.exe"
"C:\.tipi\jdk\*\bin\jar.exe"
"C:\.tipi\nodejs\*\node.exe"
"C:\.tipi\openapi\*\openapi-generator-cli-5.1.1.jar"
"C:\.tipi\openapi-generator-script\*\openapi-generator-cli.bat"
"C:\.tipi\openssh\*\ssh.exe"
"C:\.tipi\perl\*\README.txt"
"C:\.tipi\python\*\python.exe"
)
$success = $true
# this checks that tipi is on PATH and that it's where we expect it to be.
$success = (get-command tipi).Path -eq $expected_install_folder
foreach ( $testPath in $pathsToTest )
{
if (!(Test-Path $testPath -PathType leaf)) {
echo "[FAIL] Expected <$testPath> was not found in installation."
$success = $false;
}
}
if(!$success) { exit 1; }
shell: powershell
system-install-windows-powershell-light:
name: system-install-windows-powershell-light
runs-on: windows-latest
steps:
- name: compute script source
shell: powershell
id: compute-script-source
run: |
if ($env:GITHUB_EVENT_NAME -eq "pull_request") {
$script_source = $env:GITHUB_HEAD_REF.replace('refs/heads/', '')
} else {
$script_source = $env:GITHUB_REF.replace('refs/heads/', '')
}
echo "::set-output name=SCRIPT_SOURCE::$script_source"
- name: test_install_on_windows_powershell
id: base_sys_install
shell: powershell
run: |
# force system install to "C:\ProgramData\tipi\tipi.exe"
$env:TIPI_INSTALL_SYSTEM="True"
. { iwr -useb https://raw.githubusercontent.com/tipi-build/cli/${{ steps.compute-script-source.outputs.SCRIPT_SOURCE }}/install/install_for_windows.ps1 } | iex
if (!($?)) {
echo "[FAILED] install script issued a nonzero return"
exit 1
}
# Test install succeeeded
$expected_install_folder = "C:\ProgramData\tipi\tipi.exe"
$expected_install_folder_cmake_re = "C:\ProgramData\tipi\cmake-re.exe"
echo "::set-output name=EXPECTED_INSTALL_FOLDER::$expected_install_folder"
$pathsToTest = @(
$expected_install_folder
$expected_install_folder_cmake_re
"C:\.tipi\environments\*\linux.cmake"
"C:\.tipi\openssh\*\ssh.exe"
)
$success = $true
# this checks that tipi is on PATH and that it's where we expect it to be.
$success = (get-command tipi).Path -eq $expected_install_folder
foreach ( $testPath in $pathsToTest )
{
if (!(Test-Path $testPath -PathType leaf)) {
echo "[FAIL] Expected <$testPath> was not found in installation."
$success = $false;
}
}
# test just a few things in the light install to make sure they are *NOT* present
$pathsToTest_negative = @(
"C:\.tipi\clang\*\bin\clang.exe"
"C:\.tipi\emsdk\*\emsdk.bat"
"C:\.tipi\go\*\bin\go.exe"
"C:\.tipi\jdk\*\bin\jar.exe"
)
foreach ( $testPath in $pathsToTest_negative )
{
if (Test-Path $testPath -PathType leaf) {
echo "[FAIL] Unexpected <$testPath> was found in installation."
$success = $false;
}
}
if(!$success) { exit 1; }
- name: Test TIPI_INSTALL_SOURCE feature
shell: powershell
run: |
# force system install to "C:\ProgramData\tipi\tipi.exe"
# NOTE: we do this here too so the next install step will - again - be pretty sure to
# be able to find and delete a tipi.exe in the expected path...
$env:TIPI_INSTALL_SYSTEM="True"
echo "[TESTING] TIPI_INSTALL_SOURCE feature"
del ${{ steps.base_sys_install.outputs.EXPECTED_INSTALL_FOLDER }}
try {
get-command tipi
echo "[FAILED] tipi still found on path"
exit 1
}
catch {
echo "[SUCCES] tipi forcefully removed from the system"
}
$downloaded_tipi_zip = Join-Path -Path $env:TEMP -ChildPath "tipiv0.0.30.zip"
$Env:INSTALL_SRC_TEST_OUTFILE=$downloaded_tipi_zip
$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -ContentType "application/octet-stream" -Uri "https://github.com/tipi-build/cli/releases/download/v0.0.30/tipi-v0.0.30-windows-win64.zip" -OutFile $downloaded_tipi_zip
$install_source_l = "file://$downloaded_tipi_zip"
$Env:TIPI_INSTALL_SOURCE = $install_source_l
echo "[INFO] Expecting installer to 'download' from path $install_source_l"
$output = . { iwr -useb https://raw.githubusercontent.com/tipi-build/cli/${{ steps.compute-script-source.outputs.SCRIPT_SOURCE }}/install/install_for_windows.ps1 } | iex
echo $output
if (!($output -like "*$install_source_l*")) {
echo "::set-output name=exit_status::$?"
echo "[FAILED] didn't find expected string '$install_source_l' in the output of the install script"
exit 1
}
$output = tipi --help --dont-upgrade
echo $output
if (!($output -like "*v0.0.30*")) {
echo "::set-output name=exit_status::$?"
echo "[FAILED] Expected to find tipi 'v0.0.30'"
exit 1
}
- name: Neg test TIPI_INSTALL_SOURCE feature
shell: powershell
run: |
echo "[TESTING] Negative test for TIPI_INSTALL_SOURCE"
del ${{ steps.base_sys_install.outputs.EXPECTED_INSTALL_FOLDER }}
try {
get-command tipi
echo "[FAILED] tipi still found on path"
exit 1
}
catch {
echo "[SUCCES] tipi forcefully removed from the system"
}
$Env:TIPI_INSTALL_SOURCE = "file://c:/temp/doesMostProbablyNote.exist"
try {
. { iwr -useb https://raw.githubusercontent.com/tipi-build/cli/${{ steps.compute-script-source.outputs.SCRIPT_SOURCE }}/install/install_for_windows.ps1 } | iex
}
catch {
echo "[SUCCES] installer failed on erroneous path"
}
try {
get-command tipi
echo "[FAILED] tipi still found on path"
exit 1
}
catch {
echo "[SUCCES] tipi forcefully removed from the system"
}
install-windows-powershell-light:
name: install-windows-powershell-light
runs-on: windows-latest
steps:
- name: test_install_on_windows_powershell
run: |
if ($env:GITHUB_EVENT_NAME -eq "pull_request") {
$script_source = $env:GITHUB_HEAD_REF.replace('refs/heads/', '')
} else {
$script_source = $env:GITHUB_REF.replace('refs/heads/', '')
}
. { iwr -useb https://raw.githubusercontent.com/tipi-build/cli/$script_source/install/install_for_windows.ps1 } | iex
if (!($?)) {exit 1}
# Test install succeeeded
$expected_install_folder = Join-Path -Path ([Environment]::GetFolderPath('LocalApplicationData')) -ChildPath "\tipi\tipi.exe"
$expected_install_folder_cmake_re = Join-Path -Path ([Environment]::GetFolderPath('LocalApplicationData')) -ChildPath "\tipi\cmake-re.exe"
$pathsToTest = @(
$expected_install_folder
$expected_install_folder_cmake_re
"C:\.tipi\environments\*\linux.cmake"
"C:\.tipi\openssh\*\ssh.exe"
)
$success = $true
# this checks that tipi is on PATH and that it's where we expect it to be.
$success = (get-command tipi).Path -eq $expected_install_folder
foreach ( $testPath in $pathsToTest )
{
if (!(Test-Path $testPath -PathType leaf)) {
echo "[FAIL] Expected <$testPath> was not found in installation."
$success = $false;
}
}
# test just a few things in the light install to make sure they are *NOT* present
$pathsToTest_negative = @(
"C:\.tipi\clang\*\bin\clang.exe"
"C:\.tipi\emsdk\*\emsdk.bat"
"C:\.tipi\go\*\bin\go.exe"
"C:\.tipi\jdk\*\bin\jar.exe"
)
foreach ( $testPath in $pathsToTest_negative )
{
if (Test-Path $testPath -PathType leaf) {
echo "[FAIL] Unexpected <$testPath> was found in installation."
$success = $false;
}
}
if(!$success) { exit 1; }
shell: powershell
install-archlinux-full:
name: install-archlinux-full
runs-on: ubuntu-latest
env:
GITHUB_EVENT_NAME: $GITHUB_EVENT_NAME
GITHUB_HEAD_REF: $GITHUB_HEAD_REF
GITHUB_REF: $GITHUB_REF
container:
image: archlinux
steps:
- name: test_install_on_linux
continue-on-error: true
run: |
if [ $GITHUB_EVENT_NAME = "pull_request" ]; then
script_source=${GITHUB_HEAD_REF}
else
script_source=${GITHUB_REF#refs/heads/}
fi
echo "Script source : ${script_source}"
export TIPI_DISTRO_MODE=all
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/tipi-build/cli/${script_source}/install/install_for_macos_linux.sh)"
# Test install succeeeded
pathsToTest=(/usr/local/bin/tipi
/usr/local/bin/cmake-re
/usr/local/share/.tipi/clang/*/bin/clang
/usr/local/share/.tipi/cmake/*/bin/cmake
/usr/local/share/.tipi/emsdk/*/emsdk
/usr/local/share/.tipi/environments/*/linux.cmake
/usr/local/share/.tipi/go/*/bin/go
/usr/local/share/.tipi/jdk/*/bin/jar
/usr/local/share/.tipi/nodejs/*/bin/node
/usr/local/share/.tipi/openapi/*/openapi-generator-cli-5.1.1.jar
/usr/local/share/.tipi/openapi-generator-script/*/openapi-generator-cli)
for element in "${pathsToTest[@]}"
do
echo "[TESTING] $element should be on disk."
test -f $element
done
install-archlinux-light:
name: install-archlinux-light
runs-on: ubuntu-latest
env:
GITHUB_EVENT_NAME: $GITHUB_EVENT_NAME
GITHUB_HEAD_REF: $GITHUB_HEAD_REF
GITHUB_REF: $GITHUB_REF
container:
image: archlinux
steps:
- name: test_install_on_linux
continue-on-error: true
run: |
if [ $GITHUB_EVENT_NAME = "pull_request" ]; then
script_source=${GITHUB_HEAD_REF}
else
script_source=${GITHUB_REF#refs/heads/}
fi
echo "Script source : ${script_source}"
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/tipi-build/cli/${script_source}/install/install_for_macos_linux.sh)"
# Test install succeeeded
pathsToTest=(/usr/local/bin/tipi
/usr/local/share/.tipi/environments/*/linux.cmake)
for element in "${pathsToTest[@]}"
do
echo "[TESTING] $element should be on disk."
test -f $element
done
pathsToTest_negative=(~/.tipi/clang/*/bin/clang
/usr/local/share/.tipi/emsdk/*/emsdk
/usr/local/share/.tipi/go/*/bin/go
/usr/local/share/.tipi/jdk/*/bin/jar)
for element in "${pathsToTest_negative[@]}"
do
echo "[TESTING] $element should be NOT on disk."
test ! -f $element
done
install-AlmaLinux-full:
name: install-AlmaLinux-full
runs-on: ubuntu-latest
env:
GITHUB_EVENT_NAME: $GITHUB_EVENT_NAME
GITHUB_HEAD_REF: $GITHUB_HEAD_REF
GITHUB_REF: $GITHUB_REF
container:
image: almalinux:8.10
steps:
- name: test_install_on_linux
continue-on-error: true
run: |
if [ $GITHUB_EVENT_NAME = "pull_request" ]; then
script_source=${GITHUB_HEAD_REF}
else
script_source=${GITHUB_REF#refs/heads/}
fi
echo "Script source : ${script_source}"
export TIPI_DISTRO_MODE=all
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/tipi-build/cli/${script_source}/install/install_for_macos_linux.sh)"
# Test install succeeeded
pathsToTest=(/usr/local/bin/tipi
/usr/local/bin/cmake-re
/usr/local/share/.tipi/clang/*/bin/clang
/usr/local/share/.tipi/cmake/*/bin/cmake
/usr/local/share/.tipi/emsdk/*/emsdk
/usr/local/share/.tipi/environments/*/linux.cmake
/usr/local/share/.tipi/go/*/bin/go
/usr/local/share/.tipi/jdk/*/bin/jar
/usr/local/share/.tipi/nodejs/*/bin/node
/usr/local/share/.tipi/openapi/*/openapi-generator-cli-5.1.1.jar
/usr/local/share/.tipi/openapi-generator-script/*/openapi-generator-cli)
for element in "${pathsToTest[@]}"
do
echo "[TESTING] $element should be on disk."
test -f $element
done
install-AlmaLinux-light:
name: install-AlmaLinux-light
runs-on: ubuntu-latest
env:
GITHUB_EVENT_NAME: $GITHUB_EVENT_NAME
GITHUB_HEAD_REF: $GITHUB_HEAD_REF
GITHUB_REF: $GITHUB_REF
container:
image: almalinux:8.10
steps:
- name: test_install_on_linux
run: |
if [ $GITHUB_EVENT_NAME = "pull_request" ]; then
script_source=${GITHUB_HEAD_REF}
else
script_source=${GITHUB_REF#refs/heads/}
fi
echo "Script source : ${script_source}"
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/tipi-build/cli/${script_source}/install/install_for_macos_linux.sh)"
# Test install succeeeded
pathsToTest=(/usr/local/bin/tipi
/usr/local/bin/cmake-re
/usr/local/share/.tipi/environments/*/linux.cmake)
for element in "${pathsToTest[@]}"
do
echo "[TESTING] $element should be on disk."
test -f $element
done
pathsToTest_negative=(~/.tipi/clang/*/bin/clang
/usr/local/share/.tipi/emsdk/*/emsdk
/usr/local/share/.tipi/go/*/bin/go
/usr/local/share/.tipi/jdk/*/bin/jar)
for element in "${pathsToTest_negative[@]}"
do
echo "[TESTING] $element should be NOT on disk."
test ! -f $element
done