You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

215 lines
4.2 KiB

#!/bin/bash
set -e -u
set -o pipefail
export TMPDIR_ROOT=$(mktemp -d /tmp/artifactory-tests.XXXXXX)
trap "rm -rf $TMPDIR_ROOT" EXIT
if [ -d /opt/resource ]; then
resource_dir=/opt/resource
else
resource_dir=$(cd $(dirname $0)/../assets && pwd)
fi
run() {
export TMPDIR=$(mktemp -d ${TMPDIR_ROOT}/artifactory-tests.XXXXXX)
echo -e 'running \e[33m'"$@"$'\e[0m...'
eval "$@" 2>&1 | sed -e 's/^/ /g'
echo ""
}
find_primary_ip() {
ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'
}
find_docker_host_ip() {
/sbin/ip route | awk '/default/ { print $3 }'
}
create_version_file() {
local version=$1
local src=$2
mkdir $src/version
echo "$version" > $src/version/number
echo version/number
}
create_file() {
local src=$1
local file=$2
# Mock the artifact
mkdir $src/build-output
echo "Dummy File" > $src/build-output/$file
touch $src/build-output/$file
echo "$src/build-output/$file"
}
# CHECK
check_without_credentials_and_version() {
local endpoint=$1
local regex=$2
local folder=$3
local src=$4
jq -n "{
source: {
endpoint: $(echo $endpoint | jq -R .),
repository: $(echo $folder | jq -R .),
regex: $(echo $regex | jq -R .)
}
}" | $resource_dir/check "$src" | tee /dev/stderr
}
# CHECK
check_without_credentials_with_version() {
local endpoint=$1
local regex=$2
local folder=$3
local version=$4
local src=$5
jq -n "{
source: {
endpoint: $(echo $endpoint | jq -R .),
repository: $(echo $folder | jq -R .),
regex: $(echo $regex | jq -R .)
},
version: { version: $(echo $version| jq -R .)
}
}" | $resource_dir/check "$src" | tee /dev/stderr
}
# CHECK
check_with_credentials_with_version() {
local endpoint=$1
local regex=$2
local username=$3
local password=$4
local folder=$5
local version=$6
local src=$7
jq -n "{
source: {
endpoint: $(echo $endpoint | jq -R .),
repository: $(echo $folder | jq -R .),
regex: $(echo $regex | jq -R .),
username: $(echo $username | jq -R .),
password: $(echo $password | jq -R .)
},
version: { version: $(echo $version| jq -R .)
}
}" | $resource_dir/check "$src" | tee /dev/stderr
}
# IN
in_without_credentials_with_version() {
local endpoint=$1
local regex=$2
local folder=$3
local version=$4
local src=$5
jq -n "{
source: {
endpoint: $(echo $endpoint | jq -R .),
repository: $(echo $folder | jq -R .),
regex: $(echo $regex | jq -R .)
},
version: { version: $(echo $version| jq -R .)
}
}" | $resource_dir/in "$src" | tee /dev/stderr
}
# IN
in_with_credentials_with_version() {
local endpoint=$1
local regex=$2
local folder=$3
local version=$4
local src=$5
local username=$6
local password=$7
jq -n "{
source: {
endpoint: $(echo $endpoint | jq -R .),
username: $(echo $username | jq -R .),
password: $(echo $password | jq -R .),
repository: $(echo $folder | jq -R .),
regex: $(echo $regex | jq -R .)
},
version: { version: $(echo $version| jq -R .)
}
}" | $resource_dir/in "$src" | tee /dev/stderr
}
# OUT
deploy_without_credentials() {
local endpoint=$1
local regex=$2
local repository=$3
local file=$(create_file "$6" "$4")
local version=$5
local src=$6
local version_file=$(create_version_file "$version" "$src")
jq -n "{
params: {
file: $(echo $file | jq -R .),
version_file: $(echo $version_file | jq -R .)
},
source: {
endpoint: $(echo $endpoint | jq -R .),
repository: $(echo $repository | jq -R .),
regex: $(echo $regex | jq -R .)
}
}" | $resource_dir/out "$src" | tee /dev/stderr
}
# OUT
deploy_with_credentials() {
local endpoint=$1
local regex=$2
local repository=$3
local file=$(create_file "$6" "$4")
local version=$5
local src=$6
local username=$7
local password=$8
local version_file=$(create_version_file "$version" "$src")
cat <<EOF | $resource_dir/out "$src" | tee /dev/stderr
{
"params": {
"file": "$file",
"version_file": "$version_file"
},
"source": {
"endpoint": "$endpoint",
"repository": "$repository",
"username": "$username",
"password": "$password"
}
}
EOF
}