From 28e704974e6a4a4cf9ade8d1898a5df49fc62734 Mon Sep 17 00:00:00 2001 From: tarilabs Date: Sat, 10 Aug 2024 21:29:31 +0200 Subject: [PATCH 1/4] e2e: add Quay -lite end to end testing Signed-off-by: tarilabs --- .github/workflows/e2e.yaml | 33 +++++ e2e/deploy_quay_lite.sh | 118 ++++++++++++++++ e2e/quay-lite/README.md | 2 + e2e/quay-lite/config.yaml | 80 +++++++++++ e2e/quay-lite/quay-all-in-one.yaml | 209 +++++++++++++++++++++++++++++ e2e/quay-lite/quay-app-config.yaml | 7 + tests/conftest.py | 2 +- 7 files changed, 450 insertions(+), 1 deletion(-) create mode 100755 e2e/deploy_quay_lite.sh create mode 100644 e2e/quay-lite/README.md create mode 100644 e2e/quay-lite/config.yaml create mode 100644 e2e/quay-lite/quay-all-in-one.yaml create mode 100644 e2e/quay-lite/quay-app-config.yaml diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index 3acf5c2..b50208d 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -60,3 +60,36 @@ jobs: - name: Run E2E tests run: | make test-e2e + e2e-quay-lite: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.9' + - name: Install Poetry + run: | + pipx install poetry + - name: Install dependencies + run: | + make install + - name: Install ORAS (using it for login) # https://oras.land/docs/installation#linux + run: | + VERSION="1.2.0" + curl -LO "https://github.com/oras-project/oras/releases/download/v${VERSION}/oras_${VERSION}_linux_amd64.tar.gz" + mkdir -p oras-install/ + tar -zxf oras_${VERSION}_*.tar.gz -C oras-install/ + sudo mv oras-install/oras /usr/local/bin/ + rm -rf oras_${VERSION}_*.tar.gz oras-install/ + - name: Start Kind Cluster + uses: helm/kind-action@v1 + with: + cluster_name: kind + - name: Start Quay-lite + run: | + ./e2e/deploy_quay_lite.sh + - name: Run E2E tests + run: | + make test-e2e diff --git a/e2e/deploy_quay_lite.sh b/e2e/deploy_quay_lite.sh new file mode 100755 index 0000000..2feb02f --- /dev/null +++ b/e2e/deploy_quay_lite.sh @@ -0,0 +1,118 @@ +#!/bin/bash + +SCRIPT_DIR="$(dirname "$(realpath "$BASH_SOURCE")")" +set -e + +ALLOW_OPTION="--force-login" +if [[ "$1" != "$ALLOW_OPTION" ]] && jq -e '.auths["localhost:5001"]' ~/.docker/config.json > /dev/null 2>&1; then + echo "Error: Entry for 'auths.localhost:5001' found in ~/.docker/config.json. You can use '$ALLOW_OPTION' to by-pass this check." + exit 1 +else + echo "No entry for localhost:5001 in ~/.docker/config.json, or bypassing check with '$ALLOW_OPTION'." +fi + +echo "Deploying quay K8s Secret with config.yaml ..." +FILE_NAME="config.yaml" +SECRET_NAME="quay-app-config" +ENCODED_CONTENT=$(base64 -i "$SCRIPT_DIR/quay-lite/$FILE_NAME") +cat < "$SCRIPT_DIR/quay-lite/$SECRET_NAME.yaml" +apiVersion: v1 +kind: Secret +metadata: + name: $SECRET_NAME +type: Opaque +data: + $(basename $FILE_NAME): $ENCODED_CONTENT +EOF +kubectl apply -f "$SCRIPT_DIR/quay-lite/$SECRET_NAME.yaml" + +echo "Deploying quay-lite ..." +kubectl apply -f "$SCRIPT_DIR/quay-lite/quay-all-in-one.yaml" + +sleep 1 +kubectl get deployments + +echo "Waiting for Deployment (this will take a while)..." +kubectl wait --for=condition=available deployment/quay-app --timeout=5m +kubectl logs deployment/quay-app +echo "Deployment looks ready." + +echo "Trying port-fwd until successfull (this will take a while)..." +while true; do + echo "Starting port-forward..." + kubectl port-forward service/quay-app 5001:5001 & + PID=$! + sleep 2 + echo "I have launched port-forward in background with: $PID." + + response=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:5001 || true) # needed because in general we have `set -e` + + if [[ $response -ge 200 && $response -lt 300 ]]; then + echo "Service is up and running with response code: $response" + break + else + echo "Waiting for service to be available. Current response code: $response" + fi + + sleep 5 +done + +echo "Beginning quay admin user/initialize ..." +USER_INITALIZE=$(curl -X POST -k http://localhost:5001/api/v1/user/initialize -H 'Content-Type: application/json' --data '{ "username": "admin", "password": "quaypass12345", "email": "quayadmin@example.com", "access_token": true}') +echo $USER_INITALIZE +TOKEN=$(echo $USER_INITALIZE | jq -r ".access_token") +echo $TOKEN +if [[ -z "$TOKEN" ]]; then + echo "Error: Access token is null or empty." + exit 1 +fi + +echo "Creating testorgns organization namespace ..." +curl -X POST -k -H 'Content-Type: application/json' -H "Authorization: Bearer $TOKEN" http://localhost:5001/api/v1/organization/ --data '{"name": "testorgns", "email": "testorgns@example.com"}' + +echo "Preparing ml-model-artifact repository ..." +curl -X 'POST' \ + 'http://localhost:5001/api/v1/repository' \ + -H 'Content-Type: application/json' \ + -H "Authorization: Bearer $TOKEN" \ + -d '{ + "repository": "ml-model-artifact", + "visibility": "public", + "namespace": "testorgns", + "description": "string", + "repo_kind": "image" +}' + +echo "Preparing testuser quay user ..." +curl -X 'POST' \ + 'http://localhost:5001/api/v1/superuser/users/' \ + -H 'Content-Type: application/json' \ + -H "Authorization: Bearer $TOKEN" \ + -d '{ + "username": "testuser", + "email": "testuser" +}' +curl -X 'PUT' \ + 'http://localhost:5001/api/v1/superuser/users/testuser' \ + -H 'Content-Type: application/json' \ + -H "Authorization: Bearer $TOKEN" \ + -d '{ + "username": "testuser", + "email": "testuser", + "password": "quaypass12345" +}' + +echo "Granting testuser write access to testorgns/ml-model-artifact repository ..." +curl -X 'PUT' \ + 'http://localhost:5001/api/v1/repository/testorgns%2Fml-model-artifact/permissions/user/testuser' \ + -H 'Content-Type: application/json' \ + -H "Authorization: Bearer $TOKEN" \ + -d '{ + "role": "write" +}' + +echo "Executing oras login for testuser ..." +oras login localhost:5001 --plain-http --username testuser --password quaypass12345 + +echo "Current logins in ~/.docker/config.json :" +jq -r '.auths | keys[]' ~/.docker/config.json diff --git a/e2e/quay-lite/README.md b/e2e/quay-lite/README.md new file mode 100644 index 0000000..af62212 --- /dev/null +++ b/e2e/quay-lite/README.md @@ -0,0 +1,2 @@ +Quay is typically installed via Operator. +This is a variation on barebone quay-lite for the scope of this project. diff --git a/e2e/quay-lite/config.yaml b/e2e/quay-lite/config.yaml new file mode 100644 index 0000000..72fd8cc --- /dev/null +++ b/e2e/quay-lite/config.yaml @@ -0,0 +1,80 @@ +DATA_MODEL_CACHE_CONFIG: + engine: redis + redis_config: + primary: + host: quay-redis +SUPER_USERS: +- admin +- user1 +AUTHENTICATION_TYPE: Database +DB_URI: postgresql://quay:quay@quay-postgresql:5432/quay +BUILDLOGS_REDIS: + host: quay-redis + port: 6379 +USER_EVENTS_REDIS: + host: quay-redis + port: 6379 +BITTORRENT_FILENAME_PEPPER: 0ee18f90-5b6d-42d2-ab5e-ec9fcd846272 +DATABASE_SECRET_KEY: '30060361640793187613697366923211113205676925445650250274752125083971638376224' +DEFAULT_TAG_EXPIRATION: 2w +DISTRIBUTED_STORAGE_CONFIG: + default: + - LocalStorage + - storage_path: /datastorage/registry +DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: [] +DISTRIBUTED_STORAGE_PREFERENCE: +- default +ENTERPRISE_LOGO_URL: /static/img/quay-horizontal-color.svg +EXTERNAL_TLS_TERMINATION: true +FEATURE_ANONYMOUS_ACCESS: true +FEATURE_APP_REGISTRY: false +FEATURE_APP_SPECIFIC_TOKENS: true +FEATURE_BUILD_SUPPORT: false +FEATURE_CHANGE_TAG_EXPIRATION: true +FEATURE_DIRECT_LOGIN: true +FEATURE_MAILING: false +FEATURE_PARTIAL_USER_AUTOCOMPLETE: true +FEATURE_REPO_MIRROR: false +FEATURE_REQUIRE_TEAM_INVITE: true +FEATURE_RESTRICTED_V1_PUSH: false +FEATURE_SECURITY_NOTIFICATIONS: false +FEATURE_SECURITY_SCANNER: false +FEATURE_USERNAME_CONFIRMATION: true +FEATURE_USER_INITIALIZE: true +FEATURE_USER_CREATION: true +FEATURE_USER_LOG_ACCESS: true +FEATURE_PROXY_CACHE: true +GITHUB_LOGIN_CONFIG: {} +GITHUB_TRIGGER_CONFIG: {} +GITLAB_TRIGGER_KIND: {} +LOG_ARCHIVE_LOCATION: default +MAIL_DEFAULT_SENDER: admin@example.com +MAIL_PORT: 587 +MAIL_USE_TLS: true +PREFERRED_URL_SCHEME: http +REGISTRY_TITLE: Red Hat Quay LITE +REGISTRY_TITLE_SHORT: Red Hat Quay LITE +REPO_MIRROR_SERVER_HOSTNAME: null +REPO_MIRROR_TLS_VERIFY: true +SETUP_COMPLETE: true +SIGNING_ENGINE: gpg2 +TAG_EXPIRATION_OPTIONS: +- 0s +- 1d +- 1w +- 2w +- 4w +TEAM_RESYNC_STALE_TIME: 60m +TESTING: false +USERFILES_LOCATION: default +USERFILES_PATH: userfiles/ +USE_CDN: false +FEATURE_QUOTA_MANAGEMENT: True +SERVER_HOSTNAME: localhost:5001 +BROWSER_API_CALLS_XHR_ONLY: False +CORS_ORIGIN: + - "https://stage.foo.redhat.com:1337" + - "http://localhost:9000" +FEATURE_UI_V2: True +FEATURE_USER_METADATA: True +IGNORE_UNKNOWN_MEDIATYPES: True diff --git a/e2e/quay-lite/quay-all-in-one.yaml b/e2e/quay-lite/quay-all-in-one.yaml new file mode 100644 index 0000000..38632bf --- /dev/null +++ b/e2e/quay-lite/quay-all-in-one.yaml @@ -0,0 +1,209 @@ +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: quay-tmp +spec: + accessModes: + - ReadWriteOnce + volumeMode: Filesystem + resources: + requests: + storage: 1Gi +--- +apiVersion: v1 +data: + pg_bootstrap.sql: | + CREATE EXTENSION IF NOT EXISTS pg_trgm; +kind: ConfigMap +metadata: + creationTimestamp: null + name: quay-postgresql-postgresql-start +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: quay-postgresql +spec: + replicas: 1 + selector: + matchLabels: + app: quay-postgresql + template: + metadata: + labels: + app: quay-postgresql + spec: + containers: + - env: + - name: POSTGRES_USER + value: quay + - name: POSTGRES_PASSWORD + value: quay + - name: POSTGRES_DB + value: quay + image: docker.io/library/postgres:12.1 + name: postgresql + ports: + - containerPort: 5432 + resources: + requests: + cpu: 4m + memory: 40Mi + volumeMounts: + - name: postgresql-start + mountPath: /docker-entrypoint-initdb.d + volumes: + - name: postgresql-start + configMap: + name: quay-postgresql-postgresql-start +--- +apiVersion: v1 +kind: Service +metadata: + name: quay-postgresql +spec: + ports: + - port: 5432 + protocol: TCP + selector: + app: quay-postgresql +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: quay-redis +spec: + replicas: 1 + selector: + matchLabels: + app: quay-redis + template: + metadata: + labels: + app: quay-redis + spec: + containers: + - image: docker.io/library/redis:latest + name: redis + ports: + - containerPort: 6379 + resources: + requests: + cpu: 2m + memory: 10Mi +--- +apiVersion: v1 +kind: Service +metadata: + name: quay-redis +spec: + ports: + - port: 6379 + protocol: TCP + selector: + app: quay-redis +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: quay-app + annotations: + app.openshift.io/connects-to: | + [ + {"apiVersion":"apps/v1","kind":"Deployment","name":"quay-redis"}, + {"apiVersion":"apps/v1","kind":"Deployment","name":"quay-postgresql"} + ] +spec: + replicas: 1 + selector: + matchLabels: + app: quay-app + template: + metadata: + labels: + app: quay-app + spec: + containers: + # web + - image: quay.io/projectquay/quay:latest + env: + - name: QUAY_SERVICES + value: "gunicorn-web" + - name: WORKER_COUNT + value: "1" + - name: DEBUGLOG + value: "true" + name: web + ports: + - containerPort: 8080 + volumeMounts: + - name: config + mountPath: /quay-registry/conf/stack + - name: tmp + mountPath: /tmp + # registry + - image: quay.io/projectquay/quay:latest + env: + - name: QUAY_SERVICES + value: "gunicorn-registry" + - name: WORKER_COUNT + value: "1" + - name: DEBUGLOG + value: "true" + name: registry + ports: + - containerPort: 8080 + volumeMounts: + - name: config + mountPath: /quay-registry/conf/stack + - name: tmp + mountPath: /tmp + # nginx and pushgateway + - image: quay.io/projectquay/quay:latest + env: + - name: QUAY_SERVICES + value: "nginx,pushgateway" + - name: WORKER_COUNT + value: "1" + - name: DEBUGLOG + value: "true" + name: nginx + volumeMounts: + - name: config + mountPath: /quay-registry/conf/stack + - name: tmp + mountPath: /tmp + volumes: + - name: config + secret: + secretName: quay-app-config + - name: tmp + persistentVolumeClaim: + claimName: quay-tmp +--- +apiVersion: v1 +kind: Service +metadata: + name: quay-app +spec: + ports: + - port: 5001 # used in config.yaml + targetPort: 8080 + protocol: TCP + selector: + app: quay-app +# --- +# kind: Route +# apiVersion: route.openshift.io/v1 +# metadata: +# name: quay +# spec: +# to: +# kind: Service +# name: quay-app +# weight: 100 +# tls: +# termination: edge +# insecureEdgeTerminationPolicy: Redirect +# wildcardPolicy: None diff --git a/e2e/quay-lite/quay-app-config.yaml b/e2e/quay-lite/quay-app-config.yaml new file mode 100644 index 0000000..293a324 --- /dev/null +++ b/e2e/quay-lite/quay-app-config.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: Secret +metadata: + name: quay-app-config +type: Opaque +data: + config.yaml: REFUQV9NT0RFTF9DQUNIRV9DT05GSUc6CiAgZW5naW5lOiByZWRpcwogIHJlZGlzX2NvbmZpZzoKICAgIHByaW1hcnk6CiAgICAgIGhvc3Q6IHF1YXktcmVkaXMKU1VQRVJfVVNFUlM6Ci0gYWRtaW4KLSB1c2VyMQpBVVRIRU5USUNBVElPTl9UWVBFOiBEYXRhYmFzZQpEQl9VUkk6IHBvc3RncmVzcWw6Ly9xdWF5OnF1YXlAcXVheS1wb3N0Z3Jlc3FsOjU0MzIvcXVheQpCVUlMRExPR1NfUkVESVM6CiAgaG9zdDogcXVheS1yZWRpcwogIHBvcnQ6IDYzNzkKVVNFUl9FVkVOVFNfUkVESVM6CiAgaG9zdDogcXVheS1yZWRpcwogIHBvcnQ6IDYzNzkKQklUVE9SUkVOVF9GSUxFTkFNRV9QRVBQRVI6IDBlZTE4ZjkwLTViNmQtNDJkMi1hYjVlLWVjOWZjZDg0NjI3MgpEQVRBQkFTRV9TRUNSRVRfS0VZOiAnMzAwNjAzNjE2NDA3OTMxODc2MTM2OTczNjY5MjMyMTExMTMyMDU2NzY5MjU0NDU2NTAyNTAyNzQ3NTIxMjUwODM5NzE2MzgzNzYyMjQnCkRFRkFVTFRfVEFHX0VYUElSQVRJT046IDJ3CkRJU1RSSUJVVEVEX1NUT1JBR0VfQ09ORklHOgogIGRlZmF1bHQ6CiAgLSBMb2NhbFN0b3JhZ2UKICAtIHN0b3JhZ2VfcGF0aDogL2RhdGFzdG9yYWdlL3JlZ2lzdHJ5CkRJU1RSSUJVVEVEX1NUT1JBR0VfREVGQVVMVF9MT0NBVElPTlM6IFtdCkRJU1RSSUJVVEVEX1NUT1JBR0VfUFJFRkVSRU5DRToKLSBkZWZhdWx0CkVOVEVSUFJJU0VfTE9HT19VUkw6IC9zdGF0aWMvaW1nL3F1YXktaG9yaXpvbnRhbC1jb2xvci5zdmcKRVhURVJOQUxfVExTX1RFUk1JTkFUSU9OOiB0cnVlCkZFQVRVUkVfQU5PTllNT1VTX0FDQ0VTUzogdHJ1ZQpGRUFUVVJFX0FQUF9SRUdJU1RSWTogZmFsc2UKRkVBVFVSRV9BUFBfU1BFQ0lGSUNfVE9LRU5TOiB0cnVlCkZFQVRVUkVfQlVJTERfU1VQUE9SVDogZmFsc2UKRkVBVFVSRV9DSEFOR0VfVEFHX0VYUElSQVRJT046IHRydWUKRkVBVFVSRV9ESVJFQ1RfTE9HSU46IHRydWUKRkVBVFVSRV9NQUlMSU5HOiBmYWxzZQpGRUFUVVJFX1BBUlRJQUxfVVNFUl9BVVRPQ09NUExFVEU6IHRydWUKRkVBVFVSRV9SRVBPX01JUlJPUjogZmFsc2UKRkVBVFVSRV9SRVFVSVJFX1RFQU1fSU5WSVRFOiB0cnVlCkZFQVRVUkVfUkVTVFJJQ1RFRF9WMV9QVVNIOiBmYWxzZQpGRUFUVVJFX1NFQ1VSSVRZX05PVElGSUNBVElPTlM6IGZhbHNlCkZFQVRVUkVfU0VDVVJJVFlfU0NBTk5FUjogZmFsc2UKRkVBVFVSRV9VU0VSTkFNRV9DT05GSVJNQVRJT046IHRydWUKRkVBVFVSRV9VU0VSX0lOSVRJQUxJWkU6IHRydWUKRkVBVFVSRV9VU0VSX0NSRUFUSU9OOiB0cnVlCkZFQVRVUkVfVVNFUl9MT0dfQUNDRVNTOiB0cnVlCkZFQVRVUkVfUFJPWFlfQ0FDSEU6IHRydWUKR0lUSFVCX0xPR0lOX0NPTkZJRzoge30KR0lUSFVCX1RSSUdHRVJfQ09ORklHOiB7fQpHSVRMQUJfVFJJR0dFUl9LSU5EOiB7fQpMT0dfQVJDSElWRV9MT0NBVElPTjogZGVmYXVsdApNQUlMX0RFRkFVTFRfU0VOREVSOiBhZG1pbkBleGFtcGxlLmNvbQpNQUlMX1BPUlQ6IDU4NwpNQUlMX1VTRV9UTFM6IHRydWUKUFJFRkVSUkVEX1VSTF9TQ0hFTUU6IGh0dHAKUkVHSVNUUllfVElUTEU6IFJlZCBIYXQgUXVheSBMSVRFClJFR0lTVFJZX1RJVExFX1NIT1JUOiBSZWQgSGF0IFF1YXkgTElURQpSRVBPX01JUlJPUl9TRVJWRVJfSE9TVE5BTUU6IG51bGwKUkVQT19NSVJST1JfVExTX1ZFUklGWTogdHJ1ZQpTRVRVUF9DT01QTEVURTogdHJ1ZQpTSUdOSU5HX0VOR0lORTogZ3BnMgpUQUdfRVhQSVJBVElPTl9PUFRJT05TOgotIDBzCi0gMWQKLSAxdwotIDJ3Ci0gNHcKVEVBTV9SRVNZTkNfU1RBTEVfVElNRTogNjBtClRFU1RJTkc6IGZhbHNlClVTRVJGSUxFU19MT0NBVElPTjogZGVmYXVsdApVU0VSRklMRVNfUEFUSDogdXNlcmZpbGVzLwpVU0VfQ0ROOiBmYWxzZQpGRUFUVVJFX1FVT1RBX01BTkFHRU1FTlQ6IFRydWUKU0VSVkVSX0hPU1ROQU1FOiBsb2NhbGhvc3Q6NTAwMQpCUk9XU0VSX0FQSV9DQUxMU19YSFJfT05MWTogRmFsc2UKQ09SU19PUklHSU46CiAgLSAiaHR0cHM6Ly9zdGFnZS5mb28ucmVkaGF0LmNvbToxMzM3IgogIC0gImh0dHA6Ly9sb2NhbGhvc3Q6OTAwMCIKRkVBVFVSRV9VSV9WMjogVHJ1ZQpGRUFUVVJFX1VTRVJfTUVUQURBVEE6IFRydWUKSUdOT1JFX1VOS05PV05fTUVESUFUWVBFUzogVHJ1ZQo= diff --git a/tests/conftest.py b/tests/conftest.py index 7ba656f..8d7e50c 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -22,5 +22,5 @@ def pytest_addoption(parser): @pytest.fixture def target() -> str: - return "localhost:5001/mmortari/mlartifact:v1" + return "localhost:5001/testorgns/ml-model-artifact:v1" From 805290e668424c298a7e68ba0c6baca5112e4199 Mon Sep 17 00:00:00 2001 From: tarilabs Date: Sat, 10 Aug 2024 21:40:59 +0200 Subject: [PATCH 2/4] display K8s config.yaml for quay Signed-off-by: tarilabs --- e2e/deploy_quay_lite.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/e2e/deploy_quay_lite.sh b/e2e/deploy_quay_lite.sh index 2feb02f..993c145 100755 --- a/e2e/deploy_quay_lite.sh +++ b/e2e/deploy_quay_lite.sh @@ -14,6 +14,7 @@ fi echo "Deploying quay K8s Secret with config.yaml ..." FILE_NAME="config.yaml" SECRET_NAME="quay-app-config" +cat "$SCRIPT_DIR/quay-lite/$FILE_NAME" ENCODED_CONTENT=$(base64 -i "$SCRIPT_DIR/quay-lite/$FILE_NAME") cat < "$SCRIPT_DIR/quay-lite/$SECRET_NAME.yaml" apiVersion: v1 @@ -24,6 +25,7 @@ type: Opaque data: $(basename $FILE_NAME): $ENCODED_CONTENT EOF +cat "$SCRIPT_DIR/quay-lite/$SECRET_NAME.yaml" kubectl apply -f "$SCRIPT_DIR/quay-lite/$SECRET_NAME.yaml" echo "Deploying quay-lite ..." From b7a2fe2f66497b334620f2556df928d29a9dfe8d Mon Sep 17 00:00:00 2001 From: tarilabs Date: Sat, 10 Aug 2024 21:47:22 +0200 Subject: [PATCH 3/4] GHA: avoid return lines Signed-off-by: tarilabs --- e2e/deploy_quay_lite.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/deploy_quay_lite.sh b/e2e/deploy_quay_lite.sh index 993c145..e90b110 100755 --- a/e2e/deploy_quay_lite.sh +++ b/e2e/deploy_quay_lite.sh @@ -15,7 +15,7 @@ echo "Deploying quay K8s Secret with config.yaml ..." FILE_NAME="config.yaml" SECRET_NAME="quay-app-config" cat "$SCRIPT_DIR/quay-lite/$FILE_NAME" -ENCODED_CONTENT=$(base64 -i "$SCRIPT_DIR/quay-lite/$FILE_NAME") +ENCODED_CONTENT=$(base64 -i "$SCRIPT_DIR/quay-lite/$FILE_NAME" | tr -d '\n') # MacOSX and Linux instead of -w 0 Vs -b 0 cat < "$SCRIPT_DIR/quay-lite/$SECRET_NAME.yaml" apiVersion: v1 kind: Secret From 639e85b719ea842fc2bc88f02b0b65e939f50711 Mon Sep 17 00:00:00 2001 From: tarilabs Date: Sat, 10 Aug 2024 21:51:06 +0200 Subject: [PATCH 4/4] minor changes Signed-off-by: tarilabs --- .github/workflows/e2e.yaml | 1 + e2e/deploy_quay_lite.sh | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index b50208d..1257514 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -83,6 +83,7 @@ jobs: tar -zxf oras_${VERSION}_*.tar.gz -C oras-install/ sudo mv oras-install/oras /usr/local/bin/ rm -rf oras_${VERSION}_*.tar.gz oras-install/ + oras version - name: Start Kind Cluster uses: helm/kind-action@v1 with: diff --git a/e2e/deploy_quay_lite.sh b/e2e/deploy_quay_lite.sh index e90b110..0fcf7ba 100755 --- a/e2e/deploy_quay_lite.sh +++ b/e2e/deploy_quay_lite.sh @@ -14,7 +14,6 @@ fi echo "Deploying quay K8s Secret with config.yaml ..." FILE_NAME="config.yaml" SECRET_NAME="quay-app-config" -cat "$SCRIPT_DIR/quay-lite/$FILE_NAME" ENCODED_CONTENT=$(base64 -i "$SCRIPT_DIR/quay-lite/$FILE_NAME" | tr -d '\n') # MacOSX and Linux instead of -w 0 Vs -b 0 cat < "$SCRIPT_DIR/quay-lite/$SECRET_NAME.yaml" apiVersion: v1 @@ -25,7 +24,6 @@ type: Opaque data: $(basename $FILE_NAME): $ENCODED_CONTENT EOF -cat "$SCRIPT_DIR/quay-lite/$SECRET_NAME.yaml" kubectl apply -f "$SCRIPT_DIR/quay-lite/$SECRET_NAME.yaml" echo "Deploying quay-lite ..."