Loading .gitlab-ci.yml +55 −38 Original line number Diff line number Diff line Loading @@ -6,64 +6,81 @@ variables: REGISTRY: $CI_REGISTRY IMAGE: $CI_REGISTRY_IMAGE before_script: # before_script: # Log in to GitLab registry for docker builds - echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER $CI_REGISTRY --password-stdin # - echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER $CI_REGISTRY --password-stdin after_script: - docker logout $CI_REGISTRY # after_script: # - docker logout $CI_REGISTRY # -------------------- # Docker builds # -------------------- .build-template: build:base: stage: build tags: - docker-build variables: TARGET: base VARIANT: base script: - VERSION="${CI_COMMIT_TAG#v}" - docker build --build-arg PSEUDO_VERSION=$VERSION --target $TARGET -t $IMAGE:$VARIANT -t $IMAGE:${VERSION}-${VARIANT} . - echo $VERSION $VARIANT $IMAGE - echo docker build --build-arg PSEUDO_VERSION=$VERSION --target $TARGET -t $IMAGE:$VARIANT -t $IMAGE:${VERSION}-${VARIANT} . - echo docker push $IMAGE:$VARIANT - echo docker push $IMAGE:${VERSION}-${VARIANT} rules: - if: '$CI_COMMIT_TAG' # only run when a tag is pushed build:website: extends: .build-template variables: TARGET: website VARIANT: website build:ts: extends: .build-template variables: TARGET: ts VARIANT: ts # -------------------- # Docker builds # -------------------- # .build-template: # stage: build # tags: # - docker-build # script: # - VERSION="${CI_COMMIT_TAG#v}" # - docker build --build-arg PSEUDO_VERSION=$VERSION --target $TARGET -t $IMAGE:$VARIANT -t $IMAGE:${VERSION}-${VARIANT} . # - echo docker push $IMAGE:$VARIANT # - echo docker push $IMAGE:${VERSION}-${VARIANT} # rules: # - if: '$CI_COMMIT_TAG' # only run when a tag is pushed build:check: extends: .build-template variables: TARGET: check VARIANT: check # build:website: # extends: .build-template # variables: # TARGET: website # VARIANT: website build:all: extends: .build-template variables: TARGET: all VARIANT: all # build:ts: # extends: .build-template # variables: # TARGET: ts # VARIANT: ts # build:check: # extends: .build-template # variables: # TARGET: check # VARIANT: check # build:all: # extends: .build-template # variables: # TARGET: all # VARIANT: all # -------------------- # Publish to PyPI # -------------------- publish:pypi: stage: release image: python:3.13-slim before_script: - pip install --no-cache-dir uv script: - uv publish --token $TWINE_PASSWORD rules: - if: '$CI_COMMIT_TAG' # only run when a tag is pushed # publish:pypi: # stage: release # image: python:3.13-slim # before_script: # - pip install --no-cache-dir uv # script: # - uv publish --token $TWINE_PASSWORD # rules: # - if: '$CI_COMMIT_TAG' # only run when a tag is pushed dockerfile +14 −10 Original line number Diff line number Diff line Loading @@ -16,31 +16,35 @@ WORKDIR /app COPY pyproject.toml uv.lock .python-version ./ COPY src/ src/ RUN export SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE=${PSEUDO_VERSION} && \ uv pip install --system -e . ENV SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE=${PSEUDO_VERSION} RUN echo $SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE RUN python -m pip show setuptools-scm && python -m setuptools_scm || true RUN uv pip install --system -e . RUN python -c "import setuptools_scm; print('setuptools-scm', setuptools_scm.__version__)" # ---- Website ---- FROM base AS website RUN export SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE=${PSEUDO_VERSION} && \ uv pip install --system -e .[website] ENV SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE=${PSEUDO_VERSION} RUN uv pip install --system -e .[website] ENTRYPOINT ["saref-dev", "website"] # ---- TS ---- FROM base AS ts RUN export SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE=${PSEUDO_VERSION} && \ uv pip install --system -e .[ts] ENV SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE=${PSEUDO_VERSION} RUN uv pip install --system -e .[ts] ENTRYPOINT ["saref-dev", "ts"] # ---- Check ---- FROM base AS check # Install Java 21 RUN apt-get update && apt-get install -y openjdk-21-jre-headless && rm -rf /var/lib/apt/lists/* RUN export SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE=${PSEUDO_VERSION} && \ uv pip install --system -e .[check] ENV SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE=${PSEUDO_VERSION} RUN uv pip install --system -e .[check] ENTRYPOINT ["saref-dev", "check"] # ---- All ---- FROM check AS all RUN export SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE=${PSEUDO_VERSION} && \ uv pip install --system -e .[website,ts] ENV SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE=${PSEUDO_VERSION} RUN uv pip install --system -e .[website,ts] ENTRYPOINT ["saref-dev"] No newline at end of file uv.lock +0 −1 Original line number Diff line number Diff line Loading @@ -442,7 +442,6 @@ wheels = [ [[package]] name = "saref-pypeline" version = "0.1" source = { editable = "." } dependencies = [ { name = "beautifulsoup4" }, Loading Loading
.gitlab-ci.yml +55 −38 Original line number Diff line number Diff line Loading @@ -6,64 +6,81 @@ variables: REGISTRY: $CI_REGISTRY IMAGE: $CI_REGISTRY_IMAGE before_script: # before_script: # Log in to GitLab registry for docker builds - echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER $CI_REGISTRY --password-stdin # - echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER $CI_REGISTRY --password-stdin after_script: - docker logout $CI_REGISTRY # after_script: # - docker logout $CI_REGISTRY # -------------------- # Docker builds # -------------------- .build-template: build:base: stage: build tags: - docker-build variables: TARGET: base VARIANT: base script: - VERSION="${CI_COMMIT_TAG#v}" - docker build --build-arg PSEUDO_VERSION=$VERSION --target $TARGET -t $IMAGE:$VARIANT -t $IMAGE:${VERSION}-${VARIANT} . - echo $VERSION $VARIANT $IMAGE - echo docker build --build-arg PSEUDO_VERSION=$VERSION --target $TARGET -t $IMAGE:$VARIANT -t $IMAGE:${VERSION}-${VARIANT} . - echo docker push $IMAGE:$VARIANT - echo docker push $IMAGE:${VERSION}-${VARIANT} rules: - if: '$CI_COMMIT_TAG' # only run when a tag is pushed build:website: extends: .build-template variables: TARGET: website VARIANT: website build:ts: extends: .build-template variables: TARGET: ts VARIANT: ts # -------------------- # Docker builds # -------------------- # .build-template: # stage: build # tags: # - docker-build # script: # - VERSION="${CI_COMMIT_TAG#v}" # - docker build --build-arg PSEUDO_VERSION=$VERSION --target $TARGET -t $IMAGE:$VARIANT -t $IMAGE:${VERSION}-${VARIANT} . # - echo docker push $IMAGE:$VARIANT # - echo docker push $IMAGE:${VERSION}-${VARIANT} # rules: # - if: '$CI_COMMIT_TAG' # only run when a tag is pushed build:check: extends: .build-template variables: TARGET: check VARIANT: check # build:website: # extends: .build-template # variables: # TARGET: website # VARIANT: website build:all: extends: .build-template variables: TARGET: all VARIANT: all # build:ts: # extends: .build-template # variables: # TARGET: ts # VARIANT: ts # build:check: # extends: .build-template # variables: # TARGET: check # VARIANT: check # build:all: # extends: .build-template # variables: # TARGET: all # VARIANT: all # -------------------- # Publish to PyPI # -------------------- publish:pypi: stage: release image: python:3.13-slim before_script: - pip install --no-cache-dir uv script: - uv publish --token $TWINE_PASSWORD rules: - if: '$CI_COMMIT_TAG' # only run when a tag is pushed # publish:pypi: # stage: release # image: python:3.13-slim # before_script: # - pip install --no-cache-dir uv # script: # - uv publish --token $TWINE_PASSWORD # rules: # - if: '$CI_COMMIT_TAG' # only run when a tag is pushed
dockerfile +14 −10 Original line number Diff line number Diff line Loading @@ -16,31 +16,35 @@ WORKDIR /app COPY pyproject.toml uv.lock .python-version ./ COPY src/ src/ RUN export SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE=${PSEUDO_VERSION} && \ uv pip install --system -e . ENV SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE=${PSEUDO_VERSION} RUN echo $SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE RUN python -m pip show setuptools-scm && python -m setuptools_scm || true RUN uv pip install --system -e . RUN python -c "import setuptools_scm; print('setuptools-scm', setuptools_scm.__version__)" # ---- Website ---- FROM base AS website RUN export SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE=${PSEUDO_VERSION} && \ uv pip install --system -e .[website] ENV SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE=${PSEUDO_VERSION} RUN uv pip install --system -e .[website] ENTRYPOINT ["saref-dev", "website"] # ---- TS ---- FROM base AS ts RUN export SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE=${PSEUDO_VERSION} && \ uv pip install --system -e .[ts] ENV SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE=${PSEUDO_VERSION} RUN uv pip install --system -e .[ts] ENTRYPOINT ["saref-dev", "ts"] # ---- Check ---- FROM base AS check # Install Java 21 RUN apt-get update && apt-get install -y openjdk-21-jre-headless && rm -rf /var/lib/apt/lists/* RUN export SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE=${PSEUDO_VERSION} && \ uv pip install --system -e .[check] ENV SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE=${PSEUDO_VERSION} RUN uv pip install --system -e .[check] ENTRYPOINT ["saref-dev", "check"] # ---- All ---- FROM check AS all RUN export SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE=${PSEUDO_VERSION} && \ uv pip install --system -e .[website,ts] ENV SETUPTOOLS_SCM_PRETEND_VERSION_FOR_SAREF_PYPELINE=${PSEUDO_VERSION} RUN uv pip install --system -e .[website,ts] ENTRYPOINT ["saref-dev"] No newline at end of file
uv.lock +0 −1 Original line number Diff line number Diff line Loading @@ -442,7 +442,6 @@ wheels = [ [[package]] name = "saref-pypeline" version = "0.1" source = { editable = "." } dependencies = [ { name = "beautifulsoup4" }, Loading