公开验证开源代码按原样部署

问题描述 投票:4回答:1

假设我们在GitHub上有一些开源项目及其源代码。我想将它部署到某个服务器,让人们访问一些信息丰富的页面/工具/以任何可靠的方式通知其有效地部署到服务器的内容正是存储库中的代码。

有什么东西可以帮助解决这个问题吗?也许像Travis-CI这样的开源工具可以帮助验证使用X分支的最新代码完成部署?或者,对于可部署的源代码,使用某种校验和可能有一种已知的方法可以做到这一点?

任何帮助/指导将不胜感激。

deployment open-source travis-ci checksum verification
1个回答
-1
投票

这是一个构建问题:您需要能够在已编译的交付中包含校验和,该校验和显示已编译的可交付项的来源。

这取决于您的编译语言。

例如,Go会使用构建标志(如in this example):

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

Travis-CI会use the same ldflags,但具有固定价值。

This example只是将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引用:他们可以检查引用是否是用于构建的引用。


替代方法:signing a docker image

然后你的Travis-CI可以在build stages for sharing that image上申请。 但是你需要管理Docker Content Trust (DCT) keys

© www.soinside.com 2019 - 2024. All rights reserved.