  Semi-random processes involve an adaptive decision-maker, whose goal is to
achieve some predetermined objective in an online randomized environment. They
have algorithmic implications in various areas of computer science, as well as
connections to biological processes involving decision making. In this paper,
we consider a recently proposed semi-random graph process, described as
follows: we start with an empty graph on $n$ vertices, and in each round, the
decision-maker, called Builder, receives a uniformly random vertex $v$, and
must immediately (in an online manner) choose another vertex $u$, adding the
edge $\{u,v\}$ to the graph. Builder's end goal is to make the constructed
graph satisfy some predetermined monotone graph property.
  We consider the property of containing a spanning graph $H$ as a subgraph. It
was asked by N. Alon whether for any bounded-degree $H$, Builder can construct
a copy of $H$ w.h.p. in $O(n)$ rounds. We answer this question positively in a
strong sense, showing that any graph with maximum degree $\Delta$ can be
constructed w.h.p. in $(3\Delta/2 + o(\Delta)) n$ rounds. This is tight (even
for the offline case) up to a multiplicative factor of $3 + o_{\Delta}(1)$.
Furthermore, for the special case where $H$ is a spanning forest of maximum
degree $\Delta$, we show that $H$ can be constructed w.h.p. in $O(n \log
\Delta)$ rounds. This is tight up to a multiplicative constant, even for the
offline setting. Finally, we show a separation between adaptive and
non-adaptive strategies, proving a lower bound of $\Omega(n\sqrt{\log n})$ on
the number of rounds necessary to eliminate all isolated vertices w.h.p. using
a non-adaptive strategy. This bound is tight, and in fact there are
non-adaptive strategies for constructing a Hamilton cycle or a $K_r$-factor,
which are successful w.h.p. within $O(n\sqrt{\log n})$ rounds.
