aqua поддерживает создание инструментов с помощью Go

Оригинальное сообщение: https://aquaproj.github.io/blog/2022/05/30/support-building-go-tools

aqua — это менеджер версий CLI, написанный на языке Go.

https://aquaproj.github.io/

В этом посте я описываю функцию, появившуюся в версии aqua v1.7.0.

Начиная с версии 1.7.0, aqua поддерживает сборку инструментов, написанных на Go, когда они установлены.

Например, mitchellh/gox не предоставляет собранные двоичные файлы, поэтому вам придется собирать их самостоятельно.

https://github.com/mitchellh/gox#installation

Чтобы установить Gox, используйте go get. Мы помечаем версии, так что не стесняйтесь проверить этот тег и скомпилировать.

Поэтому для aqua было сложно поддерживать gox.

Но начиная с версии 1.7.0, aqua ввела новый тип пакетов go для поддержки этих инструментов.
Когда пакеты типа go установлены, архивы репозитория GitHub (tarball) загружаются и разархивируются, а двоичные файлы собираются командой go build.
Для запуска команды go build требуется Go. Насколько я понимаю, мы можем безопасно запускать go build, поскольку в go build не запускаются вредоносные внешние команды.

Использование

Использование пакетов типа go точно такое же, как и других пакетов типа.

Например.

$ aqua init
$ aqua g -i mitchellh/gox
$ cat aqua.yaml
---
# aqua - Declarative CLI Version Manager
# https://aquaproj.github.io/
registries:
- type: standard
  ref: v2.19.0 # renovate: depName=aquaproj/aqua-registry
packages:
- name: mitchellh/gox@v1.0.1

$ aqua i
INFO[0000] create a symbolic link                        aqua_version=1.9.0 env=darwin/arm64 link_file=/Users/shunsukesuzuki/.local/share/aquaproj-aqua/bin/gox new=aqua-proxy package_name=mitchellh/gox package_version=v1.0.1 program=aqua registry=standard registry_ref=v2.19.0
INFO[0000] download and unarchive the package            aqua_version=1.9.0 env=darwin/arm64 package_name=mitchellh/gox package_version=v1.0.1 program=aqua registry=standard registry_ref=v2.19.0
INFO[0000] building Go tool                              aqua_version=1.9.0 env=darwin/arm64 exe_path=/Users/shunsukesuzuki/.local/share/aquaproj-aqua/pkgs/go/github.com/mitchellh/gox/v1.0.1/bin/gox file_name=gox go_build_dir=/Users/shunsukesuzuki/.local/share/aquaproj-aqua/pkgs/go/github.com/mitchellh/gox/v1.0.1/src/gox-1.0.1 go_src=. package_name=mitchellh/gox package_version=v1.0.1 program=aqua registry=standard registry_ref=v2.19.0
go: downloading github.com/hashicorp/go-version v1.0.0
go: downloading github.com/mitchellh/iochan v1.0.0
Войти в полноэкранный режим Выйти из полноэкранного режима

Пожалуйста, посмотрите журнал aqua i. Вы можете подтвердить, что gox собран.

Преимущество

  • Поддержка установки инструментов, для которых не предоставляется двоичный файл
  • Закрепление версии инструмента
  • Изменение версии инструмента для каждого проекта
  • Обновление инструментов с помощью Renovate

Указывать sha коммита вместо метки

Некоторые инструменты не помечены должным образом, или существует слишком большая разница между последней меткой и последней веткой по умолчанию.
В этом случае вы также можете указать sha коммита в качестве версии вместо тега.

например, aqua.yaml

registries:
- type: standard
  ref: v2.19.0
packages:
- name: mitchellh/gox
  version: 8c3b2b9e647dc52457d6ee7b5adcf97e2bafe131 # Specify commit sha
Войти в полноэкранный режим Выйти из полноэкранного режима

Можно ли указать latest, как go install?

Как вы знаете, go install поддерживает указание latest.

например.

$ go install github.com/google/wire/cmd/wire@latest
Войти в полноэкранный режим Выйти из полноэкранного режима

С другой стороны, aqua не поддерживает указание latest, потому что aqua — это CLI менеджер версий.
Вы должны строго указывать версию.

Примеры инструментов, поддерживаемых типом пакета go

В релизе aqua-registry v2.19.0 aqua-registry поддерживает следующие пакеты типа go.

  • golang/tools/gopls: Сервер языка Go
  • google/wire: Инъекция зависимостей во время компиляции для Go
  • katbyte/terrafmt: Форматирование блоков terraform, встроенных в файлы
  • mitchellh/gox: Простой, без излишеств инструмент для кросс-компиляции Go
  • anqiansong/github-compare: Инструмент статистики командной строки для сравнения репозиториев GitHub.

Заключение

В этом посте я описал функции, представленные в версии aqua v1.7.0.
Начиная с версии 1.7.0, aqua поддерживает сборку инструментов, написанных на Go, при их установке.
Эта возможность является мощной и меняет управление инструментами Go, которые не предоставляют двоичных файлов.

Ссылка

  • https://github.com/aquaproj/aqua/releases/tag/v1.7.0
  • https://github.com/aquaproj/aqua-registry/releases/tag/v2.19.0
  • https://github.com/aquaproj/aqua-registry/pull/3713
  • https://aquaproj.github.io/docs/reference/registry-config#go-package
  • https://zenn.dev/shunsuke_suzuki/scraps/7e8ac509fe39bd (японский)

Оцените статью
Procodings.ru
Добавить комментарий