首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >公开验证开放源代码是否按原样部署

公开验证开放源代码是否按原样部署
EN

Stack Overflow用户
提问于 2019-04-07 09:23:16
回答 1查看 210关注 0票数 4

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

有什么可以帮上忙的吗?也许是像Travis-CI这样的开源工具,可以帮助验证是否使用X分支的最新代码完成了部署?或者,也许有一种已知的方法可以使用可部署源代码的某种校验和来实现这一点?

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

EN

回答 1

Stack Overflow用户

发布于 2019-04-20 09:15:11

这是一个构建问题:您需要能够在编译后的交付中包含校验和,该校验和显示了所说的可交付内容是从哪个来源编译的。

这取决于您的编译语言。

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

代码语言:javascript
运行
复制
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 commit作为一个标志。

代码语言:javascript
运行
复制
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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55554855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档