Рубрики
Uncategorized

Действия GitHub Рабочие процессы в сочетании с видимостью реестра GitHub контейнера

На прошлой неделе моя задача состояла в том, чтобы настроить контейнерное изображение, которое мы хотели использовать для тестирования контейнера GitHub … Теги с Github, Devops.

На прошлой неделе, моя задача состояла в том, чтобы настроить контейнерное изображение, которое мы хотели использовать для проверки реестра контейнеров GitHub (GHCR). Мы хотели посмотреть, сможем ли мы снизить наше время здания для одной из наших рабочих мест CI при использовании реестра GitHub. Ниже приведено описание ошибки, которую мы столкнулись, и как мы избавились от этого. Кроме того, я расскажу о различных видимых типах контейнерных изображений или пакетов, как их называют в GitHub, которые были препятствием, мы должны были взять с собой реестр.

Workflow.yaml Файл, который мы использовали, выглядели что-то вроде следующего:

name: CI

on:
  - pull_request

jobs:
  continous-integration:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Log in to the Container registry
        uses: docker/login-action@v1
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
    - name: Pull Image from ghcr.io
      run: docker pull ghcr.io/USERNAME/MY_PRIVATE_IMAGE
    ...

Во-первых, мы проверяем репозиторий и вступайте в реестр контейнера GitHUB впоследствии с нашими github.actor Как имя пользователя и Github_token как пароль. После успешного входа в систему мы вытягиваем наш контейнер из реестра. Шаги, приходящие после этого, не подлежат ошибке, которую мы столкнулись, поэтому они остаются в этой статье.

Ошибка

После запуска рабочего процесса с запросом потягивания рабочий процесс быстро ответил на Ответ ошибки от демона: несанкционирован При попадании в Docker Pult ghcr.io/username/my_private_image шаг. После поиска ответа в Github Docs и Интернете мы обнаружили, что наша проблема лежит внутри видимости типа контейнера. Я пойду в дальнейшие детали в разделах ниже.

Настройки пакета и видимость

Проблема произошла с изображением, построенным и сохраненным в учетной записи организации GitHub. Для обычных пакетов в GHCR доступны два типа — публичный и Частный Отказ Существует также третий вид видимости внутренний Доступно в Github Enterprise Cloud Plan. После создания и нажатия контейнеровочного изображения на GitHub Packages Тип видимости по умолчанию после создания всегда устанавливается наедине. Это может быть изменено в настройках пакета. В следующих параметрах будут описаны 3 варианта и о том, как они влияют на способность работать с этими пакетами в действиях GitHub.

Публичный

Изменение видимости пакета на публичный Это самый простой вариант этих 3 для работы с. После того, как публику пакета это видно для всех, и его можно вытащить анонимно через ghcr.io. Это хорошо для публичных изображений приложений, таких как веб-приложения или веб-серверы, такие как Nginx. Во время работы с действиями GitHub Это также самый простой вариант видимости, поскольку нам не нужно войти в систему в реестр. Таким образом, использование публичного хранилища так же простой, как он получает. Однако это не было жизнеспособным вариантом для нас.

ПРЕДУПРЕЖДЕНИЕ: при создании общественности пакета его нельзя сделать

Частный

Вариант видимости Частный По умолчанию используется, когда изображение контейнера создается в первую очередь. Доступность ограничена только людям, которые были предоставлены права от владельца пакета в настройках пакета. При данном доступе можно вытащить или с продвинутыми правами. Написать/обновить или исключить пакет полностью. Чтобы потянуть или изменить изображение через CLI или API, нужно сначала аутентифицироваться с реестром контейнера. Аутентификация по тягу, обновлению или удалению контейнерового изображения происходит через личный токен доступа (pat). Как сделать это описано в документации GitHUB. 1 Без аутентификации сначала увидит ответ ошибки Несанкционированный с начала этого поста. Для Github Действия Рабочие процессы GitHub рекомендуют использовать Github_token. вместо этого доступно в рабочем процессе.

В любом случае, используя частный пакет в рабочем процессе действий GitHub, даже не работал, даже когда учетная запись, которая вызвала рабочий процесс и использовалась для аутентификации с реестром контейнера. Вход в реестр даже удалось, но следующий шаг вытягивания не удался из-за Несанкционированный Ошибка отображается выше. Даже после предоставления Действия GitHub хранилища Действия Доступ к пакету 2 Не удалось потянуть изображение.

Внутренний

Решение пришло из сообщества GitHub, ответ 3 Отказ внутренний Тип видимости — это ответ нашей проблеме здесь. С помощью этого параметра изображение контейнера видна в целой организации или всех организациях на предприятии. У каждого участника по крайней мере, чтение/тяги к пакету. Запишите и удалять права затем даны через настройки пакета. Действия GitHub Actions довольно расплывчаты о том, что внутренняя видимость делает по-разному, чем предоставление разрешений учетной записи пользователя, которые запускают рабочий процесс в первую очередь.

Вывод

После установки видимости пакета на внутренний Это было возможно для успешного запуска нашего рабочего процесса. Во всяком случае, мы обнаружили, что репозиторий GitHub еще не лучший вариант, чтобы мигрировать с нашими пробегами CI. Имея возможность кэшировать изображение контейнера, будет иметь огромную разницу в скорости. Но так как это не (пока?) Возможно, мы останемся с нашей текущей установкой.

Спасибо за чтение, Никлас

  1. Работа с реестром контейнера — GitHub Docs

  2. Настройка контроля и видимости доступа пакета — Github Docs

  3. Не могу тянуть Private Private Ghcr.io Docker Image, используя Github_token — # 3 MPDude — Github Activers — Github Community

Оригинал: «https://dev.to/niklasmtj/github-actions-workflows-in-combination-with-github-container-registry-package-visibility-1no0»