11d03aeff3
Sponsored by: The FreeBSD Foundation
114 lines
4.6 KiB
XML
114 lines
4.6 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!--
|
|
The FreeBSD Documentation Project
|
|
|
|
$FreeBSD$
|
|
-->
|
|
<sect1 xml:id="releng-mirrors">
|
|
<title>Publishing &os; Installation Media to Project Mirrors</title>
|
|
|
|
<para>This section describes the procedure to publish &os;
|
|
development snapshots and releases to the Project mirrors.</para>
|
|
|
|
<sect2 xml:id="releng-mirrors-staging">
|
|
<title>Staging &os; Installation Media Images</title>
|
|
|
|
<para>Staging &os; snapshots and releases is a two part
|
|
process:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Creating the directory structure to match the hierarchy
|
|
on <systemitem>ftp-master</systemitem></para>
|
|
|
|
<para>If <literal>EVERYTHINGISFINE</literal> is defined in the
|
|
build configuration files, <filename>main.conf</filename> in
|
|
the case of the build scripts referenced above, this happens
|
|
automatically in the &man.chroot.8; after the build is
|
|
complete, creating the directory structure in <filename
|
|
class="directory">${DESTDIR}/R/ftp-stage</filename>
|
|
with a path structure matching what is expected on
|
|
<systemitem>ftp-master</systemitem>. This is equivalent to
|
|
running the following in the &man.chroot.8; directly:</para>
|
|
|
|
<screen>&prompt.root; <userinput>make -C /usr/src/release -f Makefile.mirrors EVERYTHINGISFINE=1 ftp-stage</userinput></screen>
|
|
|
|
<para>After each architecture is built,
|
|
<filename>thermite.sh</filename> will
|
|
<application>rsync</application> the <filename
|
|
class="directory">${DESTDIR}/R/ftp-stage</filename>
|
|
from the build &man.chroot.8; to <filename
|
|
class="directory">/snap/ftp/snapshots</filename> or
|
|
<filename class="directory">/snap/ftp/releases</filename> on
|
|
the build host, respectively.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Copying the files to a staging directory on
|
|
<systemitem>ftp-master</systemitem> before moving the files
|
|
into <filename class="directory">pub/</filename> to begin
|
|
propagation to the Project mirrors</para>
|
|
|
|
<para>Once all builds have finished, <filename
|
|
class="directory">/snap/ftp/snapshots</filename>, or
|
|
<filename class="directory">/snap/ftp/releases</filename>
|
|
for a release, is polled by
|
|
<systemitem>ftp-master</systemitem> using
|
|
<application>rsync</application> to <filename
|
|
class="directory">/archive/tmp/snapshots</filename> or
|
|
<filename
|
|
class="directory">/archive/tmp/releases</filename>,
|
|
respectively.</para>
|
|
|
|
<note>
|
|
<para>On <systemitem>ftp-master</systemitem> in the &os;
|
|
Project infrastructure, this step requires
|
|
<literal>root</literal> level access, as this step must
|
|
be executed as the <literal>archive</literal> user.</para>
|
|
</note>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="releng-mirrors-publishing">
|
|
<title>Publishing &os; Installation Media</title>
|
|
|
|
<para>Once the images are staged in <filename
|
|
class="directory">/archive/tmp/</filename>, they are ready to
|
|
be made public by putting them in <filename
|
|
class="directory">/archive/pub/FreeBSD</filename>. In order
|
|
to reduce propagation time, &man.pax.1; is used to create hard
|
|
links from <filename class="directory">/archive/tmp</filename>
|
|
to <filename
|
|
class="directory">/archive/pub/FreeBSD</filename>.</para>
|
|
|
|
<note>
|
|
<para>In order for this to be effective, both <filename
|
|
class="directory">/archive/tmp</filename> and <filename
|
|
class="directory">/archive/pub</filename> must reside on the
|
|
same logical filesystem.</para>
|
|
</note>
|
|
|
|
<para>There is a caveat, however, where
|
|
<application>rsync</application> must be used after &man.pax.1;
|
|
in order to correct the symbolic links in <filename
|
|
class="directory">pub/FreeBSD/<replaceable>snapshots</replaceable>/ISO-IMAGES</filename>
|
|
which &man.pax.1; will replace with a hard link, increasing the
|
|
propagation time.</para>
|
|
|
|
<note>
|
|
<para>As with the staging steps, this requires
|
|
<literal>root</literal> level access, as this step must be
|
|
executed as the <literal>archive</literal> user.</para>
|
|
</note>
|
|
|
|
<para>As the <literal>archive</literal> user:</para>
|
|
|
|
<screen>&prompt.user; <userinput>cd /archive/tmp/<replaceable>snapshots</replaceable></userinput>
|
|
&prompt.user; <userinput>pax -r -w -l . /archive/pub/FreeBSD/<replaceable>snapshots</replaceable></userinput>
|
|
&prompt.user; <userinput>/usr/local/bin/rsync -avH /archive/tmp/<replaceable>snapshots</replaceable>/* /archive/pub/FreeBSD/<replaceable>snapshots</replaceable>/</userinput></screen>
|
|
|
|
<para>Replace <replaceable>snapshots</replaceable> with
|
|
<replaceable>releases</replaceable> as appropriate.</para>
|
|
</sect2>
|
|
</sect1>
|