Files
ETPlot/.gitlab-ci.yml
T
2025-09-08 15:49:09 +02:00

66 lines
1.5 KiB
YAML

# GitLab CI/CD Pipeline for Gallery Generator
# Builds Apptainer container and runs tests inside it
stages:
- build
- test
variables:
CONTAINER_IMAGE: "gallery-generator.sif"
APPTAINER_CACHE_DIR: "$CI_PROJECT_DIR/.apptainer-cache"
# Cache to speed up builds
cache:
key: "$CI_COMMIT_REF_SLUG"
paths:
- .apptainer-cache/
# Build the Apptainer container
build:container:
stage: build
tags:
- apptainer
script:
- echo "Building Apptainer container..."
- apptainer --version
- apptainer build --fakeroot $CONTAINER_IMAGE Singularity.def
- ls -lh $CONTAINER_IMAGE
artifacts:
paths:
- $CONTAINER_IMAGE
expire_in: 1 hour
# Run tests inside the container
test:pytest:
stage: test
tags:
- apptainer
dependencies:
- build:container
script:
- echo "Running pytest inside container..."
- apptainer exec $CONTAINER_IMAGE pytest /src/tests/ -v
artifacts:
when: always
# Run tests with coverage
test:coverage:
stage: test
tags:
- apptainer
dependencies:
- build:container
script:
- echo "Running coverage analysis inside container..."
- apptainer exec $CONTAINER_IMAGE pytest /src/tests/ --cov=/src --cov-report=xml --cov-report=term
- apptainer exec $CONTAINER_IMAGE cat /src/coverage.xml > coverage.xml || echo "No coverage.xml found"
coverage: '/TOTAL.*\s+(\d+%)$/'
artifacts:
reports:
coverage_report:
coverage_format: cobertura
path: coverage.xml
paths:
- coverage.xml
expire_in: 30 days