Код: Выделить всё
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: 'read'
id-token: 'write' # Required for OIDC
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Auth to GCP via OIDC
uses: google-github-actions/auth@v2
with:
workload_identity_provider: projects//locations/global/workloadIdentityPools/
/providers/
service_account: @.iam.gserviceaccount.com
- name: Set up gcloud
uses: google-github-actions/setup-gcloud@v2
with:
project_id:
- name: Install build dependencies
run: |
pip install keyrings.google-artifactregistry-auth
- name: Configure Docker for Artifact Registry
run: gcloud auth configure-docker us-central1-docker.pkg.dev
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: us-central1-docker.pkg.dev///myimage:latest
< /code>
Dockerfile
Код: Выделить всё
FROM python:3.12-slim
RUN apt-get update && \
apt-get install -y --no-install-recommends git openssh-client && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN pip install --extra-index-url https://us-central1-python.pkg.dev///simple/ my-backend==0.1.3 && \
pip install gunicorn
CMD ["gunicorn", "my_backend.app:app"]
< /code>
It gives error
7 [3/3] RUN pip install --extra-index-url https://us-central1-python.pkg.dev///simple/ my-backend==0.1.3 && pip install gunicorn
#7 1.481 Looking in indexes: https://pypi.org/simple, https://us-central1-python.pkg.dev///simple/, https://us-central1-python.pkg.dev///simple/
#7 1.890 User for us-central1-python.pkg.dev: User for us-central1-python.pkg.dev: WARNING: There was an error checking the latest version of pip.
#7 2.197 ERROR: Exception:
#7 2.197 Traceback (most recent call last):
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_internal/cli/base_command.py", line 106, in _run_wrapper
#7 2.197 status = _inner_run()
#7 2.197 ^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_internal/cli/base_command.py", line 97, in _inner_run
#7 2.197 return self.run(options, args)
#7 2.197 ^^^^^^^^^^^^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_internal/cli/req_command.py", line 67, in wrapper
#7 2.197 return func(self, options, args)
#7 2.197 ^^^^^^^^^^^^^^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_internal/commands/install.py", line 386, in run
#7 2.197 requirement_set = resolver.resolve(
#7 2.197 ^^^^^^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 95, in resolve
#7 2.197 result = self._result = resolver.resolve(
#7 2.197 ^^^^^^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers.py", line 546, in resolve
#7 2.197 state = resolution.resolve(requirements, max_rounds=max_rounds)
#7 2.197 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers.py", line 397, in resolve
#7 2.197 self._add_to_criteria(self.state.criteria, r, parent=None)
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers.py", line 173, in _add_to_criteria
#7 2.197 if not criterion.candidates:
#7 2.197 ^^^^^^^^^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_vendor/resolvelib/structs.py", line 156, in __bool__
#7 2.197 return bool(self._sequence)
#7 2.197 ^^^^^^^^^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 174, in __bool__
#7 2.197 return any(self)
#7 2.197 ^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 162, in
#7 2.197 return (c for c in iterator if id(c) not in self._incompatible_ids)
#7 2.197 ^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 49, in _iter_built
#7 2.197 for version, func in infos:
#7 2.197 ^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 307, in iter_index_candidate_infos
#7 2.197 result = self._finder.find_best_candidate(
#7 2.197 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_internal/index/package_finder.py", line 892, in find_best_candidate
#7 2.197 candidates = self.find_all_candidates(project_name)
#7 2.197 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_internal/index/package_finder.py", line 833, in find_all_candidates
#7 2.197 page_candidates = list(page_candidates_it)
#7 2.197 ^^^^^^^^^^^^^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_internal/index/sources.py", line 193, in page_candidates
#7 2.197 yield from self._candidates_from_page(self._link)
#7 2.197 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_internal/index/package_finder.py", line 793, in process_project_url
#7 2.197 index_response = self._link_collector.fetch_response(project_url)
#7 2.197 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_internal/index/collector.py", line 448, in fetch_response
#7 2.197 return _get_index_content(location, session=self.session)
#7 2.197 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_internal/index/collector.py", line 352, in _get_index_content
#7 2.197 resp = _get_simple_response(url, session=session)
#7 2.197 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_internal/index/collector.py", line 131, in _get_simple_response
#7 2.197 resp = session.get(
#7 2.197 ^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_vendor/requests/sessions.py", line 602, in get
#7 2.197 return self.request("GET", url, **kwargs)
#7 2.197 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_internal/network/session.py", line 523, in request
#7 2.197 return super().request(method, url, *args, **kwargs)
#7 2.197 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_vendor/requests/sessions.py", line 589, in request
#7 2.197 resp = self.send(prep, **send_kwargs)
#7 2.197 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_vendor/requests/sessions.py", line 710, in send
#7 2.197 r = dispatch_hook("response", hooks, r, **kwargs)
#7 2.197 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_vendor/requests/hooks.py", line 30, in dispatch_hook
#7 2.197 _hook_data = hook(hook_data, **kwargs)
#7 2.197 ^^^^^^^^^^^^^^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_internal/network/auth.py", line 505, in handle_401
#7 2.197 username, password, save = self._prompt_for_password(parsed.netloc)
#7 2.197 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_internal/network/auth.py", line 460, in _prompt_for_password
#7 2.197 username = ask_input(f"User for {netloc}: ") if self.prompting else None
#7 2.197 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#7 2.197 File "/usr/local/lib/python3.12/site-packages/pip/_internal/utils/misc.py", line 243, in ask_input
#7 2.197 return input(message)
#7 2.197 ^^^^^^^^^^^^^^
#7 2.197 EOFError: EOF when reading a line
#7 ERROR: process "/bin/sh -c pip install --extra-index-url https://us-central1-python.pkg.dev///simple/ my-backend==0.1.3 && pip install gunicorn" did not complete successfully: exit code: 2
< /code>
If I run pip install --extra-index-url https://us-central1-python.pkg.dev///simple/ my-backend==0.1.3
Что мне нужно сделать, чтобы убедиться, что Docker в Github Doass способен достичь артефакты GCP с помощью OIDC?
Подробнее здесь: https://stackoverflow.com/questions/797 ... -artifacts