diff --git a/kubeflow-pipelines-visualization-server.yaml b/kubeflow-pipelines-visualization-server.yaml new file mode 100644 index 00000000000..67e071361eb --- /dev/null +++ b/kubeflow-pipelines-visualization-server.yaml @@ -0,0 +1,62 @@ +package: + name: kubeflow-pipelines-visualization-server + version: 2.0.5 + epoch: 0 + description: Machine Learning Pipelines for Kubeflow + copyright: + - license: Apache-2.0 + target-architecture: + - x86_64 # Since tensorflow-data-validation is not available for aaarch64 yet + dependencies: + runtime: + - py3.10-google-cloud-sdk + - python-3.10 + +environment: + contents: + packages: + - build-base + - busybox + - ca-certificates-bundle + - py3.10-crcmod + - py3.10-pip + - python-3.10 + - python-3.10-dev + +pipeline: + - uses: git-checkout + with: + repository: https://github.com/kubeflow/pipelines + tag: ${{package.version}} + expected-commit: c5658f09ec38e82730a8eca0a1aabf0876087eec + + - uses: patch + with: + patches: bump.patch + + - runs: | + ln -sf /usr/bin/python3.10 /usr/bin/python3 + mkdir -p ${{targets.destdir}}/usr/share/app + cp -r backend/src/apiserver/visualization/* ${{targets.destdir}}/usr/share/app/ + cd ${{targets.destdir}}/usr/share/app/ + + sed -i 's/tensorflow==/#tensorflow==/g' requirements.txt + + pip install --root=${{targets.destdir}} --prefix=/usr -r requirements.txt + find ${{targets.destdir}} -name "*.pyc" -exec rm -rf '{}' + + + # "collections" is deprecated in Python 3.10, use "collections.abc" instead + sed -i 's/collections/collections.abc/g' ${{targets.destdir}}/usr/lib/python3.10/site-packages/gcsfs/mapping.py + + # CVE-2023-47248, GHSA-5wvp-7f3h-6wmm + pip install pyarrow-hotfix + sed -i '1 i\import pyarrow_hotfix' server.py + + - uses: strip + +update: + enabled: true + ignore-regex-patterns: + - 'sdk-' + github: + identifier: kubeflow/pipelines diff --git a/kubeflow-pipelines-visualization-server/bump.patch b/kubeflow-pipelines-visualization-server/bump.patch new file mode 100644 index 00000000000..e9dab53ef9b --- /dev/null +++ b/kubeflow-pipelines-visualization-server/bump.patch @@ -0,0 +1,772 @@ +diff --git a/backend/src/apiserver/visualization/requirements.in b/backend/src/apiserver/visualization/requirements.in +index 61ebd737b..7c75a8809 100644 +--- a/backend/src/apiserver/visualization/requirements.in ++++ b/backend/src/apiserver/visualization/requirements.in +@@ -5,15 +5,15 @@ itables==0.1.0 + ipykernel==5.1.1 + ipython==7.12.0 + jinja2==2.11.3 +-jupyter_client==5.3.* ++jupyter_client==8.0.* + markupsafe==2.0.1 + nbconvert==5.5.0 +-nbformat==4.4.0 +-scikit-learn==0.24.2 +-tensorflow==2.10.1 +-tensorflow-metadata==1.9.* +-tensorflow-model-analysis==0.40.* +-tensorflow-data-validation==1.9.* +-tensorflow-serving-api==2.10.1 ++nbformat==5.5.0 ++scikit-learn==1.1.0 ++tensorflow==2.15.0 ++tensorflow-metadata==1.14.* ++tensorflow-model-analysis==0.45.* ++tensorflow-data-validation==1.14.* ++tensorflow-serving-api==2.14.1 + tornado==6.* + mistune<2.0.0 +\ No newline at end of file +diff --git a/backend/src/apiserver/visualization/requirements.txt b/backend/src/apiserver/visualization/requirements.txt +index bd95a0191..1f926ceeb 100644 +--- a/backend/src/apiserver/visualization/requirements.txt ++++ b/backend/src/apiserver/visualization/requirements.txt +@@ -1,8 +1,8 @@ + # +-# This file is autogenerated by pip-compile with Python 3.8 ++# This file is autogenerated by pip-compile with Python 3.10 + # by the following command: + # +-# pip-compile --output-file=- --resolver=backtracking - ++# pip-compile --output-file=requirements.txt requirements.in + # + absl-py==1.4.0 + # via +@@ -12,42 +12,46 @@ absl-py==1.4.0 + # tensorflow-metadata + # tensorflow-model-analysis + # tfx-bsl +-apache-beam[gcp]==2.46.0 ++anyio==4.2.0 ++ # via jupyter-server ++apache-beam[gcp]==2.52.0 + # via ++ # apache-beam + # tensorflow-data-validation + # tensorflow-model-analysis + # tfx-bsl + argon2-cffi==23.1.0 + # via + # jupyter-server ++ # nbclassic + # notebook + argon2-cffi-bindings==21.2.0 + # via argon2-cffi + astunparse==1.6.3 + # via tensorflow +-attrs==23.1.0 ++attrs==21.4.0 + # via + # jsonschema +- # referencing ++ # tensorflow-model-analysis + backcall==0.2.0 + # via ipython +-bleach==6.0.0 ++bleach==6.1.0 + # via nbconvert + bokeh==1.2.0 +- # via -r - +-cachetools==4.2.4 ++ # via -r requirements.in ++cachetools==5.3.2 + # via + # apache-beam + # google-auth +-certifi==2023.7.22 ++certifi==2023.11.17 + # via requests +-cffi==1.15.1 ++cffi==1.16.0 + # via argon2-cffi-bindings +-charset-normalizer==3.2.0 ++charset-normalizer==3.3.2 + # via requests + cloudpickle==2.2.1 + # via apache-beam +-comm==0.1.4 ++comm==0.2.0 + # via ipywidgets + crcmod==1.7 + # via apache-beam +@@ -59,24 +63,32 @@ defusedxml==0.7.1 + # via nbconvert + dill==0.3.1.1 + # via apache-beam ++dnspython==2.4.2 ++ # via pymongo + docopt==0.6.2 + # via hdfs + entrypoints==0.4 + # via nbconvert +-fastavro==1.8.3 ++exceptiongroup==1.2.0 ++ # via anyio ++fastavro==1.9.2 + # via apache-beam + fasteners==0.19 + # via + # apache-beam + # google-apitools ++fastjsonschema==2.19.0 ++ # via nbformat + flatbuffers==23.5.26 + # via tensorflow +-gast==0.4.0 ++gast==0.5.4 + # via tensorflow + gcsfs==0.2.3 +- # via -r - +-google-api-core[grpc]==2.11.1 ++ # via -r requirements.in ++google-api-core[grpc]==2.15.0 + # via ++ # apache-beam ++ # google-cloud-aiplatform + # google-cloud-bigquery + # google-cloud-bigquery-storage + # google-cloud-bigtable +@@ -87,16 +99,18 @@ google-api-core[grpc]==2.11.1 + # google-cloud-pubsub + # google-cloud-pubsublite + # google-cloud-recommendations-ai ++ # google-cloud-resource-manager + # google-cloud-spanner ++ # google-cloud-storage + # google-cloud-videointelligence + # google-cloud-vision + google-api-python-client==1.7.12 + # via +- # -r - ++ # -r requirements.in + # tfx-bsl + google-apitools==0.5.31 + # via apache-beam +-google-auth==2.23.0 ++google-auth==2.25.2 + # via + # apache-beam + # gcsfs +@@ -105,70 +119,84 @@ google-auth==2.23.0 + # google-auth-httplib2 + # google-auth-oauthlib + # google-cloud-core ++ # google-cloud-storage + # tensorboard + google-auth-httplib2==0.1.1 + # via + # apache-beam + # google-api-python-client +-google-auth-oauthlib==0.4.6 ++google-auth-oauthlib==1.2.0 + # via + # gcsfs + # tensorboard +-google-cloud-bigquery==3.11.4 ++google-cloud-aiplatform==1.38.1 + # via apache-beam +-google-cloud-bigquery-storage==2.16.2 ++google-cloud-bigquery==3.14.1 ++ # via ++ # apache-beam ++ # google-cloud-aiplatform ++google-cloud-bigquery-storage==2.24.0 + # via apache-beam +-google-cloud-bigtable==1.7.3 ++google-cloud-bigtable==2.22.0 + # via apache-beam +-google-cloud-core==2.3.3 ++google-cloud-core==2.4.1 + # via + # apache-beam + # google-cloud-bigquery + # google-cloud-bigtable + # google-cloud-datastore + # google-cloud-spanner +-google-cloud-datastore==1.15.5 ++ # google-cloud-storage ++google-cloud-datastore==2.19.0 + # via apache-beam +-google-cloud-dlp==3.12.3 ++google-cloud-dlp==3.14.0 + # via apache-beam +-google-cloud-language==1.3.2 ++google-cloud-language==2.12.0 + # via apache-beam +-google-cloud-pubsub==2.18.4 ++google-cloud-pubsub==2.19.0 + # via + # apache-beam + # google-cloud-pubsublite +-google-cloud-pubsublite==1.8.3 ++google-cloud-pubsublite==1.9.0 + # via apache-beam +-google-cloud-recommendations-ai==0.7.1 ++google-cloud-recommendations-ai==0.10.6 + # via apache-beam ++google-cloud-resource-manager==1.11.0 ++ # via google-cloud-aiplatform + google-cloud-spanner==3.40.1 + # via apache-beam +-google-cloud-videointelligence==1.16.3 ++google-cloud-storage==2.14.0 ++ # via google-cloud-aiplatform ++google-cloud-videointelligence==2.12.0 + # via apache-beam +-google-cloud-vision==3.4.4 ++google-cloud-vision==3.5.0 + # via apache-beam + google-crc32c==1.5.0 +- # via google-resumable-media ++ # via ++ # google-cloud-storage ++ # google-resumable-media + google-pasta==0.2.0 + # via tensorflow +-google-resumable-media==2.6.0 +- # via google-cloud-bigquery +-googleapis-common-protos[grpc]==1.60.0 ++google-resumable-media==2.7.0 ++ # via ++ # google-cloud-bigquery ++ # google-cloud-storage ++googleapis-common-protos[grpc]==1.62.0 + # via + # google-api-core + # grpc-google-iam-v1 + # grpcio-status + # tensorflow-metadata +-grpc-google-iam-v1==0.12.6 ++grpc-google-iam-v1==0.13.0 + # via + # google-cloud-bigtable + # google-cloud-pubsub ++ # google-cloud-resource-manager + # google-cloud-spanner +-grpcio==1.58.0 ++grpcio==1.60.0 + # via + # apache-beam + # google-api-core +- # google-cloud-bigquery + # google-cloud-pubsub + # google-cloud-pubsublite + # googleapis-common-protos +@@ -182,113 +210,135 @@ grpcio-status==1.48.2 + # google-api-core + # google-cloud-pubsub + # google-cloud-pubsublite +-h5py==3.9.0 ++h5py==3.10.0 + # via tensorflow +-hdfs==2.7.2 ++hdfs==2.7.3 + # via apache-beam +-httplib2==0.21.0 ++httplib2==0.22.0 + # via + # apache-beam + # google-api-python-client + # google-apitools + # google-auth-httplib2 + # oauth2client +-idna==3.4 +- # via requests +-importlib-metadata==6.8.0 +- # via markdown +-importlib-resources==6.1.0 ++idna==3.6 + # via +- # jsonschema +- # jsonschema-specifications ++ # anyio ++ # requests + ipykernel==5.1.1 + # via +- # -r - ++ # -r requirements.in ++ # nbclassic + # notebook + ipython==7.12.0 + # via +- # -r - ++ # -r requirements.in + # ipykernel + # ipywidgets + # tensorflow-model-analysis + ipython-genutils==0.2.0 + # via + # ipywidgets +- # nbformat ++ # nbclassic + # notebook + ipywidgets==7.8.1 + # via tensorflow-model-analysis + itables==0.1.0 +- # via -r - +-jedi==0.19.0 ++ # via -r requirements.in ++jedi==0.19.1 + # via ipython + jinja2==2.11.3 + # via +- # -r - ++ # -r requirements.in + # bokeh ++ # jupyter-server ++ # nbclassic + # nbconvert + # notebook +-joblib==0.14.1 ++joblib==1.3.2 + # via + # scikit-learn + # tensorflow-data-validation +-jsonschema==4.19.1 +- # via nbformat +-jsonschema-specifications==2023.7.1 +- # via jsonschema +-jupyter-client==5.3.5 ++js2py==0.74 ++ # via apache-beam ++jsonschema==4.17.3 + # via +- # -r - ++ # apache-beam ++ # nbformat ++jupyter-client==8.0.3 ++ # via ++ # -r requirements.in + # ipykernel ++ # jupyter-server ++ # nbclassic + # notebook +-jupyter-core==5.3.1 ++jupyter-core==5.5.1 + # via + # jupyter-client ++ # jupyter-server ++ # nbclassic + # nbconvert + # nbformat + # notebook ++jupyter-server==1.15.6 ++ # via ++ # nbclassic ++ # notebook-shim + jupyterlab-widgets==1.1.7 + # via ipywidgets +-keras==2.10.0 +- # via tensorflow +-keras-preprocessing==1.1.2 ++keras==2.15.0 + # via tensorflow + libclang==16.0.6 + # via tensorflow +-markdown==3.4.4 ++markdown==3.5.1 + # via tensorboard + markupsafe==2.0.1 + # via +- # -r - ++ # -r requirements.in + # jinja2 + mistune==0.8.4 + # via +- # -r - ++ # -r requirements.in + # nbconvert ++ml-dtypes==0.2.0 ++ # via tensorflow ++nbclassic==1.0.0 ++ # via notebook + nbconvert==5.5.0 + # via +- # -r - ++ # -r requirements.in ++ # jupyter-server ++ # nbclassic + # notebook +-nbformat==4.4.0 ++nbformat==5.5.0 + # via +- # -r - ++ # -r requirements.in ++ # jupyter-server ++ # nbclassic + # nbconvert + # notebook + nest-asyncio==1.5.8 +- # via notebook +-notebook==6.4.13 ++ # via ++ # nbclassic ++ # notebook ++notebook==6.5.4 + # via widgetsnbextension ++notebook-shim==0.2.3 ++ # via ++ # nbclassic ++ # notebook + numpy==1.24.4 + # via + # apache-beam + # bokeh + # h5py +- # keras-preprocessing ++ # ml-dtypes + # opt-einsum + # pandas + # pyarrow + # scikit-learn + # scipy ++ # shapely + # tensorboard + # tensorflow + # tensorflow-data-validation +@@ -302,14 +352,17 @@ objsize==0.6.1 + # via apache-beam + opt-einsum==3.3.0 + # via tensorflow +-orjson==3.9.7 ++orjson==3.9.10 + # via apache-beam +-overrides==6.5.0 ++overrides==7.4.0 + # via google-cloud-pubsublite +-packaging==23.1 ++packaging==23.2 + # via ++ # apache-beam + # bokeh ++ # google-cloud-aiplatform + # google-cloud-bigquery ++ # jupyter-server + # tensorflow + pandas==1.5.3 + # via +@@ -321,35 +374,43 @@ pandocfilters==1.5.0 + # via nbconvert + parso==0.8.3 + # via jedi +-pexpect==4.8.0 ++pexpect==4.9.0 + # via ipython + pickleshare==0.7.5 + # via ipython +-pillow==10.0.1 +- # via bokeh +-pkgutil-resolve-name==1.3.10 +- # via jsonschema +-platformdirs==3.10.0 ++pillow==10.1.0 ++ # via ++ # bokeh ++ # tensorflow-model-analysis ++platformdirs==4.1.0 + # via jupyter-core +-prometheus-client==0.17.1 +- # via notebook +-prompt-toolkit==3.0.39 ++prometheus-client==0.19.0 ++ # via ++ # jupyter-server ++ # nbclassic ++ # notebook ++prompt-toolkit==3.0.43 + # via ipython +-proto-plus==1.22.3 ++proto-plus==1.23.0 + # via + # apache-beam +- # google-cloud-bigquery ++ # google-cloud-aiplatform + # google-cloud-bigquery-storage ++ # google-cloud-bigtable ++ # google-cloud-datastore + # google-cloud-dlp ++ # google-cloud-language + # google-cloud-pubsub + # google-cloud-recommendations-ai ++ # google-cloud-resource-manager + # google-cloud-spanner ++ # google-cloud-videointelligence + # google-cloud-vision +-protobuf==3.19.6 ++protobuf==3.20.3 + # via + # apache-beam + # google-api-core +- # google-cloud-bigquery ++ # google-cloud-aiplatform + # google-cloud-bigquery-storage + # google-cloud-bigtable + # google-cloud-datastore +@@ -357,6 +418,7 @@ protobuf==3.19.6 + # google-cloud-language + # google-cloud-pubsub + # google-cloud-recommendations-ai ++ # google-cloud-resource-manager + # google-cloud-spanner + # google-cloud-videointelligence + # google-cloud-vision +@@ -375,13 +437,15 @@ ptyprocess==0.7.0 + # via + # pexpect + # terminado +-pyarrow==5.0.0 ++pyarrow==10.0.1 + # via + # apache-beam + # tensorflow-data-validation + # tensorflow-model-analysis + # tfx-bsl +-pyasn1==0.5.0 ++pyarrow-hotfix==0.6 ++ # via apache-beam ++pyasn1==0.5.1 + # via + # oauth2client + # pyasn1-modules +@@ -396,16 +460,20 @@ pydot==1.4.2 + # via apache-beam + pyfarmhash==0.3.2 + # via tensorflow-data-validation +-pygments==2.16.1 ++pygments==2.17.2 + # via + # ipython + # nbconvert +-pymongo==3.13.0 ++pyjsparser==2.7.1 ++ # via js2py ++pymongo==4.6.1 + # via apache-beam + pyparsing==3.1.1 + # via + # httplib2 + # pydot ++pyrsistent==0.20.0 ++ # via jsonschema + python-dateutil==2.8.2 + # via + # apache-beam +@@ -419,15 +487,13 @@ pytz==2023.3.post1 + # pandas + pyyaml==6.0.1 + # via bokeh +-pyzmq==25.1.1 ++pyzmq==25.1.2 + # via + # jupyter-client ++ # jupyter-server ++ # nbclassic + # notebook +-referencing==0.30.2 +- # via +- # jsonschema +- # jsonschema-specifications +-regex==2023.8.8 ++regex==2023.12.25 + # via apache-beam + requests==2.31.0 + # via +@@ -435,27 +501,29 @@ requests==2.31.0 + # gcsfs + # google-api-core + # google-cloud-bigquery ++ # google-cloud-storage + # hdfs + # requests-oauthlib + # tensorboard + requests-oauthlib==1.3.1 + # via google-auth-oauthlib +-rpds-py==0.10.3 +- # via +- # jsonschema +- # referencing + rsa==4.9 + # via + # google-auth + # oauth2client +-scikit-learn==0.24.2 +- # via -r - +-scipy==1.10.1 ++scikit-learn==1.1.0 ++ # via -r requirements.in ++scipy==1.11.4 + # via + # scikit-learn + # tensorflow-model-analysis + send2trash==1.8.2 +- # via notebook ++ # via ++ # jupyter-server ++ # nbclassic ++ # notebook ++shapely==2.0.2 ++ # via google-cloud-aiplatform + six==1.16.0 + # via + # astunparse +@@ -465,66 +533,72 @@ six==1.16.0 + # google-apitools + # google-pasta + # hdfs +- # keras-preprocessing ++ # js2py + # oauth2client + # python-dateutil ++ # tensorboard + # tensorflow + # tensorflow-data-validation + # tensorflow-model-analysis ++sniffio==1.3.0 ++ # via anyio + sqlparse==0.4.4 + # via google-cloud-spanner +-tensorboard==2.10.1 ++tensorboard==2.15.1 + # via tensorflow +-tensorboard-data-server==0.6.1 +- # via tensorboard +-tensorboard-plugin-wit==1.8.1 ++tensorboard-data-server==0.7.2 + # via tensorboard +-tensorflow==2.10.1 ++tensorflow==2.15.0 + # via +- # -r - ++ # -r requirements.in + # tensorflow-data-validation + # tensorflow-model-analysis + # tensorflow-serving-api + # tfx-bsl +-tensorflow-data-validation==1.9.0 +- # via -r - +-tensorflow-estimator==2.10.0 ++tensorflow-data-validation==1.14.0 ++ # via -r requirements.in ++tensorflow-estimator==2.15.0 + # via tensorflow +-tensorflow-io-gcs-filesystem==0.34.0 ++tensorflow-io-gcs-filesystem==0.35.0 + # via tensorflow +-tensorflow-metadata==1.9.0 ++tensorflow-metadata==1.14.0 + # via +- # -r - ++ # -r requirements.in + # tensorflow-data-validation + # tensorflow-model-analysis + # tfx-bsl +-tensorflow-model-analysis==0.40.0 +- # via -r - +-tensorflow-serving-api==2.10.1 ++tensorflow-model-analysis==0.45.0 ++ # via -r requirements.in ++tensorflow-serving-api==2.14.1 + # via +- # -r - ++ # -r requirements.in + # tfx-bsl +-termcolor==2.3.0 ++termcolor==2.4.0 + # via tensorflow +-terminado==0.17.1 +- # via notebook ++terminado==0.18.0 ++ # via ++ # jupyter-server ++ # nbclassic ++ # notebook + testpath==0.6.0 + # via nbconvert +-tfx-bsl==1.9.0 ++tfx-bsl==1.14.0 + # via + # tensorflow-data-validation + # tensorflow-model-analysis + threadpoolctl==3.2.0 + # via scikit-learn +-tornado==6.3.3 ++tornado==6.4 + # via +- # -r - ++ # -r requirements.in + # bokeh + # ipykernel + # jupyter-client ++ # jupyter-server ++ # nbclassic + # notebook + # terminado +-traitlets==5.10.0 ++traitlets==5.14.0 + # via + # comm + # ipykernel +@@ -532,38 +606,37 @@ traitlets==5.10.0 + # ipywidgets + # jupyter-client + # jupyter-core ++ # jupyter-server ++ # nbclassic + # nbconvert + # nbformat + # notebook +-typing-extensions==4.8.0 ++typing-extensions==4.9.0 + # via ++ # anyio + # apache-beam + # tensorflow ++tzlocal==5.2 ++ # via js2py + uritemplate==3.0.1 + # via google-api-python-client +-urllib3==1.26.16 +- # via +- # google-auth +- # requests +-wcwidth==0.2.6 ++urllib3==2.1.0 ++ # via requests ++wcwidth==0.2.12 + # via prompt-toolkit + webencodings==0.5.1 + # via bleach ++websocket-client==1.7.0 ++ # via jupyter-server + werkzeug==2.1.2 + # via tensorboard +-wheel==0.41.2 +- # via +- # astunparse +- # tensorboard ++wheel==0.42.0 ++ # via astunparse + widgetsnbextension==3.6.6 + # via ipywidgets +-wrapt==1.15.0 ++wrapt==1.14.1 + # via tensorflow +-zipp==3.17.0 +- # via +- # importlib-metadata +- # importlib-resources +-zstandard==0.21.0 ++zstandard==0.22.0 + # via apache-beam + + # The following packages are considered to be unsafe in a requirements file: \ No newline at end of file