Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix CI errors #1318

Merged
merged 1 commit into from
Aug 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .ci/scripts/backup_and_restore.sh
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,12 @@ base_url = "$BASE_ADDR"
api_root = "$API_ROOT"
verify_ssl = false
format = "json"
username = "admin"
password = "password"
EOF
fi

cat ~/.config/pulp/cli.toml | tee ~/.config/pulp/settings.toml
cat ~/.config/pulp/cli.toml

pulp content list
CONTENT_LENGTH=$(pulp content list | jq length)
Expand Down
3 changes: 3 additions & 0 deletions .ci/scripts/pulp_ansible/distribution_repo.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Distributions are created asynchronously. Create one, and specify the repository that will
# be served at the base path specified.
pulp ansible distribution create --name "baz" --base-path "my_content" --repository "foo"
3 changes: 3 additions & 0 deletions .ci/scripts/pulp_ansible/distribution_repo_version.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Distributions are created asynchronously. Create one, and specify the repository version that will
# be served at the base path specified.
pulp ansible distribution create --name "bar" --base-path "some_content" --repository "foo" --version 0
17 changes: 17 additions & 0 deletions .ci/scripts/pulp_ansible/quickstart.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# This script will execute the component scripts and ensure that the documented examples
# work as expected.

# From the _scripts directory, run with `source quickstart.sh` (source to preserve the environment
# variables)
source setup.sh

echo "Role - Workflows"
source repo.sh
source distribution_repo.sh
source distribution_repo_version.sh
source remote.sh
source sync.sh

echo "Collection - Workflows"
source remote-collection.sh
source sync-collection.sh
8 changes: 8 additions & 0 deletions .ci/scripts/pulp_ansible/remote-collection-token.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Create a remote that syncs some versions of django into your repository.
pulp ansible remote -t "collection" create \
--name "abar" \
--auth-url "https://sso.qa.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token" \
--token "$ANSIBLE_TOKEN_AUTH" \
--tls-validation false \
--url "https://cloud.redhat.com/api/automation-hub/" \
--requirements $'collections:\n - testing.ansible_testing_content'
7 changes: 7 additions & 0 deletions .ci/scripts/pulp_ansible/remote-collection.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Create a remote that syncs some versions of django into your repository.
pulp ansible remote -t "collection" create \
--name "cbar" \
--url "https://galaxy-dev.ansible.com/" \
--requirements $'collections:\n - testing.ansible_testing_content'
# If requirements are in a file
# you can use the option '--requirements @<file_name>' instead.
2 changes: 2 additions & 0 deletions .ci/scripts/pulp_ansible/remote.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Create a remote that syncs some versions of django into your repository.
pulp ansible remote -t "role" create --name "bar" --url "https://galaxy.ansible.com/api/v1/roles/?owner__username=elastic"
2 changes: 2 additions & 0 deletions .ci/scripts/pulp_ansible/repo.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Start by creating a new repository named foo
pulp ansible repository create --name "foo"
23 changes: 23 additions & 0 deletions .ci/scripts/pulp_ansible/setup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/usr/bin/env bash
set -e

export BASE_ADDR=${BASE_ADDR:-http://pulp:80}

if [ -z "$(pip freeze | grep pulp-cli)" ]; then
echo "Installing pulp-cli"
pip install pulp-cli[pygments]
fi

# Set up CLI config file
if [ ! -f ~/.config/pulp/settings.toml ]; then
echo "Configuring pulp-cli"
mkdir -p ~/.config/pulp
cat > ~/.config/pulp/cli.toml << EOF
[cli]
base_url = "$BASE_ADDR"
verify_ssl = false
format = "json"
username = "admin"
password = "password"
EOF
fi
9 changes: 9 additions & 0 deletions .ci/scripts/pulp_ansible/sync-collection.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Sync repository foo using remote cbar
pulp ansible repository sync --name "foo" --remote "cbar"

# Use the -b option to have the sync task complete in the background
# e.g. pulp -b ansible repository sync --name "foo" --remote "cbar"

# After the task is complete, it gives us a new repository version
# Inspecting new repository version
pulp ansible repository version show --repository "foo"
9 changes: 9 additions & 0 deletions .ci/scripts/pulp_ansible/sync.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Sync repository foo using remote bar
pulp ansible repository sync --name "foo" --remote "role:bar"

# Use the -b option to have the sync task complete in the background
# e.g. pulp -b ansible repository sync --name "foo" --remote "bar"

# After the task is complete, it gives us a new repository version
# Inspecting new repository version
pulp ansible repository version show --repository "foo" --version 1
32 changes: 32 additions & 0 deletions .ci/scripts/pulp_container/base.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/usr/bin/env bash
echo "Setting environment variables for default hostname/port for the API and the Content app"
BASE_ADDR=${BASE_ADDR:-http://localhost:24817}
REGISTRY_ADDR=${BASE_ADDR#*//}

# Poll a Pulp task until it is finished.
wait_until_task_finished() {
echo "Polling the task until it has reached a final state."
local task_url=$1
local timeout=10
while [ "$timeout" -gt 0 ]
do
local response=$(http $task_url)
local state=$(jq -r .state <<< ${response})
jq . <<< "${response}" || exit 1
case ${state} in
failed|canceled)
echo "Task in final state: ${state}"
exit 1
;;
completed)
echo "$task_url complete."
break
;;
*)
echo "Still waiting..."
sleep 2
timeout=$(($timeout-1))
;;
esac
done
}
16 changes: 16 additions & 0 deletions .ci/scripts/pulp_container/build_containerfile.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/usr/bin/env bash

echo "Create a task that will build a container image from a Containerfile."

TASK_HREF=$(http --form POST :$REPO_HREF'build_image/' containerfile@./Containerfile \
artifacts="{\"$ARTIFACT_HREF\": \"foo/bar/example.txt\"}" | jq -r '.task')

# Poll the task (here we use a function defined in docs/_scripts/base.sh)
wait_until_task_finished $BASE_ADDR$TASK_HREF

# After the task is complete, it gives us a new repository version
echo "Set REPOVERSION_HREF from finished task."
REPOVERSION_HREF=$(http $BASE_ADDR$TASK_HREF| jq -r '.created_resources | first')

echo "Inspecting RepositoryVersion."
http $BASE_ADDR$REPOVERSION_HREF
5 changes: 5 additions & 0 deletions .ci/scripts/pulp_container/cleanup_export.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/usr/bin/env bash

# remove the repository and its content from the current filesystem
pulp container distribution destroy --name "test/fixture"
pulp orphan cleanup --protection-time 0
11 changes: 11 additions & 0 deletions .ci/scripts/pulp_container/create_containerfile.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/usr/bin/env bash

echo "Create a Containerfile that expects foo/bar/example.txt inside /pulp_working_directory."

echo 'FROM centos:7

# Copy a file using COPY statement. Use the relative path specified in the 'artifacts' parameter.
COPY foo/bar/example.txt /inside-image.txt

# Print the content of the file when the container starts
CMD ["cat", "/inside-image.txt"]' >> Containerfile
12 changes: 12 additions & 0 deletions .ci/scripts/pulp_container/create_example.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/usr/bin/env bash

echo "Create a text file and upload it to Pulp"

echo 'Hello world!' > example.txt

ARTIFACT_HREF=$(http --form POST http://localhost/pulp/api/v3/artifacts/ \
file@./example.txt \
| jq -r '.pulp_href')

echo "Inspecting new artifact."
http $BASE_ADDR$ARTIFACT_HREF
22 changes: 22 additions & 0 deletions .ci/scripts/pulp_container/distribution.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/usr/bin/env bash

DIST_NAME=$(head /dev/urandom | tr -dc a-z | head -c5)
DIST_BASE_PATH='test'

# Distributions are created asynchronously.
echo "Creating distribution \
(name=$DIST_NAME, base_path=$DIST_BASE_PATH repository=$REPO_HREF)."
TASK_HREF=$(http POST $BASE_ADDR/pulp/api/v3/distributions/container/container/ \
name=$DIST_NAME \
base_path=$DIST_BASE_PATH \
repository=$REPO_HREF | jq -r '.task')

# Poll the task (here we use a function defined in docs/_scripts/base.sh)
wait_until_task_finished $BASE_ADDR$TASK_HREF

echo "Setting DISTRIBUTION_HREF from the completed task."
# DISTRIBUTION_HREF is the pulp-api HREF, not the content app href
DISTRIBUTION_HREF=$(http $BASE_ADDR$TASK_HREF | jq -r '.created_resources | first')

echo "Inspecting Distribution."
http $BASE_ADDR$DISTRIBUTION_HREF
38 changes: 38 additions & 0 deletions .ci/scripts/pulp_container/docs_check.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/usr/bin/env bash
set -euv

# This script will execute the component scripts and ensure that the documented examples
# work as expected.

# From the _scripts directory, run with `source docs_check_sync_publish.sh` (source to preserve the
# environment variables)
source base.sh

# Check Sync
source repo.sh
source remote.sh
source sync.sh
source distribution.sh
source download_after_sync.sh

# Check add/remove
source second_repo.sh
source recursive_add_tag.sh
source recursive_remove_tag.sh

# Check Copy
source second_repo.sh
source manifest_copy.sh

source second_repo.sh
source tag_copy.sh

# Check tag/untag
source image_tagging.sh
source download_after_tagging.sh
source image_untagging.sh

# Check import/export
source export_repository.sh
source cleanup_export.sh
source import_repository.sh
11 changes: 11 additions & 0 deletions .ci/scripts/pulp_container/download_after_sync.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/usr/bin/env bash

CONTAINER_TAG='manifest_a'

echo "Setting REGISTRY_PATH, which can be used directly with the Docker Client."
REGISTRY_PATH=$(http $BASE_ADDR$DISTRIBUTION_HREF | jq -r '.registry_path')

echo "Next we pull and run the image from pulp"
echo "$REGISTRY_PATH:$CONTAINER_TAG"
sudo docker login -u admin -p password $REGISTRY_PATH
sudo docker run $REGISTRY_PATH:$CONTAINER_TAG
22 changes: 22 additions & 0 deletions .ci/scripts/pulp_container/download_after_tagging.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/usr/bin/env bash

TAG_NAME='custom_tag'

DIST_NAME=$(head /dev/urandom | tr -dc a-z | head -c5)
DIST_BASE_PATH='tag'

echo "Publishing the latest repository."
TASK_URL=$(http POST $BASE_ADDR/pulp/api/v3/distributions/container/container/ \
name=$DIST_NAME base_path=$DIST_BASE_PATH repository=$REPO_HREF \
| jq -r '.task')

wait_until_task_finished $BASE_ADDR$TASK_URL

DISTRIBUTION_HREF=$(http $BASE_ADDR$TASK_URL \
| jq -r '.created_resources | first')
REGISTRY_PATH=$(http $BASE_ADDR$DISTRIBUTION_HREF \
| jq -r '.registry_path')

echo "Running ${REGISTRY_PATH}:${TAG_NAME}."
sudo docker login -u admin -p password $REGISTRY_PATH
sudo docker run $REGISTRY_PATH:$TAG_NAME
20 changes: 20 additions & 0 deletions .ci/scripts/pulp_container/export_repository.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/usr/bin/env bash

podman pull ghcr.io/pulp/test-fixture-1:manifest_a

# push a tagged image to the registry
podman login ${REGISTRY_ADDR} -u admin -p password --tls-verify=false
podman tag ghcr.io/pulp/test-fixture-1:manifest_a \
${REGISTRY_ADDR}/test/fixture:manifest_a
podman push ${REGISTRY_ADDR}/test/fixture:manifest_a --tls-verify=false

# a repository of the push type is automatically created
REPOSITORY_HREF=$(pulp container repository -t push show \
--name "test/fixture" | jq -r ".pulp_href")

# export the repository to the directory '/tmp/exports/test-fixture'
EXPORTER_HREF=$(http ${BASE_ADDR}/pulp/api/v3/exporters/core/pulp/ \
name=both repositories:="[\"${REPOSITORY_HREF}\"]" \
path=/tmp/exports/test-fixture | jq -r ".pulp_href")
TASK_HREF=$(http POST ${BASE_ADDR}${EXPORTER_HREF}exports/ | jq -r ".task")
wait_until_task_finished ${BASE_ADDR}${TASK_HREF}
18 changes: 18 additions & 0 deletions .ci/scripts/pulp_container/image_tagging.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/usr/bin/env bash

TAG_NAME='custom_tag'
MANIFEST_DIGEST=$(http $BASE_ADDR'/pulp/api/v3/content/container/manifests/?repository_version='$REPOVERSION_HREF \
| jq -r '.results | first | .digest')

echo "Tagging the manifest."
TASK_URL=$(http POST $BASE_ADDR$REPO_HREF'tag/' tag=$TAG_NAME digest=$MANIFEST_DIGEST \
| jq -r '.task')

wait_until_task_finished $BASE_ADDR$TASK_URL

echo "Getting a reference to a newly created tag."
CREATED_TAG=$(http $BASE_ADDR$TASK_URL \
| jq -r '.created_resources | .[] | select(test("content"))')

echo "Display properties of the created tag."
http $BASE_ADDR$CREATED_TAG
18 changes: 18 additions & 0 deletions .ci/scripts/pulp_container/image_untagging.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/usr/bin/env bash

TAG_NAME='custom_tag'

echo "Untagging a manifest which is labeled with ${TAG_NAME}"
TASK_URL=$(http POST $BASE_ADDR$REPO_HREF'untag/' tag=$TAG_NAME \
| jq -r '.task')

wait_until_task_finished $BASE_ADDR$TASK_URL

echo "Getting a reference to all removed tags."
REPO_VERSION=$(http $BASE_ADDR$TASK_URL \
| jq -r '.created_resources | first')
REMOVED_TAGS=$(http $BASE_ADDR$REPO_VERSION \
| jq -r '.content_summary | .removed | ."container.tag" | .href')

echo "List removed tags from the latest repository version."
http $BASE_ADDR$REMOVED_TAGS
14 changes: 14 additions & 0 deletions .ci/scripts/pulp_container/import_repository.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/usr/bin/env bash

# create a repository with the same name as the exported one
http ${BASE_ADDR}/pulp/api/v3/repositories/container/container/ \
name="test/fixture" | jq -r ".pulp_href"

# import the exported repository stored in '/tmp/exports/test-fixture'
IMPORTER_HREF=$(http ${BASE_ADDR}/pulp/api/v3/importers/core/pulp/ \
name="test/fixture" | jq -r ".pulp_href")
EXPORTED_REPO_PATH=$(find "/tmp/exports/test-fixture" -type f -name \
"*.tar.gz" | head -n 1)
GROUP_HREF=$(http ${BASE_ADDR}${IMPORTER_HREF}imports/ \
path=${EXPORTED_REPO_PATH} | jq -r ".task_group")
echo ${BASE_ADDR}${GROUP_HREF}
15 changes: 15 additions & 0 deletions .ci/scripts/pulp_container/manifest_copy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/usr/bin/env bash

echo "Create a task to copy all manifests from source to destination repo."
TASK_HREF=$(http POST $BASE_ADDR$SECOND_REPO_HREF'copy_manifests/' \
source_repository=$REPO_HREF \
| jq -r '.task')

# Poll the task (here we use a function defined in docs/_scripts/base.sh)
wait_until_task_finished $BASE_ADDR$TASK_HREF

# After the task is complete, it gives us a new repository version
MANIFEST_COPY_VERSION=$(http $BASE_ADDR$TASK_HREF | jq -r '.created_resources | first')

echo "Inspect RepositoryVersion."
http $BASE_ADDR$MANIFEST_COPY_VERSION
19 changes: 19 additions & 0 deletions .ci/scripts/pulp_container/recursive_add_tag.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/usr/bin/env bash

echo "Retrieve the href of Tag manifest_a in the synced repository."
TAG_HREF=$(http $BASE_ADDR'/pulp/api/v3/content/container/tags/?repository_version='$REPOVERSION_HREF'&name=manifest_a' \
| jq -r '.results | first | .pulp_href')

echo "Create a task to recursively add a tag to the repo."
TASK_HREF=$(http POST $BASE_ADDR$SECOND_REPO_HREF'add/' \
content_units:="[\"$TAG_HREF\"]" \
| jq -r '.task')

# Poll the task (here we use a function defined in docs/_scripts/base.sh)
wait_until_task_finished $BASE_ADDR$TASK_HREF

# After the task is complete, it gives us a new repository version
ADDED_VERSION=$(http $BASE_ADDR$TASK_HREF| jq -r '.created_resources | first')

echo "Inspect RepositoryVersion."
http $BASE_ADDR$ADDED_VERSION
Loading
Loading