Все, что вам нужно для вашего следующего проекта 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 Применение.
Ресурсы
- https://github.com/features/package-registry
- https://help.github.com/en/articles/about-github-package-registry
Все, что вам нужно для вашего следующего проекта Golang (серия 4 деталей)
Оригинал: «https://dev.to/martinheinz/setting-up-github-package-registry-with-docker-and-golang-1ahc»