mirror of
https://github.com/harness/drone.git
synced 2025-05-03 19:01:34 +08:00
102 lines
3.0 KiB
Bash
Executable File
102 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
echo "get the conformance testing code..."
|
|
git clone https://github.com/opencontainers/distribution-spec.git
|
|
|
|
function createSpace {
|
|
echo "Creating space... $2"
|
|
curl --location --request POST "http://$1/api/v1/spaces" \
|
|
--header 'Content-Type: application/json' \
|
|
--header 'Authorization: Bearer '"$3" \
|
|
--header 'Accept: application/json' \
|
|
--data "{\"description\": \"corformance test\", \"identifier\": \"$2\",\"is_public\": true, \"parent_ref\": \"\"}"
|
|
}
|
|
|
|
|
|
function createRegistry {
|
|
echo "Creating registry: $2"
|
|
curl --location "http://$1/api/v1/registry" \
|
|
--header 'Content-Type: application/json' \
|
|
--header 'Authorization: Bearer '"$4" \
|
|
--header 'Accept: application/json' \
|
|
--data "{\"config\":{\"type\": \"VIRTUAL\"}, \"description\": \"mydesc\", \"identifier\": \"$2\", \"packageType\": \"DOCKER\",\"parentRef\": \"$3\"}"
|
|
}
|
|
|
|
function login {
|
|
# Define the URL and request payload
|
|
url="http://$1/api/v1/login?include_cookie=false"
|
|
payload='{
|
|
"login_identifier": "admin",
|
|
"password": "changeit"
|
|
}'
|
|
|
|
# Make the curl call and capture the response
|
|
response=$(curl -s -X 'POST' "$url" -H 'accept: application/json' -H 'Content-Type: application/json' -d "$payload")
|
|
|
|
# Extract the access_token using jq
|
|
access_token=$(echo "$response" | jq -r '.access_token')
|
|
|
|
# Check if jq command succeeded
|
|
if [ $? -ne 0 ]; then
|
|
echo "Failed to parse access_token"
|
|
exit 1
|
|
fi
|
|
|
|
# Print the access_token
|
|
# echo "Access Token: $access_token"
|
|
echo "$access_token"
|
|
}
|
|
|
|
function getPat {
|
|
# Define the URL and request payload
|
|
url="http://$1/api/v1/user/tokens"
|
|
payload="{\"uid\":\"code_token_$2\"}"
|
|
|
|
# Make the curl call and capture the response
|
|
response=$(curl -s -X 'POST' "$url" -H 'accept: application/json' -H 'Content-Type: application/json' -H 'Cookie: token='"$3" -d "$payload")
|
|
|
|
# Extract the access_token using jq
|
|
access_token=$(echo "$response" | jq -r '.access_token')
|
|
|
|
# Check if jq command succeeded
|
|
if [ $? -ne 0 ]; then
|
|
echo "Failed to parse access_token"
|
|
exit 1
|
|
fi
|
|
|
|
# Print the access_token
|
|
# echo "Access Token: $access_token"
|
|
echo "$access_token"
|
|
}
|
|
|
|
|
|
epoch=$(date +%s)
|
|
|
|
space="Space_$epoch"
|
|
space_lower=$(echo $space | tr '[:upper:]' '[:lower:]')
|
|
conformance="conformance_$epoch"
|
|
crossmount="crossmount_$epoch"
|
|
|
|
token=$(login $1)
|
|
pat=$(getPat $1 $epoch $token)
|
|
createSpace $1 $space $token
|
|
createRegistry $1 $conformance $space $token
|
|
createRegistry $1 $crossmount $space $token
|
|
|
|
echo "run conformance test..."
|
|
export OCI_ROOT_URL="http://$1"
|
|
export OCI_NAMESPACE="$space_lower/$conformance/testrepo"
|
|
export OCI_DEBUG="true"
|
|
|
|
export OCI_TEST_PUSH=1
|
|
export OCI_TEST_PULL=1
|
|
export OCI_TEST_CONTENT_DISCOVERY=1
|
|
export OCI_TEST_CONTENT_MANAGEMENT=1
|
|
export OCI_CROSSMOUNT_NAMESPACE="$space_lower/$crossmount/testrepo"
|
|
export OCI_AUTOMATIC_CROSSMOUNT="false"
|
|
|
|
export OCI_USERNAME="admin"
|
|
export OCI_PASSWORD="$pat"
|
|
cd ./distribution-spec/conformance
|
|
go test . |