9361cd4495
Fully manual pipeline (no triggers): build/test → publish → generate idempotent EF migration SQL (archived as artifact) → apply to Azure SQL via sqlcmd → ZIP deploy to App Service → smoke test. Includes jenkins/Dockerfile (adds .NET 8 SDK, Azure CLI, mssql-tools18, dotnet-ef 8.0.11 to jenkins/jenkins:lts) and .config/dotnet-tools.json tool manifest. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
51 lines
2.8 KiB
Docker
51 lines
2.8 KiB
Docker
# Custom Jenkins image for Powder Coating Logix production deployments.
|
|
# Adds: .NET 8 SDK, Azure CLI, sqlcmd (mssql-tools18), dotnet-ef global tool.
|
|
#
|
|
# Build: docker build -t pcl-jenkins ./jenkins
|
|
# Run: docker run -d -p 8080:8080 -p 50000:50000 \
|
|
# -v jenkins_home:/var/jenkins_home \
|
|
# --name pcl-jenkins pcl-jenkins
|
|
|
|
FROM jenkins/jenkins:lts
|
|
|
|
USER root
|
|
|
|
# ── Base utilities ────────────────────────────────────────────────────────────
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
wget curl gnupg2 apt-transport-https lsb-release zip unzip ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# ── .NET 8 SDK ────────────────────────────────────────────────────────────────
|
|
RUN wget -q https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb \
|
|
-O /tmp/ms-prod.deb \
|
|
&& dpkg -i /tmp/ms-prod.deb \
|
|
&& rm /tmp/ms-prod.deb \
|
|
&& apt-get update \
|
|
&& apt-get install -y --no-install-recommends dotnet-sdk-8.0 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# ── Azure CLI ─────────────────────────────────────────────────────────────────
|
|
RUN curl -sL https://aka.ms/InstallAzureCLIDeb | bash \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# ── mssql-tools18 (sqlcmd) ───────────────────────────────────────────────────
|
|
RUN curl -fsSL https://packages.microsoft.com/keys/microsoft.asc \
|
|
| gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg \
|
|
&& echo "deb [signed-by=/usr/share/keyrings/microsoft-prod.gpg] \
|
|
https://packages.microsoft.com/debian/12/prod bookworm main" \
|
|
> /etc/apt/sources.list.d/mssql-release.list \
|
|
&& apt-get update \
|
|
&& ACCEPT_EULA=Y apt-get install -y --no-install-recommends \
|
|
mssql-tools18 unixodbc-dev \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
ENV PATH="$PATH:/opt/mssql-tools18/bin"
|
|
|
|
# ── dotnet-ef global tool ─────────────────────────────────────────────────────
|
|
# Installed into /root/.dotnet/tools (not JENKINS_HOME, which is a volume mount
|
|
# and would be wiped on first run). A symlink exposes it system-wide.
|
|
RUN DOTNET_CLI_HOME=/root dotnet tool install --global dotnet-ef --version 8.0.11 \
|
|
&& ln -s /root/.dotnet/tools/dotnet-ef /usr/local/bin/dotnet-ef
|
|
|
|
USER jenkins
|