Вопрос или проблема
github actions
регистрация артефактов google cloud
Неаутентифицированные запросы не имеют разрешения “artifactregistry.repositories.uploadArtifacts”
ОШИБКА: (gcloud.auth.docker-helper) Проблема с обновлением ваших текущих токенов аутентификации: (‘Не удается получить полномочия от имени другого пользователя’, ‘{\n “error”: {\n “code”: 403,\n “message”: “Разрешение ‘iam.serviceAccounts.getAccessToken’ отказано на ресурсе (или он может не существовать).”,\n “status”: “PERMISSION_DENIED”,\n “details”: [\n {\n “@type”: “type.googleapis.com/google.rpc.ErrorInfo”,\n “reason”: “IAM_PERMISSION_DENIED”,\n “domain”: “iam.googleapis.com”,\n “metadata”: {\n “permission”: “iam.serviceAccounts.getAccessToken”\n }\n }\n ]\n }\n}\n’)
Пожалуйста, выполните:
$ gcloud auth login
чтобы получить новые учетные данные.
Если вы уже вошли в систему с другой учетной записью, выполните:
$ gcloud config set account ACCOUNT
чтобы выбрать уже аутентифицированную учетную запись для использования.
Выгрузка относится к репозиторию [***/front-end]
2bb4a2be8519: Подготовка
d26381110329: Подготовка
e81429117070: Подготовка
7bf3eb1a80e4: Подготовка
43adef21ed65: Подготовка
f7df5efb2c99: Подготовка
5b316f9079a1: Подготовка
5e19cd5b03d0: Подготовка
678ea5c52c14: Подготовка
8d853c8add5d: Подготовка
f7df5efb2c99: Ожидание
5b316f9079a1: Ожидание
5e19cd5b03d0: Ожидание
678ea5c52c14: Ожидание
8d853c8add5d: Ожидание
отказано: Неаутентифицированный запрос. Неаутентифицированные запросы не имеют разрешения “artifactregistry.repositories.uploadArtifacts” на ресурс
Я пытаюсь создать задачу CD с помощью github actions и google cloud.
но у меня возникла проблема с разрешением.
Ответ или решение
Для решения проблемы с отсутствием разрешения "artifactregistry.repositories.uploadArtifacts" при работе с GitHub Actions и Google Cloud Artifact Registry, нужно выполнить несколько шагов, чтобы убедиться, что ваш проект настроен правильно и аутентификация выполняется должным образом.
Шаг 1: Настройка прав доступа
-
Проверьте разрешения Service Account:
- Убедитесь, что Service Account, который вы используете для аутентификации в Google Cloud, имеет необходимые разрешения. В данном случае вам потребуются следующие IAM роли:
roles/artifactregistry.admin
илиroles/artifactregistry.writer
- Вы можете проверить и изменить настройки IAM в консоли Google Cloud: Консоль IAM.
- Убедитесь, что Service Account, который вы используете для аутентификации в Google Cloud, имеет необходимые разрешения. В данном случае вам потребуются следующие IAM роли:
-
Проверьте, что Service Account имеет доступ к проекту:
- Параметры доступа должны быть правильными. Убедитесь, что ваш Service Account привязан к проекту, который вы используете для работы с Artifact Registry.
Шаг 2: Настройка аутентификации в GitHub Actions
-
Создайте Secret в GitHub:
- В настройках вашего репозитория на GitHub создайте секреты для хранения ключа вашего Service Account.
- Вам нужен файл ключа (JSON), который вы можете скачать из консоли Google Cloud.
- Перейдите в настройки репозитория → Secrets and variables → Actions → New repository secret.
- Назовите ваш секрет, например,
GCP_SERVICE_ACCOUNT_KEY
.
-
Используйте GitHub Actions для аутентификации:
В вашем файле конфигурации GitHub Actions (.github/workflows/your_workflow.yml
), добавьте следующий шаг для аутентификации:jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Set up GCloud uses: `google-github-actions/setup-gcloud@master` with: service_account_key: ${{ secrets.GCP_SERVICE_ACCOUNT_KEY }} project_id: your_project_id export_default_credentials: true # Пример команды для публикации в Artifact Registry - name: Build and Push to Artifact Registry run: | docker build -t us-central1-docker.pkg.dev/your_project_id/your_repository/image_name:tag . docker push us-central1-docker.pkg.dev/your_project_id/your_repository/image_name:tag
Шаг 3: Проверка токенов
Если вы уже выполнили аутентификацию, но все еще получаете ошибку, попробуйте сбросить и заново настроить аутентификацию:
-
Проверка аккаунта:
- Запустите команду:
gcloud auth list
- Убедитесь, что нужный аккаунт активен.
- Запустите команду:
-
Активируйте доступ:
- Запустите:
gcloud auth activate-service-account --key-file=path_to_your_service_account_key.json
- Запустите:
Шаг 4: Избегайте "Unauthenticated requests"
Если после выполнения всех вышеуказанных шагов вы все еще получаете ошибку "Unauthenticated request", убедитесь, что:
- Вы правильно указываете весь путь к вашему ресурсам в Artifact Registry (репозиторий, проект, образ).
- Ваш Service Account является владельцем репозитория в Artifact Registry.
Следуя этим шагам, вы сможете устранить сообщение об ошибке и успешно выполнять CI/CD с помощью GitHub Actions и Google Cloud Artifact Registry.