doc/en_US.ISO8859-1/articles/freebsd-releng/releng-mirrors.xml
Glen Barber 11d03aeff3 Fix an incorrect path.
Sponsored by:	The FreeBSD Foundation
2017-09-14 20:04:12 +00:00

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">&dollar;{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">&dollar;{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>