From 0f46b575755d7eabd9c2b9623debd7498e4884d4 Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Thu, 22 Jan 2026 14:30:53 -0300 Subject: [PATCH] ci: bake deps into images --- Dockerfile | 5 +---- Dockerfile.base | 9 +++++++++ Dockerfile.ci | 6 ++++++ Jenkinsfile | 19 ++++--------------- 4 files changed, 20 insertions(+), 19 deletions(-) create mode 100644 Dockerfile.base create mode 100644 Dockerfile.ci diff --git a/Dockerfile b/Dockerfile index 98dd53e..c392415 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,10 @@ -FROM python:3.12-slim +FROM registry.bstein.dev/bstein/ariadne-base:py312 ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 WORKDIR /app -COPY requirements.txt /app/requirements.txt -RUN pip install --no-cache-dir -r /app/requirements.txt - COPY ariadne /app/ariadne EXPOSE 8080 diff --git a/Dockerfile.base b/Dockerfile.base new file mode 100644 index 0000000..175c16c --- /dev/null +++ b/Dockerfile.base @@ -0,0 +1,9 @@ +FROM python:3.12-slim + +ENV PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 + +WORKDIR /app + +COPY requirements.txt /app/requirements.txt +RUN pip install --no-cache-dir -r /app/requirements.txt diff --git a/Dockerfile.ci b/Dockerfile.ci new file mode 100644 index 0000000..904fe86 --- /dev/null +++ b/Dockerfile.ci @@ -0,0 +1,6 @@ +FROM registry.bstein.dev/bstein/ariadne-base:py312 + +WORKDIR /app + +COPY requirements-dev.txt /app/requirements-dev.txt +RUN pip install --no-cache-dir -r /app/requirements-dev.txt diff --git a/Jenkinsfile b/Jenkinsfile index 422c758..8be690d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -13,6 +13,8 @@ spec: nodeSelector: kubernetes.io/arch: arm64 node-role.kubernetes.io/worker: "true" + imagePullSecrets: + - name: harbor-bstein-robot containers: - name: dind image: docker:27-dind @@ -47,7 +49,7 @@ spec: - name: harbor-config mountPath: /docker-config - name: tester - image: python:3.12-slim + image: registry.bstein.dev/bstein/ariadne-ci:py312 command: ["cat"] tty: true volumeMounts: @@ -99,7 +101,6 @@ spec: container('tester') { sh(script: ''' set -euo pipefail -python -m pip install --no-cache-dir -r requirements.txt -r requirements-dev.txt mkdir -p build python -m ruff check ariadne --select C90,PLR python -m slipcover \ @@ -137,14 +138,9 @@ PY container('builder') { sh ''' set -euo pipefail - apk add --no-cache bash git jq mkdir -p /root/.docker cp /docker-config/config.json /root/.docker/config.json echo "Docker config: ${DOCKER_CONFIG:-unset} HOME=${HOME:-unset}" - REGISTRY_HOST="registry.bstein.dev" - USERNAME=$(jq -r ".auths[\\"${REGISTRY_HOST}\\"].username" /root/.docker/config.json) - PASSWORD=$(jq -r ".auths[\\"${REGISTRY_HOST}\\"].password" /root/.docker/config.json) - echo "${PASSWORD}" | docker login "${REGISTRY_HOST}" -u "${USERNAME}" --password-stdin ''' } } @@ -156,14 +152,7 @@ PY script { sh ''' set -euo pipefail - if git describe --tags --exact-match >/dev/null 2>&1; then - SEMVER="$(git describe --tags --exact-match)" - else - SEMVER="0.1.0-${BUILD_NUMBER}" - fi - if ! echo "$SEMVER" | grep -Eq '^v?[0-9]+[.][0-9]+[.][0-9]+([-.][0-9A-Za-z]+)?$'; then - SEMVER="0.1.0-${BUILD_NUMBER}" - fi + SEMVER="0.1.0-${BUILD_NUMBER}" echo "SEMVER=${SEMVER}" > build.env ''' def props = readProperties file: 'build.env'