Files
brackets/.gitlab-ci.yml
T

70 lines
1.7 KiB
YAML

stages:
- Test Stage
- Build Stage
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_TAG
- if: $CI_COMMIT_BRANCH
"Python Tests":
stage: Test Stage
image: python:3.14-alpine
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
cache:
key:
files:
- backend/requirements.txt
paths:
- .cache/pip
script:
- echo "Running tests on the Python Backend..."
- cd backend
- pip install -r requirements.txt
- pytest
"React Tests":
stage: Test Stage
image: node:alpine
variables:
npm_config_cache: "$CI_PROJECT_DIR/.npm-cache"
cache:
key:
files:
- frontend/package-lock.json
paths:
- .npm-cache
- frontend/node_modules
script:
- cd frontend
- npm ci --prefer-offline
- npm test -- run --exclude "**/*.live.test.ts"
"Build Backend Image":
stage: Build Stage
image: docker:24.0.5
rules:
- if: $CI_COMMIT_TAG
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script:
- cd backend
- docker build -t $CI_REGISTRY_IMAGE/backend:$CI_COMMIT_TAG -t $CI_REGISTRY_IMAGE/backend:latest .
- docker push $CI_REGISTRY_IMAGE/backend:$CI_COMMIT_TAG
- docker push $CI_REGISTRY_IMAGE/backend:latest
"Build Frontend Image":
stage: Build Stage
image: docker:24.0.5
rules:
- if: $CI_COMMIT_TAG
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script:
- cd frontend
- docker build -t $CI_REGISTRY_IMAGE/frontend:$CI_COMMIT_TAG -t $CI_REGISTRY_IMAGE/frontend:latest .
- docker push $CI_REGISTRY_IMAGE/frontend:$CI_COMMIT_TAG
- docker push $CI_REGISTRY_IMAGE/frontend:latest