исправление версий инструментов, используемых go - PullRequest
0 голосов
/ 31 октября 2018

Я хочу создавать воспроизводимые сборки с помощью go. Для индивидуальных проектов мы используем glide.

Так, например, я использую:

glide get github.com/stretchr/testify

для исправления версии пакета "testify". Это не работает для инструментов, однако. Например:

glide install github.com/tebeka/go2xunit

возвращает успех, но на самом деле не устанавливает go2xunit поэтому я должен использовать:

go get github.com/tebeka/go2xunit

, который устанавливает go2xunit в $ GOPATH / bin .

В Как исправить версию таких инструментов, как go2xunit?

Я также отмечаю, что glide говорит, что вместо этого используется dep 10 , а dep говорит, что golang отклонился от своей реализации и, вероятно, в конечном итоге будет использовать что-то, основанное на vgo . Существует множество инструментов управления зависимостями для go, может быть, один из менее известных поддерживает это?

В случае необходимости я использую go 1.7.4, как это предусмотрено в Debian9.

1 Ответ

0 голосов
/ 31 октября 2018

Решением для go1.11 с использованием модулей go является создание пакета поддельных инструментов . Вы создаете файл tools.go , как показано ниже:

// +build tools

package tools

import (
        _ "github.com/tebeka/go2xunit"
)

+ build tools - магический комментарий, который запрещает сборку пакета.

>go mod init tools

Создает go.mod файл для подделки tools package

>go install github.com/tebeka/go2xunit

Устанавливает go2xunit и обновляет go.mod следующим образом.

module tools

require github.com/tebeka/go2xunit v1.4.8 // indirect

Теперь, если вы запустите , в будущем установите github.com/tebeka/go2xunit (скажем, для чистой сборки) его версия будет исправлена ​​до v1.4 с помощью go.mod


Для версий, предшествующих 1.11, используемым инструментом является retool . Это работает так:

самозагрузка:

go get github.com/twitchtv/retool

добавить инструмент:

retool add github.com/jteeuwen/go-bindata/go-bindata origin/master

используйте инструмент:

retool do go-bindata -pkg testdata -o ./testdata/testdata.go ./testdata/data.json

Добавление поддержки для этого может быть в дорожной карте к цели 1.12 (https://github.com/golang/go/issues/27653)

...