Публично убедиться, что открытый исходный код был развернут как есть - PullRequest
4 голосов
/ 07 апреля 2019

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

Есть ли что-то, что может помочь с этим?Может быть, инструмент с открытым исходным кодом, такой как Travis-CI, который может помочь проверить, что развертывание было выполнено с использованием самого последнего кода из ветви X?Или, возможно, существует известный способ сделать это, используя какую-то контрольную сумму для развертываемого исходного кода?

Любая помощь / руководство будет высоко ценится.

1 Ответ

0 голосов
/ 20 апреля 2019

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

Это зависит от вашего языка компиляции.

Go, например, будет использовать флаги сборки (как в этом примере ):

go build -i -v -ldflags="-X main.version=$(git describe --always --long --dirty)" github.com/MyUserName/MyProject

Travis-CI будет использовать те же ldflags , но сфиксированное значение.

В этом примере просто добавьте коммит Git в качестве флага.

script:
  - go get -t -v ./...
  - diff -u <(echo -n) <(gofmt -d .)
  - go vet $(go list ./... | grep -v /vendor/)
  - go test -v -race ./...
  # Only build binaries from the latest Go release.
  - if [ "${LATEST}" = "true" ]; then gox -os="linux darwin windows" \
      -arch="amd64" -output="logshare.." \
      -ldflags "-X main.Rev=`git rev-parse --short HEAD`" -verbose ./...; fi

Опять же, это шаг сборки, до шаг развертывания.
И это проиллюстрировано для Go, но идея остается для любого другого языка.

Во время выполнения программа может отобразить свою версию и сообщить пользователю о GitHub.ссылка: они могут проверить, что ссылка используется для сборки.


Альтернативный подход: подписание образа докера

Тогда ваш Travis-CI может подать заявкучто на этапах сборки для обмена этим образом .
Bно вам нужно будет управлять ключами Docker Content Trust (DCT) .

...