Неавторизованные запросы не имеют разрешения “artifactregistry.repositories.uploadArtifacts”.

Вопрос или проблема

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: Настройка прав доступа

  1. Проверьте разрешения Service Account:

    • Убедитесь, что Service Account, который вы используете для аутентификации в Google Cloud, имеет необходимые разрешения. В данном случае вам потребуются следующие IAM роли:
      • roles/artifactregistry.admin или
      • roles/artifactregistry.writer
    • Вы можете проверить и изменить настройки IAM в консоли Google Cloud: Консоль IAM.
  2. Проверьте, что Service Account имеет доступ к проекту:

    • Параметры доступа должны быть правильными. Убедитесь, что ваш Service Account привязан к проекту, который вы используете для работы с Artifact Registry.

Шаг 2: Настройка аутентификации в GitHub Actions

  1. Создайте Secret в GitHub:

    • В настройках вашего репозитория на GitHub создайте секреты для хранения ключа вашего Service Account.
    • Вам нужен файл ключа (JSON), который вы можете скачать из консоли Google Cloud.
    • Перейдите в настройки репозитория → Secrets and variables → Actions → New repository secret.
    • Назовите ваш секрет, например, GCP_SERVICE_ACCOUNT_KEY.
  2. Используйте 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: Проверка токенов

Если вы уже выполнили аутентификацию, но все еще получаете ошибку, попробуйте сбросить и заново настроить аутентификацию:

  1. Проверка аккаунта:

    • Запустите команду:
      gcloud auth list
    • Убедитесь, что нужный аккаунт активен.
  2. Активируйте доступ:

    • Запустите:
      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.

Оцените материал
Добавить комментарий

Капча загружается...