Это проблема сборки: вам нужно иметь возможность включить в свою скомпилированную поставку контрольную сумму, которая показывает, из каких источников был скомпилирован указанный результат.
Это зависит от вашего языка компиляции.
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) .