Рубрики
Uncategorized

Настройка реестра пакетов GitHub с Docker и Golang

Примечание: это было первоначально размещено на Martinheinz.dev Как правило, для любого языка программирования, чтобы запустить … Tagged с Docker, DevOps, Go, GitHub.

Все, что вам нужно для вашего следующего проекта Golang (серия 4 деталей)

Примечание: это было первоначально опубликовано в martinheinz.dev

Как правило, для любого языка программирования для запуска вашего приложения вам нужно создать какой -то пакет ( npm для javascript , nuget for c# , …), а затем Храните это где -нибудь. В случае Docker , люди обычно просто бросают свои изображения в Docker Hub , но теперь у нас есть новая альтернатива …

Альтернатива — Реестр пакетов GitHub — это было в бета -версии уже некоторое время И кажется, что все больше и больше людей получают к нему доступ, поэтому кажется, что пришло время изучить его функции, здесь специально для Docker а также Go проекты

Этот пост является частью серии » Все, что тебе нужно Для вашего следующего проекта Golang « , если это звучит интересно, продолжайте и проверьте предыдущую часть Здесь Анкет

Примечание. Эта статья применима к любому проекту с использованием изображений Docker, а не только Golang.

Зачем использовать реестр GitHub

Прежде всего, зачем вам даже подумать о переходе, скажем, Docker Hub или любой другой реестр, чтобы Реестр пакетов GitHub :

  • Если вы уже используете GitHub Как ваш SCM, тогда имеет смысл использовать Реестр пакетов GitHub , поскольку это позволяет вам держать все в одном месте, вместо того, чтобы выдвигать свои пакеты в другом месте.
  • Есть еще одна блестящая новая ( бета ) функция GitHubДействия , который вы можете использовать в сочетании с Реестр пакетов GitHub (Подробнее об этом в другом посте …).
  • Хотя я считаю Docker Изображения, превосходящие, например, npm Пакеты, вы также можете подтолкнуть их к Реестр пакетов GitHub , если вы предпочитаете не докер Артефакты.

Давай сделаем это!

Итак, теперь давайте посмотрим, как его использовать. Давайте начнем с создания и пометив ваше изображение:

Примечание. Если вы работаете с Go, то вы можете заказать. Мой репозиторий здесь , где все развлечения реестра пакетов Github уже связаны с целями Makefile.

docker build -t  docker.pkg.github.com///: .

# For Example
docker build -t  docker.pkg.github.com/martinheinz/go-project-blueprint/blueprint:latest .

Чтобы иметь возможность подталкивать изображения к Реестр пакетов GitHub Вам нужно назвать его, используя формат, показанный выше — который действительно является просто URL -адресом реестра с вашим GitHub Имя пользователя и имя репозитория.

Далее, как мы можем получить к нему доступ?

Во -первых, иметь возможность аутентифицировать себя с Github Package Registry , нам нужно создать токен личного доступа. Этот токен доступа должен иметь Читать: пакеты и написать: пакеты Область и дополнительно в случае, если у вас есть личный репозиторий, вам придется включить Репо Область также.

Уже очень хороший гид на GitHub Помогите веб -сайт о том, как создать личный токен, поэтому я не собираюсь копировать и вставлять здесь шаги. Вы можете прочитать об этом здесь

Теперь у нас есть личный токен Давайте войти в систему:

docker login docker.pkg.github.com -u  -p 

# For Example:
docker login docker.pkg.github.com -u MartinHeinz -p dgni723a3k67fsdj65e # Not an actual token, so don't even try

Наконец, время, чтобы разжечь наше изображение:

docker push docker.pkg.github.com///:

# For Example:
docker push docker.pkg.github.com/martinheinz/go-project-blueprint/blueprint:latest

И, очевидно, вы также можете вытащить изображение:

docker pull docker.pkg.github.com///:

# For Example:
docker pull docker.pkg.github.com/martinheinz/go-project-blueprint/blueprint:latest

Используйте его в трубопроводе CI/CD

Последнее, что мы могли бы захотеть сделать с Реестр пакетов GitHub это интегрировать его с инструментами CI/CD. Давайте посмотрим, как это можно сделать с Трэвис ( полная .travis.yml можно найти в моем репозитории Здесь ):

# ...
- language: go  # Push if on master
      services:
        - docker
      if: branch = master
      script:
        - export GO111MODULE=on
        - go mod vendor  # Download dependencies
        # Important stuff start here 👇
        - echo "$DOCKER_PASSWORD" | docker login docker.pkg.github.com -u "$DOCKER_USERNAME" --password-stdin
        - docker build -t  docker.pkg.github.com/martinheinz/go-project-blueprint/blueprint:latest .
        - docker push docker.pkg.github.com/martinheinz/go-project-blueprint/blueprint:latest
# ...

Как вы можете видеть выше, вы можете запустить сборка и push Точно так же, как на вашей машине, единственная разница — это Docker Login Анкет Здесь мы используем переменные среды, указанные в Трэвис UI. Имя пользователя передается в команду входа через -u Параметр и пароль с использованием Эхо в stdin , это нужно, чтобы мы не заканчивались нашим личным GitHub токен печатается в Трэвис журналы.

Итак, как мы можем установить эти переменные среды? Это шаги:

  • Перейдите к своему Трэвис Настройки работы для вашего репозитория, например, https://travis-ci.com/MartinHeinz/go-project-blueprint/settings
  • Прокрутите вниз до Переменные среды раздел
  • Установите имя переменной на Docker_username и Docker_password соответственно. В случае пароля ( github token) убедитесь, что Значение отображения в журнале сборки установлен на ложь.
  • Нажмите Добавить и запустить сборку

Если вы не используете Трэвис и хочу использовать Github Webhook Чтобы запустить сборку, тогда вы можете использовать RegistryPackageEvent Анкет Это может быть полезно, если вы используете, например, Дженкинс , OpenShift или Kubernetes и хочу запустить развертывание каждый раз, когда ваш пакет публикуется или обновляется в Реестр пакетов GitHub Анкет

Слова осторожности

Одна вещь, которую вы должны помнить при использовании Реестр пакетов GitHub Это то, что вы не можете удалить пакеты, которые вы подталкиваете в реестр. Это так, что вы не нарушаете проекты, которые зависят от вашего пакета. Вы можете запросить удаление пакета из Поддержка GitHub , но вы не должны рассчитывать на то, что они действительно что -либо удаляют.

Вывод

Я надеюсь, что после прочтения вы дадите Реестр пакетов GitHub выстрел. Если у тебя нет бета Доступ еще, вы можете зарегистрироваться Здесь Анкет Если у вас есть какие -либо вопросы, не стесняйтесь обращаться ко мне, или вы также можете взглянуть на мой Репозиторий , где вы можете найти примеры Реестр пакетов GitHub Применение.

Ресурсы

Все, что вам нужно для вашего следующего проекта Golang (серия 4 деталей)

Оригинал: «https://dev.to/martinheinz/setting-up-github-package-registry-with-docker-and-golang-1ahc»