go ``` x/build: 添加 Fedora 构建器 ```

nwlls2ji  于 4个月前  发布在  Go
关注(0)|答案(7)|浏览(46)

我们有一个Debian-sid构建器。还要添加Fedora吗?
这将有助于解决https://go-review.googlesource.com/c/go/+/127895(对于#26369)的问题。

ua4mk5z4

ua4mk5z41#

为了记录,这也有助于更早地捕获https://go-review.googlesource.com/c/go/+/86541对于#23373
它将有助于垃圾回收器(GC)测试与最新版本的binutils、glibc、内核等的集成(在Fedora中,最新版本通常比Debian更新得更快)。
作为Fedora的GC维护者,我愿意帮助维护它,调查并修复构建失败的问题。
你能建议我可以做些什么来帮助实现这个目标吗?

qeeaahzv

qeeaahzv2#

嗯,为我们的系统添加一个Fedora容器是轻而易举的。但缺点是我们将使用https://cloud.google.com/container-optimized-os/的Linux内核。这通常是相当新的内核,但可能与Fedora的配置不同。
我们可以添加一个完整的Fedora虚拟机镜像(就像我们为其他十几种非Linux操作系统/版本所做的那样),但这需要更多的工作。(我们需要准备一个脚本,当在Linux上运行时,它会产生一个可启动的GCE虚拟机镜像。请参阅https://github.com/golang/build/tree/master/env中的Plan 9和BSD)

1cklez4t

1cklez4t3#

抱歉回复时间较长。

我认为两者都有好处。对于容器,我认为应该使用fedora:rawhide和fedora:latest来测试不稳定的rawhide和最新的稳定版本。Rawhide更像是非阻塞的烟雾测试(它可能会时不时地出现问题/过时)。

在快速查看GCE和脚本后,它似乎不支持常规的AWS或openstack图像格式,对吗?(Fedora Cloud图像是为这些格式生产的。)是否有关于需要GCE和Go CI运行的内容的总结(这比反向工程脚本要容易得多)?

x7rlezfr

x7rlezfr5#

在快速查看GCE和脚本后,它不支持常规的AWS或openstack镜像格式,对吗?(Fedora Cloud images是为那些而生产的。)有没有关于需要GCE和Go CI运行的内容的总结(这比反向工程脚本要容易得多)?
这些可能与适当的yaml云初始化元数据一起工作得很好。构建系统的概述可以在https://github.com/golang/build/#go-build-tools找到,但要点是创建一个虚拟机,它需要启动并下载cmd/buildlet二进制文件并运行它。(构建器二进制文件不应嵌入到VM映像中)
通常我们使用x/build/cmd/buildlet/stage0二进制文件或仅使用一些shell脚本在启动时下载cmd/buildlet二进制文件。我认为shell在这里会很好地工作,这将适合cloud-init yaml元数据。
例如,NetBSD(为了选择一个有点任意的镜像):

commands = [
    """cat >> /etc/rc.local <<EOF
(
  export PATH=/usr/pkg/bin:/usr/pkg/sbin:${PATH}
  export GOROOT_BOOTSTRAP=/usr/pkg/go14
  set -x
  echo 'starting buildlet script'
  netstat -rn
  cat /etc/resolv.conf
  dig metadata.google.internal
  (
    set -e
    curl -o /buildlet \$(curl -H 'Metadata-Flavor: Google' http://metadata.google.internal/computeMetadata/v1/instance/attributes/buildlet-binary-url)
    chmod +x /buildlet
    exec /buildlet
  )
  echo 'giving up'
  sleep 10
  halt -p
)

如果您能指出Fedora云映像执行cloud-init操作以及执行上述操作的cloud-init yaml,那可能就足够了。

6l7fqoea

6l7fqoea6#

感谢bradfitz。Fedora云镜像可以从https://download.fedoraproject.org/pub/fedora/linux/releases/29/Cloud/x86_64/images/获取,还有Fedora-Cloud-Base-29-1.2.x86_64.qcow2Fedora-Cloud-Base-29-1.2.x86_64.raw.xz镜像以及两个vagrant盒子。我会根据上述提到的镜像进行一些cloud init文件的修改。并尝试找出是否有通用的方法来获取最新的镜像。

v440hwme

v440hwme7#

https://golang.org/cl/175999提到了这个问题:env/linux-x86-fedora: add Fedora builder

相关问题