diff --git a/deploy/jenkins/Jenkinsfile.poll b/deploy/jenkins/Jenkinsfile.poll index 3f20983..cbcaa2d 100644 --- a/deploy/jenkins/Jenkinsfile.poll +++ b/deploy/jenkins/Jenkinsfile.poll @@ -98,32 +98,18 @@ pipeline { ]) { def services = sh( script: """ - python3 - <<'PYEOF' -import urllib.request, urllib.parse, json, sys, base64 - -registry = "${HARBOR_API}" -project = "${params.HARBOR_PROJECT}" -user = "${env.HARBOR_USER}" -passwd = "${env.HARBOR_PASS}" - -params = urllib.parse.urlencode({"page_size": 100}) -url = f"{registry}/projects/{project}/repositories?{params}" - -req = urllib.request.Request(url) -creds = base64.b64encode(f"{user}:{passwd}".encode()).decode() -req.add_header("Authorization", f"Basic {creds}") - -try: - with urllib.request.urlopen(req, timeout=30) as resp: - repos = json.loads(resp.read()) - if not isinstance(repos, list): - sys.exit(1) - names = [r["name"].split("/")[-1] for r in repos] - print(",".join(sorted(names))) -except Exception as e: - print(f"ERROR: {e}", file=sys.stderr) - sys.exit(1) -PYEOF + curl -sf -u "\${HARBOR_USER}:\${HARBOR_PASS}" \\ + --connect-timeout 10 --max-time 30 \\ + --get --data-urlencode "page_size=100" \\ + "${HARBOR_API}/projects/${params.HARBOR_PROJECT}/repositories" \\ + | tr ',' '\\n' \\ + | grep '"name"' \\ + | sed 's/.*"name":"//' \\ + | sed 's/".*//' \\ + | sed 's|.*/||' \\ + | sort \\ + | tr '\\n' ',' \\ + | sed 's/,\$//' """, returnStdout: true ).trim() @@ -159,29 +145,15 @@ PYEOF def digestResult = sh( script: """ - python3 - <<'PYEOF' -import urllib.request, json, sys, base64 - -registry = "${HARBOR_API}" -project = "${params.HARBOR_PROJECT}" -svc = "${svc}" -tag = "${params.IMAGE_TAG}" -user = "${env.HARBOR_USER}" -passwd = "${env.HARBOR_PASS}" - -url = f"{registry}/projects/{project}/repositories/{svc}/artifacts/{tag}" -req = urllib.request.Request(url) -creds = base64.b64encode(f"{user}:{passwd}".encode()).decode() -req.add_header("Authorization", f"Basic {creds}") - -try: - with urllib.request.urlopen(req, timeout=30) as resp: - data = json.loads(resp.read()) - print(data.get("digest", "")) -except Exception as e: - print(f"ERROR: {e}", file=sys.stderr) - sys.exit(0) -PYEOF + curl -sf -u "\${HARBOR_USER}:\${HARBOR_PASS}" \\ + --connect-timeout 10 --max-time 30 \\ + "${HARBOR_API}/projects/${params.HARBOR_PROJECT}/repositories/${svc}/artifacts/${params.IMAGE_TAG}" \\ + | tr ',' '\\n' \\ + | grep '"digest"' \\ + | head -1 \\ + | sed 's/.*"digest":"//' \\ + | sed 's/".*//' \\ + || true """, returnStdout: true ).trim()