\section{Consideraciones y curiosidades}

\begin{frame}
\frametitle{\textbf{Triggers: webhooks vs polling}}
\begin{columns}[T]
    \begin{column}{0.48\linewidth}
        \textbf{Webhooks}
        \begin{itemize}
            \item El repositorio "avisa" a Jenkins.
            \item R\'apido y eficiente.
            \item El repo le envía toda la información a Jenkins (autor, commit, rama, etc.)
            \item Eso tiene pinta de ser difícil... Jenkins tiene plugins para prácticamente cualquier cosa.
        \end{itemize}
    \end{column}
    \begin{column}{0.48\linewidth}
        \textbf{Polling}
        \begin{itemize}
            \item Jenkins pregunta cada X tiempo.
            \item Absurdamente simple.
            \item Si abres una PR no es inmediato, debes esperar al polling.
        \end{itemize}
    \end{column}
\end{columns}
\end{frame}

\begin{frame}
\frametitle{\textbf{Rollback con im\'agenes etiquetadas}}
\begin{itemize}
    \item En CD generamos tags con \texttt{APP\_VERSION = 1.0.\$BUILD\_NUMBER}.
    \item Si el deploy rompe algo, puedes volver atr\'as:
    \begin{itemize}
        \item desplegar \texttt{BACKEND\_TAG=1.0.41 FRONTEND\_TAG=1.0.41} (ejemplo)
        \item \texttt{docker compose up -d}
    \end{itemize}
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{\textbf{Jenkins REST API: ver CI/CD sin entrar al UI}}
\begin{itemize}
    \item Jenkins expone una API JSON por job/build.
    \item En este repo, el backend consulta builds recientes y expone en el frontend las últimas 5 builds del CD.
    \item Ideas de uso:
    \begin{itemize}
        \item dashboards del estado de las builds.
        \item alertas.
    \end{itemize}
\end{itemize}
\end{frame}
