add schema as data to database; #139
Merged
Merged
Google Cloud Build / dev-webapp (dev-sst-02)
succeeded
Jul 25, 2025 in 4m 5s
Summary
Build Information
| Trigger | dev-webapp |
| Build | a87e0b04-3dec-4f60-9b04-5789ce528d24 |
| Start | 2025-07-24T17:17:50-07:00 |
| Duration | 4m4.056s |
| Status | SUCCESS |
Steps
| Step | Status | Duration |
|---|---|---|
| gcr.io/cloud-builders/docker | SUCCESS | 1m55.528s |
| gcr.io/cloud-builders/docker | SUCCESS | 1m2.287s |
| gcr.io/cloud-builders/docker | SUCCESS | 1.099s |
| gcr.io/cloud-builders/gcloud | SUCCESS | 1m1.848s |
Details
starting build "a87e0b04-3dec-4f60-9b04-5789ce528d24"
FETCHSOURCE
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
hint:
hint: Disable this message with "git config set advice.defaultBranchName false"
Initialized empty Git repository in /workspace/.git/
From https://github.com/datakind/sst-app-api
* branch a03adffad0f3bee9173bd6ce411de05ddac1e694 -> FETCH_HEAD
HEAD is now at a03adff lint
GitCommit:
a03adffad0f3bee9173bd6ce411de05ddac1e694
BUILD
Starting Step #0
Step #0: Already have image (with digest): gcr.io/cloud-builders/docker
Step #0: Sending build context to Docker daemon 1.429MB
Step #0: Step 1/14 : FROM python:3.10-slim-bookworm AS builder
Step #0: 3.10-slim-bookworm: Pulling from library/python
Step #0: 59e22667830b: Pulling fs layer
Step #0: 12b8240e46e9: Pulling fs layer
Step #0: 3fa1124e7cf3: Pulling fs layer
Step #0: 00aa2453f380: Pulling fs layer
Step #0: 00aa2453f380: Waiting
Step #0: 12b8240e46e9: Verifying Checksum
Step #0: 12b8240e46e9: Download complete
Step #0: 3fa1124e7cf3: Verifying Checksum
Step #0: 3fa1124e7cf3: Download complete
Step #0: 59e22667830b: Verifying Checksum
Step #0: 59e22667830b: Download complete
Step #0: 00aa2453f380: Verifying Checksum
Step #0: 00aa2453f380: Download complete
Step #0: 59e22667830b: Pull complete
Step #0: 12b8240e46e9: Pull complete
Step #0: 3fa1124e7cf3: Pull complete
Step #0: 00aa2453f380: Pull complete
Step #0: Digest: sha256:81f1cdb3770d54ecfdbddcc52c2125fce674c14a1d976dfd8f65dc0734f9c3c5
Step #0: Status: Downloaded newer image for python:3.10-slim-bookworm
Step #0: ---> 13839a48c354
Step #0: Step 2/14 : COPY --from=ghcr.io/astral-sh/uv:0.5.30 /uv /uvx /bin/
Step #0: 0.5.30: Pulling from astral-sh/uv
Step #0: 110868002cfe: Pulling fs layer
Step #0: 20346dd24510: Pulling fs layer
Step #0: 20346dd24510: Verifying Checksum
Step #0: 20346dd24510: Download complete
Step #0: 110868002cfe: Download complete
Step #0: 110868002cfe: Pull complete
Step #0: 20346dd24510: Pull complete
Step #0: Digest: sha256:bb74263127d6451222fe7f71b330edfb189ab1c98d7898df2401fbf4f272d9b9
Step #0: Status: Downloaded newer image for ghcr.io/astral-sh/uv:0.5.30
Step #0: ---> 5f5022bca933
Step #0: Step 3/14 : ENV UV_COMPILE_BYTECODE=1
Step #0: ---> Running in 09b38d20189c
Step #0: Removing intermediate container 09b38d20189c
Step #0: ---> 643f8aa83d6d
Step #0: Step 4/14 : ENV UV_NO_CACHE=1
Step #0: ---> Running in 8b3de5fd5069
Step #0: Removing intermediate container 8b3de5fd5069
Step #0: ---> ebd450847faf
Step #0: Step 5/14 : WORKDIR /app
Step #0: ---> Running in a5c0ea5330be
Step #0: Removing intermediate container a5c0ea5330be
Step #0: ---> 5ad732228bd3
Step #0: Step 6/14 : ADD uv.lock pyproject.toml /app/
Step #0: ---> 298d039cc478
Step #0: Step 7/14 : RUN uv sync --frozen --no-install-project
Step #0: ---> Running in d4a6bb77deef
Step #0: �[91mUsing CPython 3.10.18 interpreter at: /usr/local/bin/python3
Step #0: �[0m�[91mCreating virtual environment at: .venv
Step #0: �[0m�[91mDownloading cryptography (3.8MiB)
Step #0: �[0m�[91mDownloading jedi (1.5MiB)
Step #0: �[0m�[91mDownloading pygments (1.1MiB)
Step #0: �[0m�[91mDownloading mlflow (23.5MiB)
Step #0: �[0m�[91mDownloading lz4 (1.2MiB)
Step #0: �[0m�[91mDownloading debugpy (3.4MiB)
Step #0: �[0m�[91mDownloading uvloop (3.6MiB)
Step #0: Downloading sqlalchemy (2.9MiB)
Step #0: �[0m�[91mDownloading scipy�[0m�[91m (35.9MiB)�[0m�[91m
Step #0: �[0m�[91mDownloading fonttools (4.5MiB)
Step #0: �[0m�[91mDownloading matplotlib (8.2MiB)
Step #0: �[0m�[91mDownloading pillow (6.3MiB)
Step #0: �[0m�[91mDownloading kiwisolver (1.6MiB)
Step #0: Downloading babel (9.1MiB)
Step #0: �[0m�[91mDownloading black �[0m�[91m(1.7MiB)
Step #0: �[0m�[91mDownloading pyarrow (40.3MiB)
Step #0: �[0m�[91mDownloading pandas (12.5MiB)�[0m�[91m
Step #0: �[0m�[91mDownloading scikit-learn (12.3MiB)�[0m�[91m
Step #0: �[0m�[91mDownloading jupyterlab (11.1MiB)�[0m�[91m
Step #0: �[0m�[91mDownloading mlflow-skinny (1.8MiB)
Step #0: �[0m�[91mDownloading pydantic-core (2.0MiB)
Step #0: �[0m�[91mDownloading ruff (10.7MiB)
Step #0: �[0m�[91mDownloading mypy (12.0MiB)
Step #0: �[0m�[91mDownloading aiohttp (1.5MiB)
Step #0: �[0m�[91mDownloading numpy (15.7MiB)�[0m�[91m
Step #0: �[0m�[91mDownloading setuptools (1.2MiB)
Step #0: �[0m�[91m Downloaded lz4
Step #0: �[0m�[91m Downloaded pygments
Step #0: �[0m�[91m Downloaded kiwisolver
Step #0: �[0m�[91m Downloaded aiohttp
Step #0: �[0m�[91m Downloaded black�[0m�[91m
Step #0: �[0m�[91m Downloaded pydantic-core
Step #0: �[0m�[91m Building thrift==0.20.0
Step #0: �[0m�[91m Downloaded setuptools
Step #0: �[0m�[91m �[0m�[91mDownloaded�[0m�[91m �[0m�[91msqlalchemy�[0m�[91m
Step #0: �[0m�[91m Downloaded debugpy
Step #0: �[0m�[91m Downloaded uvloop
Step #0: �[0m�[91m Downloaded mlflow-skinny
Step #0: �[0m�[91m Downloaded cryptography
Step #0: �[0m�[91m Downloaded fonttools
Step #0: �[0m�[91m Downloaded pillow
Step #0: �[0m�[91m Downloaded matplotlib
Step #0: �[0m�[91m Downloaded babel
Step #0: �[0m�[91m Downloaded ruff
Step #0: �[0m�[91m Downloaded jupyterlab
Step #0: �[0m�[91m Downloaded numpy
Step #0: �[0m�[91m Downloaded scikit-learn
Step #0: �[0m�[91m �[0m�[91mBuilt�[0m�[91m thrift�[0m�[91m==0.20.0�[0m�[91m
Step #0: �[0m�[91m Downloaded pandas
Step #0: �[0m�[91m Downloaded jedi
Step #0: �[0m�[91m Downloaded mlflow
Step #0: �[0m�[91m Downloaded pyarrow
Step #0: �[0m�[91m Downloaded scipy
Step #0: �[0m�[91m �[0m�[91mDownloaded �[0m�[91mmypy�[0m�[91m
Step #0: �[0m�[91mPrepared 219 packages in 10.81s
Step #0: �[0m�[91mInstalled 219 packages in 1.67s
Step #0: �[0m�[91mBytecode compiled 12022 files in 28.13s
Step #0: �[0m�[91m + aiofiles==24.1.0
Step #0: + aiohappyeyeballs==2.4.4
Step #0: + aiohttp==3.11.10�[0m�[91m
Step #0: + aiosignal==1.3.1
Step #0: + alembic==1.16.3
Step #0: + annotated-types==0.7.0
Step #0: + anyio==4.7.0�[0m�[91m
Step #0: + argon2-cffi==23.1.0
Step #0: + argon2-cffi-bindings==21.2.0
Step #0: + arrow==1.3.0
Step #0: + astroid==3.3.6
Step #0: + asttokens==3.0.0�[0m�[91m
Step #0: + async-lru==2.0.4
Step #0: + async-timeout==5.0.1
Step #0: + attrs==24.2.0
Step #0: + babel==2.16.0�[0m�[91m
Step #0: + bcrypt==4.2.0
Step #0: + beautifulsoup4==4.12.3
Step #0: + black==25.1.0
Step #0: + bleach==6.2.0
Step #0: + blinker==1.9.0
Step #0: + cachetools==5.5.0
Step #0: + certifi==2024.8.30
Step #0: + cffi==1.17.1�[0m�[91m
Step #0: + charset-normalizer==3.4.0
Step #0: + click==8.1.7�[0m�[91m
Step #0: + cloud-sql-python-connector==1.14.0
Step #0: + cloudpickle==3.1.1
Step #0: + comm==0.2.2
Step #0: + contourpy==1.3.2�[0m�[91m
Step #0: + coverage==7.6.9
Step #0: + crypto==1.4.1
Step #0: + cryptography==43.0.3�[0m�[91m
Step #0: + cycler==0.12.1
Step #0: + databricks-sdk==0.38.0
Step #0: + databricks-sql-connector==4.0.3
Step #0: + debugpy==1.8.9�[0m�[91m
Step #0: + decorator==5.1.1
Step #0: + defusedxml==0.7.1
Step #0: + dill==0.3.9
Step #0: + dnspython==2.7.0�[0m�[91m
Step #0: + docker==7.1.0
Step #0: + email-validator==2.2.0
Step #0: + et-xmlfile==2.0.0�[0m�[91m
Step #0: + exceptiongroup==1.2.2
Step #0: + executing==2.1.0�[0m�[91m
Step #0: + fastapi==0.115.4
Step #0: + fastapi-cli==0.0.5
Step #0: + fastjsonschema==2.21.1�[0m�[91m
Step #0: + flask==3.1.1
Step #0: + fonttools==4.58.5
Step #0: + fqdn==1.5.1
Step #0: + frozenlist==1.5.0
Step #0: + fuzzywuzzy==0.18.0�[0m�[91m
Step #0: + gitdb==4.0.12
Step #0: + gitpython==3.1.44
Step #0: + google-api-core==2.22.0
Step #0: + google-auth==2.36.0�[0m�[91m
Step #0: + google-cloud==0.34.0
Step #0: + google-cloud-core==2.4.1�[0m�[91m
Step #0: + google-cloud-storage==2.18.2
Step #0: + google-crc32c==1.6.0
Step #0: + google-resumable-media==2.7.2�[0m�[91m
Step #0: + googleapis-common-protos==1.66.0
Step #0: + graphene==3.4.3
Step #0: + graphql-core==3.2.6�[0m�[91m
Step #0: + graphql-relay==3.2.0
Step #0: + greenlet==3.1.1
Step #0: + gunicorn==23.0.0�[0m�[91m
Step #0: + h11==0.14.0
Step #0: + httpcore==1.0.7
Step #0: + httptools==0.6.4�[0m�[91m
Step #0: + httpx==0.28.1
Step #0: + idna==3.10
Step #0: + importlib-metadata==8.7.0�[0m�[91m
Step #0: + iniconfig==2.0.0
Step #0: + ipykernel==6.29.5�[0m�[91m
Step #0: + ipython==8.30.0
Step #0: + isoduration==20.11.0
Step #0: + isort==5.13.2
Step #0: + itsdangerous==2.2.0
Step #0: + jedi==0.19.2
Step #0: + jinja2==3.1.4
Step #0: + joblib==1.5.1
Step #0: + json5==0.10.0
Step #0: + jsonpickle==4.0.1
Step #0: + jsonpointer==3.0.0
Step #0: + jsonschema==4.23.0�[0m�[91m
Step #0: + jsonschema-specifications==2024.10.1
Step #0: + jupyter-client==8.6.3
Step #0: + jupyter-core==5.7.2
Step #0: + jupyter-events==0.10.0
Step #0: + jupyter-lsp==2.2.5
Step #0: + jupyter-server==2.14.2
Step #0: + jupyter-server-terminals==0.5.3
Step #0: + jupyterlab==4.3.2
Step #0: + jupyterlab-pygments==0.3.0
Step #0: + jupyterlab-server==2.27.3
Step #0: + kiwisolver==1.4.8
Step #0: + lz4==4.4.4
Step #0: + mako==1.3.10
Step #0: + markdown-it-py==3.0.0
Step #0: + markupsafe==3.0.2
Step #0: + matplotlib==3.10.3
Step #0: + matplotlib-inline==0.1.7
Step #0: + mccabe==0.7.0
Step #0: + mdurl==0.1.2
Step #0: + mistune==3.0.2�[0m�[91m
Step #0: + mlflow==3.1.1
Step #0: + mlflow-skinny==3.1.1
Step #0: + multidict==6.1.0
Step #0: + mypy==1.13.0
Step #0: + mypy-extensions==1.0.0
Step #0: + naked==0.1.32�[0m�[91m
Step #0: + nbclient==0.10.1
Step #0: + nbconvert==7.16.4
Step #0: + nbformat==5.10.4
Step #0: + nest-asyncio==1.6.0
Step #0: + notebook-shim==0.2.4
Step #0: + numpy==2.2.4
Step #0: + oauthlib==3.2.2
Step #0: + openpyxl==3.1.5
Step #0: + opentelemetry-api==1.34.1
Step #0: + opentelemetry-sdk==1.34.1
Step #0: + opentelemetry-semantic-conventions==0.55b1
Step #0: + overrides==7.7.0
Step #0: + packaging==24.2
Step #0: + pandas==2.2.3�[0m�[91m
Step #0: + pandera==0.24.0
Step #0: + pandocfilters==1.5.1
Step #0: + paramiko==3.5.0
Step #0: + parso==0.8.4
Step #0: + passlib==1.7.4
Step #0: + pathspec==0.12.1
Step #0: + pexpect==4.9.0
Step #0: + �[0m�[91mpillow==11.3.0
Step #0: + platformdirs==4.3.6
Step #0: + pluggy==1.5.0
Step #0: + prometheus-client==0.21.1
Step #0: + prompt-toolkit==3.0.48
Step #0: + propcache==0.2.1
Step #0: + proto-plus==1.25.0
Step #0: + protobuf==5.29.1
Step #0: + psutil==6.1.0
Step #0: + ptyprocess==0.7.0
Step #0: + �[0m�[91mpure-eval==0.2.3
Step #0: + pyarrow==20.0.0
Step #0: + pyasn1==0.6.1
Step #0: + pyasn1-modules==0.4.1
Step #0: + pycparser==2.22
Step #0: + pydantic==2.10.3
Step #0: + pydantic-core==2.27.1�[0m�[91m
Step #0: + pygments==2.18.0
Step #0: + pyjwt==2.10.1
Step #0: + pylint==3.3.2
Step #0: + pymysql==1.1.1
Step #0: + pynacl==1.5.0
Step #0: + pyparsing==3.2.3
Step #0: + pytest==8.3.4
Step #0: + python-dateutil==2.9.0.post0
Step #0: �[0m�[91m+ python-dotenv==1.0.1
Step #0: + python-json-logger==2.0.7
Step #0: + python-multipart==0.0.16
Step #0: + pytz==2025.1
Step #0: + pyyaml==6.0.2
Step #0: + pyzmq==26.2.0
Step #0: + referencing==0.35.1
Step #0: +�[0m�[91m requests==2.32.3
Step #0: + rfc3339-validator==0.1.4
Step #0: + rfc3986-validator==0.1.1
Step #0: + rich==13.9.3
Step #0: + rpds-py==0.22.3
Step #0: + rsa==4.9
Step #0: + ruff==0.8.2
Step #0: + scikit-learn==1.7.0
Step #0: + scipy==1.15.3
Step #0: + send2trash==1.8.3
Step #0: + setuptools==75.6.0
Step #0: + shellescape==3.8.1
Step #0: + shellingham==1.5.4�[0m�[91m
Step #0: + six==1.17.0
Step #0: + smmap==5.0.2
Step #0: + sniffio==1.3.1
Step #0: + soupsieve==2.6
Step #0: + sqlalchemy==2.0.36
Step #0: + sqlparse==0.5.3
Step #0: + stack-data==0.6.3
Step #0: + starlette==0.41.2
Step #0: + strenum==0.4.15
Step #0: + terminado==0.18.1�[0m�[91m
Step #0: + threadpoolctl==3.6.0
Step #0: + thrift==0.20.0
Step #0: + tinycss2==1.4.0
Step #0: + tomli==2.2.1
Step #0: + tomlkit==0.13.2
Step #0: + tornado==6.4.2
Step #0: + traitlets==5.14.3
Step #0: + typeguard==4.4.2
Step #0: + typer==0.12.5
Step #0: + types-paramiko==3.5.0.20240928�[0m�[91m
Step #0: + types-python-dateutil==2.9.0.20241206
Step #0: + types-requests==2.32.0.20250306
Step #0: + types-six==1.17.0.20250304
Step #0: + typing-extensions==4.12.2
Step #0: + typing-inspect==0.9.0
Step #0: + tzdata==2025.2
Step #0: + uri-template==1.3.0
Step #0: �[0m�[91m + urllib3==2.2.3
Step #0: �[0m�[91m + uvicorn==0.32.0
Step #0: +�[0m�[91m uvloop==0.21.0
Step #0: + �[0m�[91mwatchfiles==0.24.0
Step #0: + wcwidth�[0m�[91m==0.2.13
Step #0: + webcolors==�[0m�[91m24.11.1
Step #0: + webencodings==0.5.1�[0m�[91m
Step #0: + websocket-client==1.8.0
Step #0: �[0m�[91m+ websockets==13.1
Step #0: + werkzeug==�[0m�[91m3.1.3
Step #0: + yarl==1.18.3�[0m�[91m
Step #0: + zipp==3.23.0�[0m�[91m
Step #0: �[0mRemoving intermediate container d4a6bb77deef
Step #0: ---> 53bd0b321b46
Step #0: Step 8/14 : ADD . /app
Step #0: ---> 92f5d008f20e
Step #0: Step 9/14 : RUN uv sync --frozen --no-editable
Step #0: ---> Running in 2b5477d56fc9
Step #0: �[91m Building src @ file:///app
Step #0: �[0m�[91m Built src @ file:///app
Step #0: �[0m�[91mPrepared 1 package in 495ms
Step #0: �[0m�[91mInstalled 1 package in 2ms
Step #0: �[0m�[91mBytecode compiled 12056 files in 1.55s
Step #0: + src�[0m�[91m==�[0m�[91m0.2.0.dev0 (from file:///app)
Step #0: �[0mRemoving intermediate container 2b5477d56fc9
Step #0: ---> b6f9943506f9
Step #0: Step 10/14 : FROM python:3.10-slim-bookworm
Step #0: ---> 13839a48c354
Step #0: Step 11/14 : COPY --from=builder /app/.venv /app/.venv
Step #0: ---> e84f72708675
Step #0: Step 12/14 : COPY --from=builder /app/src /app/src
Step #0: ---> 57bc78269069
Step #0: Step 13/14 : ENV PATH="/app/.venv/bin:$PATH"
Step #0: ---> Running in 8aad244536e2
Step #0: Removing intermediate container 8aad244536e2
Step #0: ---> d353c123d2b3
Step #0: Step 14/14 : CMD ["fastapi", "run", "app/src/webapp", "--port", "8080", "--host", "0.0.0.0"]
Step #0: ---> Running in 23e854f5f3d7
Step #0: Removing intermediate container 23e854f5f3d7
Step #0: ---> 899d0bc21263
Step #0: Successfully built 899d0bc21263
Step #0: Successfully tagged us-east4-docker.pkg.dev/dev-sst-02/student-success-tool/webapp:a03adffad0f3bee9173bd6ce411de05ddac1e694
Step #0: Successfully tagged us-east4-docker.pkg.dev/dev-sst-02/student-success-tool/webapp:latest
Finished Step #0
Starting Step #1
Step #1: Already have image (with digest): gcr.io/cloud-builders/docker
Step #1: The push refers to repository [us-east4-docker.pkg.dev/dev-sst-02/student-success-tool/webapp]
Step #1: eefecba3f832: Preparing
Step #1: c61d96181ea9: Preparing
Step #1: f6dc80d9d167: Preparing
Step #1: 3ba4af0751c6: Preparing
Step #1: d379451f91b6: Preparing
Step #1: 7cc7fe68eff6: Preparing
Step #1: 7cc7fe68eff6: Waiting
Step #1: f6dc80d9d167: Layer already exists
Step #1: 3ba4af0751c6: Layer already exists
Step #1: d379451f91b6: Layer already exists
Step #1: eefecba3f832: Pushed
Step #1: 7cc7fe68eff6: Pushed
Step #1: c61d96181ea9: Pushed
Step #1: a03adffad0f3bee9173bd6ce411de05ddac1e694: digest: sha256:ad862877e416c296835895993d5fdbbc12165c25550cf4716a08c8a3368573ef size: 1581
Finished Step #1
Starting Step #2
Step #2: Already have image (with digest): gcr.io/cloud-builders/docker
Step #2: The push refers to repository [us-east4-docker.pkg.dev/dev-sst-02/student-success-tool/webapp]
Step #2: eefecba3f832: Preparing
Step #2: c61d96181ea9: Preparing
Step #2: f6dc80d9d167: Preparing
Step #2: 3ba4af0751c6: Preparing
Step #2: d379451f91b6: Preparing
Step #2: 7cc7fe68eff6: Preparing
Step #2: 7cc7fe68eff6: Waiting
Step #2: 3ba4af0751c6: Layer already exists
Step #2: c61d96181ea9: Layer already exists
Step #2: f6dc80d9d167: Layer already exists
Step #2: eefecba3f832: Layer already exists
Step #2: d379451f91b6: Layer already exists
Step #2: 7cc7fe68eff6: Layer already exists
Step #2: latest: digest: sha256:ad862877e416c296835895993d5fdbbc12165c25550cf4716a08c8a3368573ef size: 1581
Finished Step #2
Starting Step #3
Step #3: Already have image (with digest): gcr.io/cloud-builders/gcloud
Step #3: Deploying container to Cloud Run service [dev-webapp] in project [dev-sst-02] region [us-east4]
Step #3: Deploying...
starting build "a87e0b04-3dec-4f60-9b04-5789ce528d24"
FETCHSOURCE
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
hint:
hint: Disable this message with "git config set advice.defaultBranchName false"
Initialized empty Git repository in /workspace/.git/
From https://github.com/datakind/sst-app-api
* branch a03adffad0f3bee9173bd6ce411de05ddac1e694 -> FETCH_HEAD
HEAD is now at a03adff lint
GitCommit:
a03adffad0f3bee9173bd6ce411de05ddac1e694
BUILD
Starting Step #0
Step #0: Already have image (with digest): gcr.io/cloud-builders/docker
Step #0: Sending build context to Docker daemon 1.429MB
Step #0: Step 1/14 : FROM python:3.10-slim-bookworm AS builder
Step #0: 3.10-slim-bookworm: Pulling from library/python
Step #0: 59e22667830b: Pulling fs layer
Step #0: 12b8240e46e9: Pulling fs layer
Step #0: 3fa1124e7cf3: Pulling fs layer
Step #0: 00aa2453f380: Pulling fs layer
Step #0: 00aa2453f380: Waiting
Step #0: 12b8240e46e9: Verifying Checksum
Step #0: 12b8240e46e9: Download complete
Step #0: 3fa1124e7cf3: Verifying Checksum
Step #0: 3fa1124e7cf3: Download complete
Step #0: 59e22667830b: Verifying Checksum
Step #0: 59e22667830b: Download complete
Step #0: 00aa2453f380: Verifying Checksum
Step #0: 00aa2453f380: Download complete
Step #0: 59e22667830b: Pull complete
Step #0: 12b8240e46e9: Pull complete
Step #0: 3fa1124e7cf3: Pull complete
Step #0: 00aa2453f380: Pull complete
Step #0: Digest: sha256:81f1cdb3770d54ecfdbddcc52c2125fce674c14a1d976dfd8f65dc0734f9c3c5
Step #0: Status: Downloaded newer image for python:3.10-slim-bookworm
Step #0: ---> 13839a48c354
Step #0: Step 2/14 : COPY --from=ghcr.io/astral-sh/uv:0.5.30 /uv /uvx /bin/
Step #0: 0.5.30: Pulling from astral-sh/uv
Step #0: 110868002cfe: Pulling fs layer
Step #0: 20346dd24510: Pulling fs layer
Step #0: 20346dd24510: Verifying Checksum
Step #0: 20346dd24510: Download complete
Step #0: 110868002cfe: Download complete
Step #0: 110868002cfe: Pull complete
Step #0: 20346dd24510: Pull complete
Step #0: Digest: sha256:bb74263127d6451222fe7f71b330edfb189ab1c98d7898df2401fbf4f272d9b9
Step #0: Status: Downloaded newer image for ghcr.io/astral-sh/uv:0.5.30
Step #0: ---> 5f5022bca933
Step #0: Step 3/14 : ENV UV_COMPILE_BYTECODE=1
Step #0: ---> Running in 09b38d20189c
Step #0: Removing intermediate container 09b38d20189c
Step #0: ---> 643f8aa83d6d
Step #0: Step 4/14 : ENV UV_NO_CACHE=1
Step #0: ---> Running in 8b3de5fd5069
Step #0: Removing intermediate container 8b3de5fd5069
Step #0: ---> ebd450847faf
Step #0: Step 5/14 : WORKDIR /app
Step #0: ---> Running in a5c0ea5330be
Step #0: Removing intermediate container a5c0ea5330be
Step #0: ---> 5ad732228bd3
Step #0: Step 6/14 : ADD uv.lock pyproject.toml /app/
Step #0: ---> 298d039cc478
Step #0: Step 7/14 : RUN uv sync --frozen --no-install-project
Step #0: ---> Running in d4a6bb77deef
Step #0: �[91mUsing CPython 3.10.18 interpreter at: /usr/local/bin/python3
Step #0: �[0m�[91mCreating virtual environment at: .venv
Step #0: �[0m�[91mDownloading cryptography (3.8MiB)
Step #0: �[0m�[91mDownloading jedi (1.5MiB)
Step #0: �[0m�[91mDownloading pygments (1.1MiB)
Step #0: �[0m�[91mDownloading mlflow (23.5MiB)
Step #0: �[0m�[91mDownloading lz4 (1.2MiB)
Step #0: �[0m�[91mDownloading debugpy (3.4MiB)
Step #0: �[0m�[91mDownloading uvloop (3.6MiB)
Step #0: Downloading sqlalchemy (2.9MiB)
Step #0: �[0m�[91mDownloading scipy�[0m�[91m (35.9MiB)�[0m�[91m
Step #0: �[0m�[91mDownloading fonttools (4.5MiB)
Step #0: �[0m�[91mDownloading matplotlib (8.2MiB)
Step #0: �[0m�[91mDownloading pillow (6.3MiB)
Step #0: �[0m�[91mDownloading kiwisolver (1.6MiB)
Step #0: Downloading babel (9.1MiB)
Step #0: �[0m�[91mDownloading black �[0m�[91m(1.7MiB)
Step #0: �[0m�[91mDownloading pyarrow (40.3MiB)
Step #0: �[0m�[91mDownloading pandas (12.5MiB)�[0m�[91m
Step #0: �[0m�[91mDownloading scikit-learn (12.3MiB)�[0m�[91m
Step #0: �[0m�[91mDownloading jupyterlab (11.1MiB)�[0m�[91m
Step #0: �[0m�[91mDownloading mlflow-skinny (1.8MiB)
Step #0: �[0m�[91mDownloading pydantic-core (2.0MiB)
Step #0: �[0m�[91mDownloading ruff (10.7MiB)
Step #0: �[0m�[91mDownloading mypy (12.0MiB)
Step #0: �[0m�[91mDownloading aiohttp (1.5MiB)
Step #0: �[0m�[91mDownloading numpy (15.7MiB)�[0m�[91m
Step #0: �[0m�[91mDownloading setuptools (1.2MiB)
Step #0: �[0m�[91m Downloaded lz4
Step #0: �[0m�[91m Downloaded pygments
Step #0: �[0m�[91m Downloaded kiwisolver
Step #0: �[0m�[91m Downloaded aiohttp
Step #0: �[0m�[91m Downloaded black�[0m�[91m
Step #0: �[0m�[91m Downloaded pydantic-core
Step #0: �[0m�[91m Building thrift==0.20.0
Step #0: �[0m�[91m Downloaded setuptools
Step #0: �[0m�[91m �[0m�[91mDownloaded�[0m�[91m �[0m�[91msqlalchemy�[0m�[91m
Step #0: �[0m�[91m Downloaded debugpy
Step #0: �[0m�[91m Downloaded uvloop
Step #0: �[0m�[91m Downloaded mlflow-skinny
Step #0: �[0m�[91m Downloaded cryptography
Step #0: �[0m�[91m Downloaded fonttools
Step #0: �[0m�[91m Downloaded pillow
Step #0: �[0m�[91m Downloaded matplotlib
Step #0: �[0m�[91m Downloaded babel
Step #0: �[0m�[91m Downloaded ruff
Step #0: �[0m�[91m Downloaded jupyterlab
Step #0: �[0m�[91m Downloaded numpy
Step #0: �[0m�[91m Downloaded scikit-learn
Step #0: �[0m�[91m �[0m�[91mBuilt�[0m�[91m thrift�[0m�[91m==0.20.0�[0m�[91m
Step #0: �[0m�[91m Downloaded pandas
Step #0: �[0m�[91m Downloaded jedi
Step #0: �[0m�[91m Downloaded mlflow
Step #0: �[0m�[91m Downloaded pyarrow
Step #0: �[0m�[91m Downloaded scipy
Step #0: �[0m�[91m �[0m�[91mDownloaded �[0m�[91mmypy�[0m�[91m
Step #0: �[0m�[91mPrepared 219 packages in 10.81s
Step #0: �[0m�[91mInstalled 219 packages in 1.67s
Step #0: �[0m�[91mBytecode compiled 12022 files in 28.13s
Step #0: �[0m�[91m + aiofiles==24.1.0
Step #0: + aiohappyeyeballs==2.4.4
Step #0: + aiohttp==3.11.10�[0m�[91m
Step #0: + aiosignal==1.3.1
Step #0: + alembic==1.16.3
Step #0: + annotated-types==0.7.0
Step #0: + anyio==4.7.0�[0m�[91m
Step #0: + argon2-cffi==23.1.0
Step #0: + argon2-cffi-bindings==21.2.0
Step #0: + arrow==1.3.0
Step #0: + astroid==3.3.6
Step #0: + asttokens==3.0.0�[0m�[91m
Step #0: + async-lru==2.0.4
Step #0: + async-timeout==5.0.1
Step #0: + attrs==24.2.0
Step #0: + babel==2.16.0�[0m�[91m
Step #0: + bcrypt==4.2.0
Step #0: + beautifulsoup4==4.12.3
Step #0: + black==25.1.0
Step #0: + bleach==6.2.0
Step #0: + blinker==1.9.0
Step #0: + cachetools==5.5.0
Step #0: + certifi==2024.8.30
Step #0: + cffi==1.17.1�[0m�[91m
Step #0: + charset-normalizer==3.4.0
Step #0: + click==8.1.7�[0m�[91m
Step #0: + cloud-sql-python-connector==1.14.0
Step #0: + cloudpickle==3.1.1
Step #0: + comm==0.2.2
Step #0: + contourpy==1.3.2�[0m�[91m
Step #0: + coverage==7.6.9
Step #0: + crypto==1.4.1
Step #0: + cryptography==43.0.3�[0m�[91m
Step #0: + cycler==0.12.1
Step #0: + databricks-sdk==0.38.0
Step #0: + databricks-sql-connector==4.0.3
Step #0: + debugpy==1.8.9�[0m�[91m
Step #0: + decorator==5.1.1
Step #0: + defusedxml==0.7.1
Step #0: + dill==0.3.9
Step #0: + dnspython==2.7.0�[0m�[91m
Step #0: + docker==7.1.0
Step #0: + email-validator==2.2.0
Step #0: + et-xmlfile==2.0.0�[0m�[91m
Step #0: + exceptiongroup==1.2.2
Step #0: + executing==2.1.0�[0m�[91m
Step #0: + fastapi==0.115.4
Step #0: + fastapi-cli==0.0.5
Step #0: + fastjsonschema==2.21.1�[0m�[91m
Step #0: + flask==3.1.1
Step #0: + fonttools==4.58.5
Step #0: + fqdn==1.5.1
Step #0: + frozenlist==1.5.0
Step #0: + fuzzywuzzy==0.18.0�[0m�[91m
Step #0: + gitdb==4.0.12
Step #0: + gitpython==3.1.44
Step #0: + google-api-core==2.22.0
Step #0: + google-auth==2.36.0�[0m�[91m
Step #0: + google-cloud==0.34.0
Step #0: + google-cloud-core==2.4.1�[0m�[91m
Step #0: + google-cloud-storage==2.18.2
Step #0: + google-crc32c==1.6.0
Step #0: + google-resumable-media==2.7.2�[0m�[91m
Step #0: + googleapis-common-protos==1.66.0
Step #0: + graphene==3.4.3
Step #0: + graphql-core==3.2.6�[0m�[91m
Step #0: + graphql-relay==3.2.0
Step #0: + greenlet==3.1.1
Step #0: + gunicorn==23.0.0�[0m�[91m
Step #0: + h11==0.14.0
Step #0: + httpcore==1.0.7
Step #0: + httptools==0.6.4�[0m�[91m
Step #0: + httpx==0.28.1
Step #0: + idna==3.10
Step #0: + importlib-metadata==8.7.0�[0m�[91m
Step #0: + iniconfig==2.0.0
Step #0: + ipykernel==6.29.5�[0m�[91m
Step #0: + ipython==8.30.0
Step #0: + isoduration==20.11.0
Step #0: + isort==5.13.2
Step #0: + itsdangerous==2.2.0
Step #0: + jedi==0.19.2
Step #0: + jinja2==3.1.4
Step #0: + joblib==1.5.1
Step #0: + json5==0.10.0
Step #0: + jsonpickle==4.0.1
Step #0: + jsonpointer==3.0.0
Step #0: + jsonschema==4.23.0�[0m�[91m
Step #0: + jsonschema-specifications==2024.10.1
Step #0: + jupyter-client==8.6.3
Step #0: + jupyter-core==5.7.2
Step #0: + jupyter-events==0.10.0
Step #0: + jupyter-lsp==2.2.5
Step #0: + jupyter-server==2.14.2
Step #0: + jupyter-server-terminals==0.5.3
Step #0: + jupyterlab==4.3.2
Step #0: + jupyterlab-pygments==0.3.0
Step #0: + jupyterlab-server==2.27.3
Step #0: + kiwisolver==1.4.8
Step #0: + lz4==4.4.4
Step #0: + mako==1.3.10
Step #0: + markdown-it-py==3.0.0
Step #0: + markupsafe==3.0.2
Step #0: + matplotlib==3.10.3
Step #0: + matplotlib-inline==0.1.7
Step #0: + mccabe==0.7.0
Step #0: + mdurl==0.1.2
Step #0: + mistune==3.0.2�[0m�[91m
Step #0: + mlflow==3.1.1
Step #0: + mlflow-skinny==3.1.1
Step #0: + multidict==6.1.0
Step #0: + mypy==1.13.0
Step #0: + mypy-extensions==1.0.0
Step #0: + naked==0.1.32�[0m�[91m
Step #0: + nbclient==0.10.1
Step #0: + nbconvert==7.16.4
Step #0: + nbformat==5.10.4
Step #0: + nest-asyncio==1.6.0
Step #0: + notebook-shim==0.2.4
Step #0: + numpy==2.2.4
Step #0: + oauthlib==3.2.2
Step #0: + openpyxl==3.1.5
Step #0: + opentelemetry-api==1.34.1
Step #0: + opentelemetry-sdk==1.34.1
Step #0: + opentelemetry-semantic-conventions==0.55b1
Step #0: + overrides==7.7.0
Step #0: + packaging==24.2
Step #0: + pandas==2.2.3�[0m�[91m
Step #0: + pandera==0.24.0
Step #0: + pandocfilters==1.5.1
Step #0: + paramiko==3.5.0
Step #0: + parso==0.8.4
Step #0: + passlib==1.7.4
Step #0: + pathspec==0.12.1
Step #0: + pexpect==4.9.0
Step #0: + �[0m�[91mpillow==11.3.0
Step #0: + platformdirs==4.3.6
Step #0: + pluggy==1.5.0
Step #0: + prometheus-client==0.21.1
Step #0: + prompt-toolkit==3.0.48
Step #0: + propcache==0.2.1
Step #0: + proto-plus==1.25.0
Step #0: + protobuf==5.29.1
Step #0: + psutil==6.1.0
Step #0: + ptyprocess==0.7.0
Step #0: + �[0m�[91mpure-eval==0.2.3
Step #0: + pyarrow==20.0.0
Step #0: + pyasn1==0.6.1
Step #0: + pyasn1-modules==0.4.1
Step #0: + pycparser==2.22
Step #0: + pydantic==2.10.3
Step #0: + pydantic-core==2.27.1�[0m�[91m
Step #0: + pygments==2.18.0
Step #0: + pyjwt==2.10.1
Step #0: + pylint==3.3.2
Step #0: + pymysql==1.1.1
Step #0: + pynacl==1.5.0
Step #0: + pyparsing==3.2.3
Step #0: + pytest==8.3.4
Step #0: + python-dateutil==2.9.0.post0
Step #0: �[0m�[91m+ python-dotenv==1.0.1
Step #0: + python-json-logger==2.0.7
Step #0: + python-multipart==0.0.16
Step #0: + pytz==2025.1
Step #0: + pyyaml==6.0.2
Step #0: + pyzmq==26.2.0
Step #0: + referencing==0.35.1
Step #0: +�[0m�[91m requests==2.32.3
Step #0: + rfc3339-validator==0.1.4
Step #0: + rfc3986-validator==0.1.1
Step #0: + rich==13.9.3
Step #0: + rpds-py==0.22.3
Step #0: + rsa==4.9
Step #0: + ruff==0.8.2
Step #0: + scikit-learn==1.7.0
Step #0: + scipy==1.15.3
Step #0: + send2trash==1.8.3
Step #0: + setuptools==75.6.0
Step #0: + shellescape==3.8.1
Step #0: + shellingham==1.5.4�[0m�[91m
Step #0: + six==1.17.0
Step #0: + smmap==5.0.2
Step #0: + sniffio==1.3.1
Step #0: + soupsieve==2.6
Step #0: + sqlalchemy==2.0.36
Step #0: + sqlparse==0.5.3
Step #0: + stack-data==0.6.3
Step #0: + starlette==0.41.2
Step #0: + strenum==0.4.15
Step #0: + terminado==0.18.1�[0m�[91m
Step #0: + threadpoolctl==3.6.0
Step #0: + thrift==0.20.0
Step #0: + tinycss2==1.4.0
Step #0: + tomli==2.2.1
Step #0: + tomlkit==0.13.2
Step #0: + tornado==6.4.2
Step #0: + traitlets==5.14.3
Step #0: + typeguard==4.4.2
Step #0: + typer==0.12.5
Step #0: + types-paramiko==3.5.0.20240928�[0m�[91m
Step #0: + types-python-dateutil==2.9.0.20241206
Step #0: + types-requests==2.32.0.20250306
Step #0: + types-six==1.17.0.20250304
Step #0: + typing-extensions==4.12.2
Step #0: + typing-inspect==0.9.0
Step #0: + tzdata==2025.2
Step #0: + uri-template==1.3.0
Step #0: �[0m�[91m + urllib3==2.2.3
Step #0: �[0m�[91m + uvicorn==0.32.0
Step #0: +�[0m�[91m uvloop==0.21.0
Step #0: + �[0m�[91mwatchfiles==0.24.0
Step #0: + wcwidth�[0m�[91m==0.2.13
Step #0: + webcolors==�[0m�[91m24.11.1
Step #0: + webencodings==0.5.1�[0m�[91m
Step #0: + websocket-client==1.8.0
Step #0: �[0m�[91m+ websockets==13.1
Step #0: + werkzeug==�[0m�[91m3.1.3
Step #0: + yarl==1.18.3�[0m�[91m
Step #0: + zipp==3.23.0�[0m�[91m
Step #0: �[0mRemoving intermediate container d4a6bb77deef
Step #0: ---> 53bd0b321b46
Step #0: Step 8/14 : ADD . /app
Step #0: ---> 92f5d008f20e
Step #0: Step 9/14 : RUN uv sync --frozen --no-editable
Step #0: ---> Running in 2b5477d56fc9
Step #0: �[91m Building src @ file:///app
Step #0: �[0m�[91m Built src @ file:///app
Step #0: �[0m�[91mPrepared 1 package in 495ms
Step #0: �[0m�[91mInstalled 1 package in 2ms
Step #0: �[0m�[91mBytecode compiled 12056 files in 1.55s
Step #0: + src�[0m�[91m==�[0m�[91m0.2.0.dev0 (from file:///app)
Step #0: �[0mRemoving intermediate container 2b5477d56fc9
Step #0: ---> b6f9943506f9
Step #0: Step 10/14 : FROM python:3.10-slim-bookworm
Step #0: ---> 13839a48c354
Step #0: Step 11/14 : COPY --from=builder /app/.venv /app/.venv
Step #0: ---> e84f72708675
Step #0: Step 12/14 : COPY --from=builder /app/src /app/src
Step #0: ---> 57bc78269069
Step #0: Step 13/14 : ENV PATH="/app/.venv/bin:$PATH"
Step #0: ---> Running in 8aad244536e2
Step #0: Removing intermediate container 8aad244536e2
Step #0: ---> d353c123d2b3
Step #0: Step 14/14 : CMD ["fastapi", "run", "app/src/webapp", "--port", "8080", "--host", "0.0.0.0"]
Step #0: ---> Running in 23e854f5f3d7
Step #0: Removing intermediate container 23e854f5f3d7
Step #0: ---> 899d0bc21263
Step #0: Successfully built 899d0bc21263
Step #0: Successfully tagged us-east4-docker.pkg.dev/dev-sst-02/student-success-tool/webapp:a03adffad0f3bee9173bd6ce411de05ddac1e694
Step #0: Successfully tagged us-east4-docker.pkg.dev/dev-sst-02/student-success-tool/webapp:latest
Finished Step #0
Starting Step #1
Step #1: Already have image (with digest): gcr.io/cloud-builders/docker
Step #1: The push refers to repository [us-east4-docker.pkg.dev/dev-sst-02/student-success-tool/webapp]
Step #1: eefecba3f832: Preparing
Step #1: c61d96181ea9: Preparing
Step #1: f6dc80d9d167: Preparing
Step #1: 3ba4af0751c6: Preparing
Step #1: d379451f91b6: Preparing
Step #1: 7cc7fe68eff6: Preparing
Step #1: 7cc7fe68eff6: Waiting
Step #1: f6dc80d9d167: Layer already exists
Step #1: 3ba4af0751c6: Layer already exists
Step #1: d379451f91b6: Layer already exists
Step #1: eefecba3f832: Pushed
Step #1: 7cc7fe68eff6: Pushed
Step #1: c61d96181ea9: Pushed
Step #1: a03adffad0f3bee9173bd6ce411de05ddac1e694: digest: sha256:ad862877e416c296835895993d5fdbbc12165c25550cf4716a08c8a3368573ef size: 1581
Finished Step #1
Starting Step #2
Step #2: Already have image (with digest): gcr.io/cloud-builders/docker
Step #2: The push refers to repository [us-east4-docker.pkg.dev/dev-sst-02/student-success-tool/webapp]
Step #2: eefecba3f832: Preparing
Step #2: c61d96181ea9: Preparing
Step #2: f6dc80d9d167: Preparing
Step #2: 3ba4af0751c6: Preparing
Step #2: d379451f91b6: Preparing
Step #2: 7cc7fe68eff6: Preparing
Step #2: 7cc7fe68eff6: Waiting
Step #2: 3ba4af0751c6: Layer already exists
Step #2: c61d96181ea9: Layer already exists
Step #2: f6dc80d9d167: Layer already exists
Step #2: eefecba3f832: Layer already exists
Step #2: d379451f91b6: Layer already exists
Step #2: 7cc7fe68eff6: Layer already exists
Step #2: latest: digest: sha256:ad862877e416c296835895993d5fdbbc12165c25550cf4716a08c8a3368573ef size: 1581
Finished Step #2
Starting Step #3
Step #3: Already have image (with digest): gcr.io/cloud-builders/gcloud
Step #3: Deploying container to Cloud Run service [dev-webapp] in project [dev-sst-02] region [us-east4]
Step #3: Deploying...
Step #3: Creating Revision............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................done
Step #3: Routing traffic.....done
Step #3: Done.
Step #3: Service [dev-webapp] revision [dev-webapp-00309-knz] has been deployed and is serving 100 percent of traffic.
Step #3: Service URL: https://dev-webapp-30046184227.us-east4.run.app
Finished Step #3
PUSH
DONE
Loading