我们有一个Debian-sid构建器。还要添加Fedora吗?这将有助于解决https://go-review.googlesource.com/c/go/+/127895(对于#26369)的问题。
ua4mk5z41#
为了记录,这也有助于更早地捕获https://go-review.googlesource.com/c/go/+/86541对于#23373。它将有助于垃圾回收器(GC)测试与最新版本的binutils、glibc、内核等的集成(在Fedora中,最新版本通常比Debian更新得更快)。作为Fedora的GC维护者,我愿意帮助维护它,调查并修复构建失败的问题。你能建议我可以做些什么来帮助实现这个目标吗?
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)
1cklez4t3#
抱歉回复时间较长。
我认为两者都有好处。对于容器,我认为应该使用fedora:rawhide和fedora:latest来测试不稳定的rawhide和最新的稳定版本。Rawhide更像是非阻塞的烟雾测试(它可能会时不时地出现问题/过时)。
在快速查看GCE和脚本后,它似乎不支持常规的AWS或openstack图像格式,对吗?(Fedora Cloud图像是为这些格式生产的。)是否有关于需要GCE和Go CI运行的内容的总结(这比反向工程脚本要容易得多)?
gg0vcinb4#
@bradfitz ping
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,那可能就足够了。
6l7fqoea6#
感谢bradfitz。Fedora云镜像可以从https://download.fedoraproject.org/pub/fedora/linux/releases/29/Cloud/x86_64/images/获取,还有Fedora-Cloud-Base-29-1.2.x86_64.qcow2和Fedora-Cloud-Base-29-1.2.x86_64.raw.xz镜像以及两个vagrant盒子。我会根据上述提到的镜像进行一些cloud init文件的修改。并尝试找出是否有通用的方法来获取最新的镜像。
https://download.fedoraproject.org/pub/fedora/linux/releases/29/Cloud/x86_64/images/
Fedora-Cloud-Base-29-1.2.x86_64.qcow2
Fedora-Cloud-Base-29-1.2.x86_64.raw.xz
v440hwme7#
https://golang.org/cl/175999提到了这个问题:env/linux-x86-fedora: add Fedora builder
env/linux-x86-fedora: add Fedora builder
7条答案
按热度按时间ua4mk5z41#
为了记录,这也有助于更早地捕获https://go-review.googlesource.com/c/go/+/86541对于#23373。
它将有助于垃圾回收器(GC)测试与最新版本的binutils、glibc、内核等的集成(在Fedora中,最新版本通常比Debian更新得更快)。
作为Fedora的GC维护者,我愿意帮助维护它,调查并修复构建失败的问题。
你能建议我可以做些什么来帮助实现这个目标吗?
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)
1cklez4t3#
抱歉回复时间较长。
我认为两者都有好处。对于容器,我认为应该使用fedora:rawhide和fedora:latest来测试不稳定的rawhide和最新的稳定版本。Rawhide更像是非阻塞的烟雾测试(它可能会时不时地出现问题/过时)。
在快速查看GCE和脚本后,它似乎不支持常规的AWS或openstack图像格式,对吗?(Fedora Cloud图像是为这些格式生产的。)是否有关于需要GCE和Go CI运行的内容的总结(这比反向工程脚本要容易得多)?
gg0vcinb4#
@bradfitz ping
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(为了选择一个有点任意的镜像):
如果您能指出Fedora云映像执行cloud-init操作以及执行上述操作的cloud-init yaml,那可能就足够了。
6l7fqoea6#
感谢bradfitz。Fedora云镜像可以从
https://download.fedoraproject.org/pub/fedora/linux/releases/29/Cloud/x86_64/images/
获取,还有Fedora-Cloud-Base-29-1.2.x86_64.qcow2
和Fedora-Cloud-Base-29-1.2.x86_64.raw.xz
镜像以及两个vagrant盒子。我会根据上述提到的镜像进行一些cloud init文件的修改。并尝试找出是否有通用的方法来获取最新的镜像。v440hwme7#
https://golang.org/cl/175999提到了这个问题:
env/linux-x86-fedora: add Fedora builder